From 73983e5d355f46b64ac5087398e229c1f33d6911 Mon Sep 17 00:00:00 2001 From: ma91n Date: Tue, 24 Dec 2024 04:09:53 +0000 Subject: [PATCH] deploy: 06cdadb772166481b25b9365ff4bcaffdf4ffdbf --- .nojekyll | 0 404.html | 23 + assets/app.BCWCbnje.js | 189 ++ ...ranch_strategy_develop.drawio.BB9doEUP.png | Bin 0 -> 15914 bytes ...ranch_strategy_feature.drawio.Dx3_5kFX.png | Bin 0 -> 15756 bytes ...branch_strategy_hotfix.drawio.RF4mmQSP.png | Bin 0 -> 24731 bytes ...strategy_multi_develop.drawio.BUj3y2B6.png | Bin 0 -> 52039 bytes ...strategy_multi_version.drawio.BALCIJus.png | Bin 0 -> 28850 bytes ...ranch_strategy_release.drawio.DosnswvU.png | Bin 0 -> 25346 bytes ..._release_multi_develop.drawio.D7tvE9S0.png | Bin 0 -> 48674 bytes .../branch_strategy_topic.drawio._OMQxJxK.png | Bin 0 -> 24613 bytes .../chunks/@localSearchIndexroot.GM261gjZ.js | 1 + assets/chunks/VPLocalSearchBox.Bb--4sHY.js | 8 + assets/chunks/arc.D0VzCNCr.js | 1 + .../architectureDiagram-UYN6MBPD.Cmkezhge.js | 36 + assets/chunks/basePickBy.B1urSlEm.js | 1 + assets/chunks/baseUniq.CLqXXsun.js | 1 + .../chunks/blockDiagram-ZHA2E4KO.C5lWm1Ia.js | 121 + assets/chunks/buttons.esm.DK2fWHEW.js | 5 + assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js | 10 + assets/chunks/channel.Yhn_4yNH.js | 1 + assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js | 1 + assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js | 220 ++ assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js | 1 + assets/chunks/chunk-KFBOBJHC.B571SeHl.js | 1 + assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js | 164 ++ assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js | 1 + .../chunks/classDiagram-LNE6IOMH.h79GeJ25.js | 1 + .../classDiagram-v2-MQ7JQ4JX.h79GeJ25.js | 1 + assets/chunks/clone.BdpAoxvF.js | 1 + assets/chunks/cytoscape.esm.FpOb6hff.js | 16 + assets/chunks/dagre-4EVJKHTY.oyYM-B3a.js | 4 + assets/chunks/diagram-QW4FP2JN.CZvzQOj-.js | 24 + assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js | 51 + .../chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js | 160 + assets/chunks/framework.BDUoXecB.js | 18 + .../chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js | 257 ++ assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js | 127 + .../gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js | 65 + assets/chunks/graph.DlH8fBwT.js | 1 + assets/chunks/index.CRBiAhYs.js | 1 + .../chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js | 2 + assets/chunks/init.Gi6I4Gst.js | 1 + .../journeyDiagram-G5WM74LC.DAXNNvc-.js | 139 + .../kanban-definition-QRCXZQQD.OUxfabEb.js | 88 + assets/chunks/katex.cqFQqex1.js | 261 ++ assets/chunks/layout.BFk54v6v.js | 1 + assets/chunks/linear.D-_N5yV4.js | 1 + .../mindmap-definition-GWI6TPTV.Cdwx1lSN.js | 95 + assets/chunks/ordinal.BYWQX77i.js | 1 + assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js | 30 + .../quadrantDiagram-OS5C2QUG.D9uzsfCB.js | 7 + .../requirementDiagram-MIRIMTAZ.B2DK176o.js | 52 + .../chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js | 8 + .../sequenceDiagram-G6AWOVSC.ChVfeMQD.js | 122 + .../chunks/stateDiagram-MAYHULR4.2fsE_yAm.js | 1 + .../stateDiagram-v2-4JROLMXI.DqYwz9GF.js | 1 + assets/chunks/theme.DQlX5-hY.js | 2 + .../timeline-definition-U7ZMHBDA.BZt45Hpp.js | 61 + .../chunks/virtual_mermaid-config.DDnGl6nM.js | 1 + .../xychartDiagram-6QU3TZC5.D_s22l7S.js | 7 + assets/create_new_tag.vcx7NIW6.png | Bin 0 -> 41188 bytes assets/create_new_tag_title.DvuteGpB.png | Bin 0 -> 29845 bytes ...15\350\246\217\347\264\204.md.BGKIHPyQ.js" | 176 ++ ...0\246\217\347\264\204.md.BGKIHPyQ.lean.js" | 176 ++ ...uments_forAWSResource_index.md.BSBOfObX.js | 1 + ...s_forAWSResource_index.md.BSBOfObX.lean.js | 1 + ...Branch_git_branch_standards.md.DB7kqx_N.js | 86 + ...h_git_branch_standards.md.DB7kqx_N.lean.js | 86 + ...ocuments_forGitBranch_index.md.D29RzrnG.js | 1 + ...nts_forGitBranch_index.md.D29RzrnG.lean.js | 1 + ...60\350\246\217\347\264\204.md.BwEbWD0S.js" | 761 +++++ ...0\246\217\347\264\204.md.BwEbWD0S.lean.js" | 761 +++++ ...246\217\347\264\204_for_11.md.CtnIBNB8.js" | 492 ++++ ...17\347\264\204_for_11.md.CtnIBNB8.lean.js" | 492 ++++ ...\246\217\347\264\204_for_8.md.CNbXdYCI.js" | 479 +++ ...217\347\264\204_for_8.md.CNbXdYCI.lean.js" | 479 +++ assets/documents_forJava_index.md.BLl0-jdn.js | 1 + ...ocuments_forJava_index.md.BLl0-jdn.lean.js | 1 + ...73\351\235\242_UIM01_index.md.CkNMWidb.js" | 1 + ...1\235\242_UIM01_index.md.CkNMWidb.lean.js" | 1 + ...73\351\235\242_UIM02_index.md.9UdZUB06.js" | 1 + ...1\235\242_UIM02_index.md.9UdZUB06.lean.js" | 1 + ...73\351\235\242_UIM03_index.md.CGpQSTSf.js" | 1 + ...1\235\242_UIM03_index.md.CGpQSTSf.lean.js" | 1 + ...73\351\235\242_UIM04_index.md.Dz300Y5z.js" | 1 + ...1\235\242_UIM04_index.md.Dz300Y5z.lean.js" | 1 + ...73\351\235\242_UIS01_index.md.BClx-h5K.js" | 1 + ...1\235\242_UIS01_index.md.BClx-h5K.lean.js" | 1 + ...73\351\235\242_UIS02_index.md.CsBAI1kJ.js" | 1 + ...1\235\242_UIS02_index.md.CsBAI1kJ.lean.js" | 1 + ...73\351\235\242_UIS03_index.md.H2UeALcL.js" | 1 + ...1\235\242_UIS03_index.md.H2UeALcL.lean.js" | 1 + ...73\351\235\242_UIS04_index.md.CRtGDRJQ.js" | 1 + ...1\235\242_UIS04_index.md.CRtGDRJQ.lean.js" | 1 + ...\224\273\351\235\242_index.md.CGJLJLQP.js" | 1 + ...273\351\235\242_index.md.CGJLJLQP.lean.js" | 1 + ...artner_docs_02_WebAPI_index.md.D3BLQ8oq.js | 1 + ...r_docs_02_WebAPI_index.md.D3BLQ8oq.lean.js | 1 + ...\203\274\343\202\277_index.md.C-2zAbuT.js" | 1 + ...274\343\202\277_index.md.C-2zAbuT.lean.js" | 1 + ..._muscle_partner_docs_README.md.DSJLw6x7.js | 6 + ...le_partner_docs_README.md.DSJLw6x7.lean.js | 6 + ...future_muscle_partner_index.md.D8-gl5sc.js | 5 + ...e_muscle_partner_index.md.D8-gl5sc.lean.js | 5 + ...documents_forMarkdown_index.md.BX5VlSyJ.js | 1 + ...ents_forMarkdown_index.md.BX5VlSyJ.lean.js | 1 + ...wn_markdown_design_document.md.C0X3FSHP.js | 280 ++ ...rkdown_design_document.md.C0X3FSHP.lean.js | 280 ++ ...APISpecification_API_Design.md.zqx7gHFS.js | 1 + ...ecification_API_Design.md.zqx7gHFS.lean.js | 1 + ...n_OpenAPI_Specification_2.0.md.DykEO7Il.js | 426 +++ ...nAPI_Specification_2.0.md.DykEO7Il.lean.js | 426 +++ ...OpenAPI_Specification_3.0.3.md.DkcvvhOI.js | 792 +++++ ...PI_Specification_3.0.3.md.DkcvvhOI.lean.js | 792 +++++ ...pecification_file_standards.md.w3u0kE1Z.js | 19 + ...ication_file_standards.md.w3u0kE1Z.lean.js | 19 + ...rOpenAPISpecification_index.md.B3zVLlz8.js | 1 + ...APISpecification_index.md.B3zVLlz8.lean.js | 1 + ...ISpecification_prerequisite.md.CKdKBsUx.js | 1 + ...ification_prerequisite.md.CKdKBsUx.lean.js | 1 + ...\274\210Oracle\357\274\211.md.DWD8TXZm.js" | 183 ++ ...210Oracle\357\274\211.md.DWD8TXZm.lean.js" | 183 ++ ...\210PostgreSQL\357\274\211.md.DViLWmpD.js" | 177 ++ ...ostgreSQL\357\274\211.md.DViLWmpD.lean.js" | 177 ++ assets/documents_forSQL_index.md.DrHFVFTy.js | 1 + ...documents_forSQL_index.md.DrHFVFTy.lean.js | 1 + .../documents_forSlack_index.md.VwsafwSe.js | 1 + ...cuments_forSlack_index.md.VwsafwSe.lean.js | 1 + ...lack_slack_usage_guidelines.md.CSqvs_Yo.js | 1 + ...slack_usage_guidelines.md.CSqvs_Yo.lean.js | 1 + ...uture_muscle_partner_abstract.CX2VLXG2.png | Bin 0 -> 9895 bytes assets/index.md.BPB33D2m.js | 1 + assets/index.md.BPB33D2m.lean.js | 1 + .../inter-italic-cyrillic-ext.r48I6akx.woff2 | Bin 0 -> 43112 bytes assets/inter-italic-cyrillic.By2_1cv3.woff2 | Bin 0 -> 31300 bytes assets/inter-italic-greek-ext.1u6EdAuj.woff2 | Bin 0 -> 17404 bytes assets/inter-italic-greek.DJ8dCoTZ.woff2 | Bin 0 -> 32564 bytes assets/inter-italic-latin-ext.CN1xVJS-.woff2 | Bin 0 -> 120840 bytes assets/inter-italic-latin.C2AdPX0b.woff2 | Bin 0 -> 74784 bytes assets/inter-italic-vietnamese.BSbpV94h.woff2 | Bin 0 -> 14884 bytes .../inter-roman-cyrillic-ext.BBPuwvHQ.woff2 | Bin 0 -> 40488 bytes assets/inter-roman-cyrillic.C5lxZ8CY.woff2 | Bin 0 -> 29164 bytes assets/inter-roman-greek-ext.CqjqNYQ-.woff2 | Bin 0 -> 16272 bytes assets/inter-roman-greek.BBVDIX6e.woff2 | Bin 0 -> 29920 bytes assets/inter-roman-latin-ext.4ZJIpNVo.woff2 | Bin 0 -> 110160 bytes assets/inter-roman-latin.Di8DUHzh.woff2 | Bin 0 -> 67792 bytes assets/inter-roman-vietnamese.BjW4sHH5.woff2 | Bin 0 -> 14072 bytes ...velop_to_feature_merge.drawio.Chi_3Oep.png | Bin 0 -> 48423 bytes ...elop_to_feature_rebase.drawio.Db0KPnu1.png | Bin 0 -> 63760 bytes ...o_develop_merge_commit.drawio.ClfglnSw.png | Bin 0 -> 121876 bytes ...velop_rebase_and_merge.drawio.C4YTK8Ke.png | Bin 0 -> 122093 bytes ...velop_squash_and_merge.drawio.DNfqg4i8.png | Bin 0 -> 122168 bytes ...quash_and_merge_gitlab.drawio.DUmvz-tJ.png | Bin 0 -> 23536 bytes assets/release_overtaking.drawio.DPjD4_z3.png | Bin 0 -> 125087 bytes ...ease_overtaking_hotfix.drawio.BcV3VqPO.png | Bin 0 -> 97947 bytes assets/style.DSWXnzrq.css | 1 + assets/vscode_git_branch1.l8tVcgzj.png | Bin 0 -> 307403 bytes assets/vscode_git_branch2.Cwy7x_5O.png | Bin 0 -> 293696 bytes assets/vscode_git_clone1.qDoYJxim.png | Bin 0 -> 143682 bytes assets/vscode_git_clone2.CEP9JvgJ.png | Bin 0 -> 153464 bytes assets/vscode_git_commit.BYQAFQn8.png | Bin 0 -> 311886 bytes assets/vscode_git_fetch1.DRikG15J.png | Bin 0 -> 321842 bytes assets/vscode_git_fetch2.DAVY-Tc0.png | Bin 0 -> 14648 bytes assets/vscode_git_graph1.B-QqvDRT.png | Bin 0 -> 129212 bytes assets/vscode_git_graph2.004hjEVr.png | Bin 0 -> 311669 bytes assets/vscode_git_push1.BlFN6oO1.png | Bin 0 -> 326961 bytes assets/vscode_git_push2.BhX_AasB.png | Bin 0 -> 323907 bytes assets/vscode_git_push3.DjxvPuCO.png | Bin 0 -> 314598 bytes assets/vscode_git_stage.BcG6O3Ku.png | Bin 0 -> 313144 bytes ...\345\220\215\350\246\217\347\264\204.html" | 228 ++ documents/forAWSResource/index.html | 52 + .../forGitBranch/git_branch_standards.html | 142 + documents/forGitBranch/index.html | 52 + ...\343\202\260\350\246\217\347\264\204.html" | 813 +++++ ...2\260\350\246\217\347\264\204_for_11.html" | 544 ++++ ...02\260\350\246\217\347\264\204_for_8.html" | 531 ++++ documents/forJava/index.html | 52 + .../UIM01/index.html" | 52 + .../UIM02/index.html" | 52 + .../UIM03/index.html" | 52 + .../UIM04/index.html" | 52 + .../UIS01/index.html" | 52 + .../UIS02/index.html" | 52 + .../UIS03/index.html" | 52 + .../UIS04/index.html" | 52 + .../01_\347\224\273\351\235\242/index.html" | 52 + .../docs/02_WebAPI/index.html | 52 + .../index.html" | 52 + .../future_muscle_partner/docs/README.html | 57 + .../future_muscle_partner/index.html | 56 + documents/forMarkdown/index.html | 52 + .../forMarkdown/markdown_design_document.html | 332 +++ .../forOpenAPISpecification/API_Design.html | 52 + .../OpenAPI_Specification_2.0.html | 478 +++ .../OpenAPI_Specification_3.0.3.html | 844 ++++++ .../file_standards.html | 70 + documents/forOpenAPISpecification/index.html | 52 + .../forOpenAPISpecification/prerequisite.html | 52 + ...64\204\357\274\210Oracle\357\274\211.html" | 235 ++ ...04\357\274\210PostgreSQL\357\274\211.html" | 229 ++ documents/forSQL/index.html | 52 + documents/forSlack/index.html | 52 + .../forSlack/slack_usage_guidelines.html | 53 + example-resources/erd.a5er | 429 +++ hashmap.json | 1 + images/JBee.png | Bin 0 -> 51488 bytes images/JBee100.png | Bin 0 -> 6522 bytes images/JBeeBlack.png | Bin 0 -> 19792 bytes images/background3.jpg | Bin 0 -> 349472 bytes images/logo-dark.svg | 33 + images/logo-system.svg | 39 + images/logo.svg | 33 + index.html | 52 + resources/.gitkeep | 0 ...\345\220\215\350\246\217\347\264\204.docx" | Bin 0 -> 41554 bytes ...\345\220\215\350\246\217\347\264\204.html" | 1468 +++++++++ ...\343\203\274\350\246\217\347\264\204.docx" | Bin 0 -> 3548705 bytes ...\343\203\274\350\246\217\347\264\204.html" | 1870 ++++++++++++ ...\343\202\260\350\246\217\347\264\204.docx" | Bin 0 -> 63590 bytes ...\343\202\260\350\246\217\347\264\204.html" | 2621 +++++++++++++++++ ...\343\203\210\350\246\217\347\264\204.docx" | Bin 0 -> 31486 bytes ...\343\203\210\350\246\217\347\264\204.html" | 843 ++++++ resources/OpenAPI_Specification_2.0.docx | Bin 0 -> 45932 bytes resources/OpenAPI_Specification_2.0.html | 1335 +++++++++ ...64\204\357\274\210Oracle\357\274\211.docx" | Bin 0 -> 34034 bytes ...64\204\357\274\210Oracle\357\274\211.html" | 935 ++++++ ...04\357\274\210PostgreSQL\357\274\211.docx" | Bin 0 -> 33771 bytes ...04\357\274\210PostgreSQL\357\274\211.html" | 920 ++++++ ...\343\203\251\343\202\244\343\203\263.docx" | Bin 0 -> 35033 bytes ...\343\203\251\343\202\244\343\203\263.html" | 772 +++++ vp-icons.css | 1 + 232 files changed, 27206 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/app.BCWCbnje.js create mode 100644 assets/branch_strategy_develop.drawio.BB9doEUP.png create mode 100644 assets/branch_strategy_feature.drawio.Dx3_5kFX.png create mode 100644 assets/branch_strategy_hotfix.drawio.RF4mmQSP.png create mode 100644 assets/branch_strategy_multi_develop.drawio.BUj3y2B6.png create mode 100644 assets/branch_strategy_multi_version.drawio.BALCIJus.png create mode 100644 assets/branch_strategy_release.drawio.DosnswvU.png create mode 100644 assets/branch_strategy_release_multi_develop.drawio.D7tvE9S0.png create mode 100644 assets/branch_strategy_topic.drawio._OMQxJxK.png create mode 100644 assets/chunks/@localSearchIndexroot.GM261gjZ.js create mode 100644 assets/chunks/VPLocalSearchBox.Bb--4sHY.js create mode 100644 assets/chunks/arc.D0VzCNCr.js create mode 100644 assets/chunks/architectureDiagram-UYN6MBPD.Cmkezhge.js create mode 100644 assets/chunks/basePickBy.B1urSlEm.js create mode 100644 assets/chunks/baseUniq.CLqXXsun.js create mode 100644 assets/chunks/blockDiagram-ZHA2E4KO.C5lWm1Ia.js create mode 100644 assets/chunks/buttons.esm.DK2fWHEW.js create mode 100644 assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js create mode 100644 assets/chunks/channel.Yhn_4yNH.js create mode 100644 assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js create mode 100644 assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js create mode 100644 assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js create mode 100644 assets/chunks/chunk-KFBOBJHC.B571SeHl.js create mode 100644 assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js create mode 100644 assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js create mode 100644 assets/chunks/classDiagram-LNE6IOMH.h79GeJ25.js create mode 100644 assets/chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js create mode 100644 assets/chunks/clone.BdpAoxvF.js create mode 100644 assets/chunks/cytoscape.esm.FpOb6hff.js create mode 100644 assets/chunks/dagre-4EVJKHTY.oyYM-B3a.js create mode 100644 assets/chunks/diagram-QW4FP2JN.CZvzQOj-.js create mode 100644 assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js create mode 100644 assets/chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js create mode 100644 assets/chunks/framework.BDUoXecB.js create mode 100644 assets/chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js create mode 100644 assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js create mode 100644 assets/chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js create mode 100644 assets/chunks/graph.DlH8fBwT.js create mode 100644 assets/chunks/index.CRBiAhYs.js create mode 100644 assets/chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js create mode 100644 assets/chunks/init.Gi6I4Gst.js create mode 100644 assets/chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js create mode 100644 assets/chunks/kanban-definition-QRCXZQQD.OUxfabEb.js create mode 100644 assets/chunks/katex.cqFQqex1.js create mode 100644 assets/chunks/layout.BFk54v6v.js create mode 100644 assets/chunks/linear.D-_N5yV4.js create mode 100644 assets/chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js create mode 100644 assets/chunks/ordinal.BYWQX77i.js create mode 100644 assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js create mode 100644 assets/chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js create mode 100644 assets/chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js create mode 100644 assets/chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js create mode 100644 assets/chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js create mode 100644 assets/chunks/stateDiagram-MAYHULR4.2fsE_yAm.js create mode 100644 assets/chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js create mode 100644 assets/chunks/theme.DQlX5-hY.js create mode 100644 assets/chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js create mode 100644 assets/chunks/virtual_mermaid-config.DDnGl6nM.js create mode 100644 assets/chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js create mode 100644 assets/create_new_tag.vcx7NIW6.png create mode 100644 assets/create_new_tag_title.DvuteGpB.png create mode 100644 "assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.js" create mode 100644 "assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.lean.js" create mode 100644 assets/documents_forAWSResource_index.md.BSBOfObX.js create mode 100644 assets/documents_forAWSResource_index.md.BSBOfObX.lean.js create mode 100644 assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.js create mode 100644 assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.lean.js create mode 100644 assets/documents_forGitBranch_index.md.D29RzrnG.js create mode 100644 assets/documents_forGitBranch_index.md.D29RzrnG.lean.js create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.js" create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.lean.js" create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.js" create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.lean.js" create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.js" create mode 100644 "assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.lean.js" create mode 100644 assets/documents_forJava_index.md.BLl0-jdn.js create mode 100644 assets/documents_forJava_index.md.BLl0-jdn.lean.js create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.lean.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.lean.js" create mode 100644 assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.js create mode 100644 assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.lean.js create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.js" create mode 100644 "assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.lean.js" create mode 100644 assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.js create mode 100644 assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.lean.js create mode 100644 assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.js create mode 100644 assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.lean.js create mode 100644 assets/documents_forMarkdown_index.md.BX5VlSyJ.js create mode 100644 assets/documents_forMarkdown_index.md.BX5VlSyJ.lean.js create mode 100644 assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.js create mode 100644 assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.lean.js create mode 100644 assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.js create mode 100644 assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.lean.js create mode 100644 assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.js create mode 100644 assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.lean.js create mode 100644 assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.js create mode 100644 assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.lean.js create mode 100644 assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.js create mode 100644 assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.lean.js create mode 100644 assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.js create mode 100644 assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.lean.js create mode 100644 assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.js create mode 100644 assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.lean.js create mode 100644 "assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.js" create mode 100644 "assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.lean.js" create mode 100644 "assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.js" create mode 100644 "assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.lean.js" create mode 100644 assets/documents_forSQL_index.md.DrHFVFTy.js create mode 100644 assets/documents_forSQL_index.md.DrHFVFTy.lean.js create mode 100644 assets/documents_forSlack_index.md.VwsafwSe.js create mode 100644 assets/documents_forSlack_index.md.VwsafwSe.lean.js create mode 100644 assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.js create mode 100644 assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.lean.js create mode 100644 assets/future_muscle_partner_abstract.CX2VLXG2.png create mode 100644 assets/index.md.BPB33D2m.js create mode 100644 assets/index.md.BPB33D2m.lean.js create mode 100644 assets/inter-italic-cyrillic-ext.r48I6akx.woff2 create mode 100644 assets/inter-italic-cyrillic.By2_1cv3.woff2 create mode 100644 assets/inter-italic-greek-ext.1u6EdAuj.woff2 create mode 100644 assets/inter-italic-greek.DJ8dCoTZ.woff2 create mode 100644 assets/inter-italic-latin-ext.CN1xVJS-.woff2 create mode 100644 assets/inter-italic-latin.C2AdPX0b.woff2 create mode 100644 assets/inter-italic-vietnamese.BSbpV94h.woff2 create mode 100644 assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 create mode 100644 assets/inter-roman-cyrillic.C5lxZ8CY.woff2 create mode 100644 assets/inter-roman-greek-ext.CqjqNYQ-.woff2 create mode 100644 assets/inter-roman-greek.BBVDIX6e.woff2 create mode 100644 assets/inter-roman-latin-ext.4ZJIpNVo.woff2 create mode 100644 assets/inter-roman-latin.Di8DUHzh.woff2 create mode 100644 assets/inter-roman-vietnamese.BjW4sHH5.woff2 create mode 100644 assets/merge_strategy_develop_to_feature_merge.drawio.Chi_3Oep.png create mode 100644 assets/merge_strategy_develop_to_feature_rebase.drawio.Db0KPnu1.png create mode 100644 assets/merge_strategy_feature_to_develop_merge_commit.drawio.ClfglnSw.png create mode 100644 assets/merge_strategy_feature_to_develop_rebase_and_merge.drawio.C4YTK8Ke.png create mode 100644 assets/merge_strategy_feature_to_develop_squash_and_merge.drawio.DNfqg4i8.png create mode 100644 assets/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.DUmvz-tJ.png create mode 100644 assets/release_overtaking.drawio.DPjD4_z3.png create mode 100644 assets/release_overtaking_hotfix.drawio.BcV3VqPO.png create mode 100644 assets/style.DSWXnzrq.css create mode 100644 assets/vscode_git_branch1.l8tVcgzj.png create mode 100644 assets/vscode_git_branch2.Cwy7x_5O.png create mode 100644 assets/vscode_git_clone1.qDoYJxim.png create mode 100644 assets/vscode_git_clone2.CEP9JvgJ.png create mode 100644 assets/vscode_git_commit.BYQAFQn8.png create mode 100644 assets/vscode_git_fetch1.DRikG15J.png create mode 100644 assets/vscode_git_fetch2.DAVY-Tc0.png create mode 100644 assets/vscode_git_graph1.B-QqvDRT.png create mode 100644 assets/vscode_git_graph2.004hjEVr.png create mode 100644 assets/vscode_git_push1.BlFN6oO1.png create mode 100644 assets/vscode_git_push2.BhX_AasB.png create mode 100644 assets/vscode_git_push3.DjxvPuCO.png create mode 100644 assets/vscode_git_stage.BcG6O3Ku.png create mode 100644 "documents/forAWSResource/AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.html" create mode 100644 documents/forAWSResource/index.html create mode 100644 documents/forGitBranch/git_branch_standards.html create mode 100644 documents/forGitBranch/index.html create mode 100644 "documents/forJava/Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.html" create mode 100644 "documents/forJava/Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.html" create mode 100644 "documents/forJava/Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.html" create mode 100644 documents/forJava/index.html create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIM01/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIM02/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIM03/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIM04/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIS01/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIS02/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIS03/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/UIS04/index.html" create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/01_\347\224\273\351\235\242/index.html" create mode 100644 documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.html create mode 100644 "documents/forMarkdown/future_muscle_partner/docs/03_\343\203\207\343\203\274\343\202\277/index.html" create mode 100644 documents/forMarkdown/future_muscle_partner/docs/README.html create mode 100644 documents/forMarkdown/future_muscle_partner/index.html create mode 100644 documents/forMarkdown/index.html create mode 100644 documents/forMarkdown/markdown_design_document.html create mode 100644 documents/forOpenAPISpecification/API_Design.html create mode 100644 documents/forOpenAPISpecification/OpenAPI_Specification_2.0.html create mode 100644 documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.html create mode 100644 documents/forOpenAPISpecification/file_standards.html create mode 100644 documents/forOpenAPISpecification/index.html create mode 100644 documents/forOpenAPISpecification/prerequisite.html create mode 100644 "documents/forSQL/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.html" create mode 100644 "documents/forSQL/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.html" create mode 100644 documents/forSQL/index.html create mode 100644 documents/forSlack/index.html create mode 100644 documents/forSlack/slack_usage_guidelines.html create mode 100644 example-resources/erd.a5er create mode 100644 hashmap.json create mode 100644 images/JBee.png create mode 100644 images/JBee100.png create mode 100644 images/JBeeBlack.png create mode 100644 images/background3.jpg create mode 100644 images/logo-dark.svg create mode 100644 images/logo-system.svg create mode 100644 images/logo.svg create mode 100644 index.html create mode 100644 resources/.gitkeep create mode 100644 "resources/AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.docx" create mode 100644 "resources/AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.html" create mode 100644 "resources/Git\343\203\226\343\203\251\343\203\263\343\203\201\343\203\225\343\203\255\343\203\274\350\246\217\347\264\204.docx" create mode 100644 "resources/Git\343\203\226\343\203\251\343\203\263\343\203\201\343\203\225\343\203\255\343\203\274\350\246\217\347\264\204.html" create mode 100644 "resources/Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.docx" create mode 100644 "resources/Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.html" create mode 100644 "resources/Markdown\350\250\255\350\250\210\343\203\211\343\202\255\343\203\245\343\203\241\343\203\263\343\203\210\350\246\217\347\264\204.docx" create mode 100644 "resources/Markdown\350\250\255\350\250\210\343\203\211\343\202\255\343\203\245\343\203\241\343\203\263\343\203\210\350\246\217\347\264\204.html" create mode 100644 resources/OpenAPI_Specification_2.0.docx create mode 100644 resources/OpenAPI_Specification_2.0.html create mode 100644 "resources/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.docx" create mode 100644 "resources/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.html" create mode 100644 "resources/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.docx" create mode 100644 "resources/SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.html" create mode 100644 "resources/Slack\345\210\251\347\224\250\343\202\254\343\202\244\343\203\211\343\203\251\343\202\244\343\203\263.docx" create mode 100644 "resources/Slack\345\210\251\347\224\250\343\202\254\343\202\244\343\203\211\343\203\251\343\202\244\343\203\263.html" create mode 100644 vp-icons.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..8649d1c7 --- /dev/null +++ b/404.html @@ -0,0 +1,23 @@ + + + + + + 404 | Future Enterprise Coding Standards + + + + + + + + + + + + +
+ + + + \ No newline at end of file diff --git a/assets/app.BCWCbnje.js b/assets/app.BCWCbnje.js new file mode 100644 index 00000000..6b99fdd7 --- /dev/null +++ b/assets/app.BCWCbnje.js @@ -0,0 +1,189 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/dagre-4EVJKHTY.oyYM-B3a.js","assets/chunks/graph.DlH8fBwT.js","assets/chunks/baseUniq.CLqXXsun.js","assets/chunks/layout.BFk54v6v.js","assets/chunks/basePickBy.B1urSlEm.js","assets/chunks/clone.BdpAoxvF.js","assets/chunks/framework.BDUoXecB.js","assets/chunks/theme.DQlX5-hY.js","assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js","assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js","assets/chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js","assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js","assets/chunks/channel.Yhn_4yNH.js","assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js","assets/chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js","assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js","assets/chunks/chunk-KFBOBJHC.B571SeHl.js","assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js","assets/chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js","assets/chunks/linear.D-_N5yV4.js","assets/chunks/init.Gi6I4Gst.js","assets/chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js","assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js","assets/chunks/arc.D0VzCNCr.js","assets/chunks/ordinal.BYWQX77i.js","assets/chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js","assets/chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js","assets/chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js","assets/chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js","assets/chunks/classDiagram-LNE6IOMH.h79GeJ25.js","assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js","assets/chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js","assets/chunks/stateDiagram-MAYHULR4.2fsE_yAm.js","assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js","assets/chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js","assets/chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js","assets/chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js","assets/chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js","assets/chunks/cytoscape.esm.FpOb6hff.js","assets/chunks/kanban-definition-QRCXZQQD.OUxfabEb.js","assets/chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js","assets/chunks/diagram-QW4FP2JN.CZvzQOj-.js","assets/chunks/blockDiagram-ZHA2E4KO.C5lWm1Ia.js","assets/chunks/architectureDiagram-UYN6MBPD.Cmkezhge.js"])))=>i.map(i=>d[i]); +var Bm=Object.defineProperty;var Ml=e=>{throw TypeError(e)};var Mm=(e,t,r)=>t in e?Bm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var dt=(e,t,r)=>Mm(e,typeof t!="symbol"?t+"":t,r),Em=(e,t,r)=>t.has(e)||Ml("Cannot "+r);var El=(e,t,r)=>t.has(e)?Ml("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r);var si=(e,t,r)=>(Em(e,t,"access private method"),r);import{V as ft,p as Fl,u as hh,aq as Fm,v as uh,x as $m,o as Dm,c as Rm,n as Om,R as ms,ar as Im,as as Pm,at as Nm,an as zm,au as qm,av as Wm,aw as Hm,ax as jm,ay as Um,ao as Ym,d as Gm,s as Vm,az as Xm,aA as Zm,aB as Km,a6 as Qm}from"./chunks/framework.BDUoXecB.js";import{R as Jm}from"./chunks/theme.DQlX5-hY.js";var t0=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var fh={exports:{}};(function(e,t){(function(r,i){e.exports=i()})(t0,function(){var r=1e3,i=6e4,n=36e5,a="millisecond",o="second",s="minute",l="hour",c="day",h="week",u="month",f="quarter",p="year",g="date",m="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,x=/\[([^\]]+)]|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,b={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(M){var L=["th","st","nd","rd"],S=M%100;return"["+M+(L[(S-20)%10]||L[S]||L[0])+"]"}},_=function(M,L,S){var F=String(M);return!F||F.length>=L?M:""+Array(L+1-F.length).join(S)+M},v={s:_,z:function(M){var L=-M.utcOffset(),S=Math.abs(L),F=Math.floor(S/60),T=S%60;return(L<=0?"+":"-")+_(F,2,"0")+":"+_(T,2,"0")},m:function M(L,S){if(L.date()1)return M(Y[0])}else{var J=L.name;E[J]=L,T=J}return!F&&T&&(k=T),T||!F&&k},R=function(M,L){if(O(M))return M.clone();var S=typeof L=="object"?L:{};return S.date=M,S.args=arguments,new q(S)},B=v;B.l=N,B.i=O,B.w=function(M,L){return R(M,{locale:L.$L,utc:L.$u,x:L.$x,$offset:L.$offset})};var q=function(){function M(S){this.$L=N(S.locale,null,!0),this.parse(S),this.$x=this.$x||S.x||{},this[A]=!0}var L=M.prototype;return L.parse=function(S){this.$d=function(F){var T=F.date,z=F.utc;if(T===null)return new Date(NaN);if(B.u(T))return new Date;if(T instanceof Date)return new Date(T);if(typeof T=="string"&&!/Z$/i.test(T)){var Y=T.match(y);if(Y){var J=Y[2]-1||0,pt=(Y[7]||"0").substring(0,3);return z?new Date(Date.UTC(Y[1],J,Y[3]||1,Y[4]||0,Y[5]||0,Y[6]||0,pt)):new Date(Y[1],J,Y[3]||1,Y[4]||0,Y[5]||0,Y[6]||0,pt)}}return new Date(T)}(S),this.init()},L.init=function(){var S=this.$d;this.$y=S.getFullYear(),this.$M=S.getMonth(),this.$D=S.getDate(),this.$W=S.getDay(),this.$H=S.getHours(),this.$m=S.getMinutes(),this.$s=S.getSeconds(),this.$ms=S.getMilliseconds()},L.$utils=function(){return B},L.isValid=function(){return this.$d.toString()!==m},L.isSame=function(S,F){var T=R(S);return this.startOf(F)<=T&&T<=this.endOf(F)},L.isAfter=function(S,F){return R(S)e>=255?255:e<0?0:e,g:e=>e>=255?255:e<0?0:e,b:e=>e>=255?255:e<0?0:e,h:e=>e%360,s:e=>e>=100?100:e<0?0:e,l:e=>e>=100?100:e<0?0:e,a:e=>e>=1?1:e<0?0:e},toLinear:e=>{const t=e/255;return e>.03928?Math.pow((t+.055)/1.055,2.4):t/12.92},hue2rgb:(e,t,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e),hsl2rgb:({h:e,s:t,l:r},i)=>{if(!t)return r*2.55;e/=360,t/=100,r/=100;const n=r<.5?r*(1+t):r+t-r*t,a=2*r-n;switch(i){case"r":return Cn.hue2rgb(a,n,e+1/3)*255;case"g":return Cn.hue2rgb(a,n,e)*255;case"b":return Cn.hue2rgb(a,n,e-1/3)*255}},rgb2hsl:({r:e,g:t,b:r},i)=>{e/=255,t/=255,r/=255;const n=Math.max(e,t,r),a=Math.min(e,t,r),o=(n+a)/2;if(i==="l")return o*100;if(n===a)return 0;const s=n-a,l=o>.5?s/(2-n-a):s/(n+a);if(i==="s")return l*100;switch(n){case e:return((t-r)/s+(tt>r?Math.min(t,Math.max(r,e)):Math.min(r,Math.max(t,e)),round:e=>Math.round(e*1e10)/1e10},a0={dec2hex:e=>{const t=Math.round(e).toString(16);return t.length>1?t:`0${t}`}},et={channel:Cn,lang:n0,unit:a0},Ne={};for(let e=0;e<=255;e++)Ne[e]=et.unit.dec2hex(e);const Et={ALL:0,RGB:1,HSL:2};class s0{constructor(){this.type=Et.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=Et.ALL}is(t){return this.type===t}}class o0{constructor(t,r){this.color=r,this.changed=!1,this.data=t,this.type=new s0}set(t,r){return this.color=r,this.changed=!1,this.data=t,this.type.type=Et.ALL,this}_ensureHSL(){const t=this.data,{h:r,s:i,l:n}=t;r===void 0&&(t.h=et.channel.rgb2hsl(t,"h")),i===void 0&&(t.s=et.channel.rgb2hsl(t,"s")),n===void 0&&(t.l=et.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r,g:i,b:n}=t;r===void 0&&(t.r=et.channel.hsl2rgb(t,"r")),i===void 0&&(t.g=et.channel.hsl2rgb(t,"g")),n===void 0&&(t.b=et.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,r=t.r;return!this.type.is(Et.HSL)&&r!==void 0?r:(this._ensureHSL(),et.channel.hsl2rgb(t,"r"))}get g(){const t=this.data,r=t.g;return!this.type.is(Et.HSL)&&r!==void 0?r:(this._ensureHSL(),et.channel.hsl2rgb(t,"g"))}get b(){const t=this.data,r=t.b;return!this.type.is(Et.HSL)&&r!==void 0?r:(this._ensureHSL(),et.channel.hsl2rgb(t,"b"))}get h(){const t=this.data,r=t.h;return!this.type.is(Et.RGB)&&r!==void 0?r:(this._ensureRGB(),et.channel.rgb2hsl(t,"h"))}get s(){const t=this.data,r=t.s;return!this.type.is(Et.RGB)&&r!==void 0?r:(this._ensureRGB(),et.channel.rgb2hsl(t,"s"))}get l(){const t=this.data,r=t.l;return!this.type.is(Et.RGB)&&r!==void 0?r:(this._ensureRGB(),et.channel.rgb2hsl(t,"l"))}get a(){return this.data.a}set r(t){this.type.set(Et.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(Et.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(Et.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(Et.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(Et.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(Et.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}const ga=new o0({r:0,g:0,b:0,a:0},"transparent"),Tr={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:e=>{if(e.charCodeAt(0)!==35)return;const t=e.match(Tr.re);if(!t)return;const r=t[1],i=parseInt(r,16),n=r.length,a=n%4===0,o=n>4,s=o?1:17,l=o?8:4,c=a?0:-1,h=o?255:15;return ga.set({r:(i>>l*(c+3)&h)*s,g:(i>>l*(c+2)&h)*s,b:(i>>l*(c+1)&h)*s,a:a?(i&h)*s/255:1},e)},stringify:e=>{const{r:t,g:r,b:i,a:n}=e;return n<1?`#${Ne[Math.round(t)]}${Ne[Math.round(r)]}${Ne[Math.round(i)]}${Ne[Math.round(n*255)]}`:`#${Ne[Math.round(t)]}${Ne[Math.round(r)]}${Ne[Math.round(i)]}`}},tr={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:e=>{const t=e.match(tr.hueRe);if(t){const[,r,i]=t;switch(i){case"grad":return et.channel.clamp.h(parseFloat(r)*.9);case"rad":return et.channel.clamp.h(parseFloat(r)*180/Math.PI);case"turn":return et.channel.clamp.h(parseFloat(r)*360)}}return et.channel.clamp.h(parseFloat(e))},parse:e=>{const t=e.charCodeAt(0);if(t!==104&&t!==72)return;const r=e.match(tr.re);if(!r)return;const[,i,n,a,o,s]=r;return ga.set({h:tr._hue2deg(i),s:et.channel.clamp.s(parseFloat(n)),l:et.channel.clamp.l(parseFloat(a)),a:o?et.channel.clamp.a(s?parseFloat(o)/100:parseFloat(o)):1},e)},stringify:e=>{const{h:t,s:r,l:i,a:n}=e;return n<1?`hsla(${et.lang.round(t)}, ${et.lang.round(r)}%, ${et.lang.round(i)}%, ${n})`:`hsl(${et.lang.round(t)}, ${et.lang.round(r)}%, ${et.lang.round(i)}%)`}},Ti={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:e=>{e=e.toLowerCase();const t=Ti.colors[e];if(t)return Tr.parse(t)},stringify:e=>{const t=Tr.stringify(e);for(const r in Ti.colors)if(Ti.colors[r]===t)return r}},bi={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:e=>{const t=e.charCodeAt(0);if(t!==114&&t!==82)return;const r=e.match(bi.re);if(!r)return;const[,i,n,a,o,s,l,c,h]=r;return ga.set({r:et.channel.clamp.r(n?parseFloat(i)*2.55:parseFloat(i)),g:et.channel.clamp.g(o?parseFloat(a)*2.55:parseFloat(a)),b:et.channel.clamp.b(l?parseFloat(s)*2.55:parseFloat(s)),a:c?et.channel.clamp.a(h?parseFloat(c)/100:parseFloat(c)):1},e)},stringify:e=>{const{r:t,g:r,b:i,a:n}=e;return n<1?`rgba(${et.lang.round(t)}, ${et.lang.round(r)}, ${et.lang.round(i)}, ${et.lang.round(n)})`:`rgb(${et.lang.round(t)}, ${et.lang.round(r)}, ${et.lang.round(i)})`}},be={format:{keyword:Ti,hex:Tr,rgb:bi,rgba:bi,hsl:tr,hsla:tr},parse:e=>{if(typeof e!="string")return e;const t=Tr.parse(e)||bi.parse(e)||tr.parse(e)||Ti.parse(e);if(t)return t;throw new Error(`Unsupported color format: "${e}"`)},stringify:e=>!e.changed&&e.color?e.color:e.type.is(Et.HSL)||e.data.r===void 0?tr.stringify(e):e.a<1||!Number.isInteger(e.r)||!Number.isInteger(e.g)||!Number.isInteger(e.b)?bi.stringify(e):Tr.stringify(e)},ph=(e,t)=>{const r=be.parse(e);for(const i in t)r[i]=et.channel.clamp[i](t[i]);return be.stringify(r)},Ai=(e,t,r=0,i=1)=>{if(typeof e!="number")return ph(e,{a:t});const n=ga.set({r:et.channel.clamp.r(e),g:et.channel.clamp.g(t),b:et.channel.clamp.b(r),a:et.channel.clamp.a(i)});return be.stringify(n)},l0=e=>{const{r:t,g:r,b:i}=be.parse(e),n=.2126*et.channel.toLinear(t)+.7152*et.channel.toLinear(r)+.0722*et.channel.toLinear(i);return et.lang.round(n)},c0=e=>l0(e)>=.5,Yi=e=>!c0(e),dh=(e,t,r)=>{const i=be.parse(e),n=i[t],a=et.channel.clamp[t](n+r);return n!==a&&(i[t]=a),be.stringify(i)},V=(e,t)=>dh(e,"l",t),Q=(e,t)=>dh(e,"l",-t),w=(e,t)=>{const r=be.parse(e),i={};for(const n in t)t[n]&&(i[n]=r[n]+t[n]);return ph(e,i)},h0=(e,t,r=50)=>{const{r:i,g:n,b:a,a:o}=be.parse(e),{r:s,g:l,b:c,a:h}=be.parse(t),u=r/100,f=u*2-1,p=o-h,m=((f*p===-1?f:(f+p)/(1+f*p))+1)/2,y=1-m,x=i*m+s*y,b=n*m+l*y,_=a*m+c*y,v=o*u+h*(1-u);return Ai(x,b,_,v)},P=(e,t=100)=>{const r=be.parse(e);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,h0(r,e,t)};/*! @license DOMPurify 3.2.3 | (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.3/LICENSE */const{entries:gh,setPrototypeOf:$l,isFrozen:u0,getPrototypeOf:f0,getOwnPropertyDescriptor:p0}=Object;let{freeze:zt,seal:ee,create:mh}=Object,{apply:ys,construct:xs}=typeof Reflect<"u"&&Reflect;zt||(zt=function(t){return t});ee||(ee=function(t){return t});ys||(ys=function(t,r,i){return t.apply(r,i)});xs||(xs=function(t,r){return new t(...r)});const hn=Xt(Array.prototype.forEach),Dl=Xt(Array.prototype.pop),oi=Xt(Array.prototype.push),wn=Xt(String.prototype.toLowerCase),Za=Xt(String.prototype.toString),Rl=Xt(String.prototype.match),li=Xt(String.prototype.replace),d0=Xt(String.prototype.indexOf),g0=Xt(String.prototype.trim),se=Xt(Object.prototype.hasOwnProperty),Ot=Xt(RegExp.prototype.test),ci=m0(TypeError);function Xt(e){return function(t){for(var r=arguments.length,i=new Array(r>1?r-1:0),n=1;n2&&arguments[2]!==void 0?arguments[2]:wn;$l&&$l(e,null);let i=t.length;for(;i--;){let n=t[i];if(typeof n=="string"){const a=r(n);a!==n&&(u0(t)||(t[i]=a),n=a)}e[n]=!0}return e}function y0(e){for(let t=0;t/gm),w0=ee(/\$\{[\w\W]*}/gm),v0=ee(/^data-[\-\w.\u00B7-\uFFFF]+$/),k0=ee(/^aria-[\-\w]+$/),yh=ee(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),S0=ee(/^(?:\w+script|data):/i),T0=ee(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),xh=ee(/^html$/i),A0=ee(/^[a-z][.\w]*(-[.\w]+)+$/i);var zl=Object.freeze({__proto__:null,ARIA_ATTR:k0,ATTR_WHITESPACE:T0,CUSTOM_ELEMENT:A0,DATA_ATTR:v0,DOCTYPE_NAME:xh,ERB_EXPR:C0,IS_ALLOWED_URI:yh,IS_SCRIPT_OR_DATA:S0,MUSTACHE_EXPR:_0,TMPLIT_EXPR:w0});const ui={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},L0=function(){return typeof window>"u"?null:window},B0=function(t,r){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null;const n="data-tt-policy-suffix";r&&r.hasAttribute(n)&&(i=r.getAttribute(n));const a="dompurify"+(i?"#"+i:"");try{return t.createPolicy(a,{createHTML(o){return o},createScriptURL(o){return o}})}catch{return console.warn("TrustedTypes policy "+a+" could not be created."),null}},ql=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function bh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:L0();const t=K=>bh(K);if(t.version="3.2.3",t.removed=[],!e||!e.document||e.document.nodeType!==ui.document)return t.isSupported=!1,t;let{document:r}=e;const i=r,n=i.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:l,NodeFilter:c,NamedNodeMap:h=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:u,DOMParser:f,trustedTypes:p}=e,g=l.prototype,m=hi(g,"cloneNode"),y=hi(g,"remove"),x=hi(g,"nextSibling"),b=hi(g,"childNodes"),_=hi(g,"parentNode");if(typeof o=="function"){const K=r.createElement("template");K.content&&K.content.ownerDocument&&(r=K.content.ownerDocument)}let v,k="";const{implementation:E,createNodeIterator:A,createDocumentFragment:O,getElementsByTagName:N}=r,{importNode:R}=i;let B=ql();t.isSupported=typeof gh=="function"&&typeof _=="function"&&E&&E.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:q,ERB_EXPR:I,TMPLIT_EXPR:M,DATA_ATTR:L,ARIA_ATTR:S,IS_SCRIPT_OR_DATA:F,ATTR_WHITESPACE:T,CUSTOM_ELEMENT:z}=zl;let{IS_ALLOWED_URI:Y}=zl,J=null;const pt=nt({},[...Ol,...Ka,...Qa,...Ja,...Il]);let at=null;const _t=nt({},[...Pl,...ts,...Nl,...un]);let st=Object.seal(mh(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}})),Kt=null,ie=null,Oe=!0,ne=!0,kt=!1,ae=!0,Qt=!1,Ie=!0,Ve=!1,Wa=!1,Ha=!1,yr=!1,rn=!1,nn=!1,fl=!0,pl=!1;const Cm="user-content-";let ja=!0,ii=!1,xr={},br=null;const dl=nt({},["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 gl=null;const ml=nt({},["audio","video","img","source","image","track"]);let Ua=null;const yl=nt({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),an="http://www.w3.org/1998/Math/MathML",sn="http://www.w3.org/2000/svg",ve="http://www.w3.org/1999/xhtml";let _r=ve,Ya=!1,Ga=null;const wm=nt({},[an,sn,ve],Za);let on=nt({},["mi","mo","mn","ms","mtext"]),ln=nt({},["annotation-xml"]);const vm=nt({},["title","style","font","a","script"]);let ni=null;const km=["application/xhtml+xml","text/html"],Sm="text/html";let wt=null,Cr=null;const Tm=r.createElement("form"),xl=function(C){return C instanceof RegExp||C instanceof Function},Va=function(){let C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Cr&&Cr===C)){if((!C||typeof C!="object")&&(C={}),C=Ze(C),ni=km.indexOf(C.PARSER_MEDIA_TYPE)===-1?Sm:C.PARSER_MEDIA_TYPE,wt=ni==="application/xhtml+xml"?Za:wn,J=se(C,"ALLOWED_TAGS")?nt({},C.ALLOWED_TAGS,wt):pt,at=se(C,"ALLOWED_ATTR")?nt({},C.ALLOWED_ATTR,wt):_t,Ga=se(C,"ALLOWED_NAMESPACES")?nt({},C.ALLOWED_NAMESPACES,Za):wm,Ua=se(C,"ADD_URI_SAFE_ATTR")?nt(Ze(yl),C.ADD_URI_SAFE_ATTR,wt):yl,gl=se(C,"ADD_DATA_URI_TAGS")?nt(Ze(ml),C.ADD_DATA_URI_TAGS,wt):ml,br=se(C,"FORBID_CONTENTS")?nt({},C.FORBID_CONTENTS,wt):dl,Kt=se(C,"FORBID_TAGS")?nt({},C.FORBID_TAGS,wt):{},ie=se(C,"FORBID_ATTR")?nt({},C.FORBID_ATTR,wt):{},xr=se(C,"USE_PROFILES")?C.USE_PROFILES:!1,Oe=C.ALLOW_ARIA_ATTR!==!1,ne=C.ALLOW_DATA_ATTR!==!1,kt=C.ALLOW_UNKNOWN_PROTOCOLS||!1,ae=C.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Qt=C.SAFE_FOR_TEMPLATES||!1,Ie=C.SAFE_FOR_XML!==!1,Ve=C.WHOLE_DOCUMENT||!1,yr=C.RETURN_DOM||!1,rn=C.RETURN_DOM_FRAGMENT||!1,nn=C.RETURN_TRUSTED_TYPE||!1,Ha=C.FORCE_BODY||!1,fl=C.SANITIZE_DOM!==!1,pl=C.SANITIZE_NAMED_PROPS||!1,ja=C.KEEP_CONTENT!==!1,ii=C.IN_PLACE||!1,Y=C.ALLOWED_URI_REGEXP||yh,_r=C.NAMESPACE||ve,on=C.MATHML_TEXT_INTEGRATION_POINTS||on,ln=C.HTML_INTEGRATION_POINTS||ln,st=C.CUSTOM_ELEMENT_HANDLING||{},C.CUSTOM_ELEMENT_HANDLING&&xl(C.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(st.tagNameCheck=C.CUSTOM_ELEMENT_HANDLING.tagNameCheck),C.CUSTOM_ELEMENT_HANDLING&&xl(C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(st.attributeNameCheck=C.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),C.CUSTOM_ELEMENT_HANDLING&&typeof C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(st.allowCustomizedBuiltInElements=C.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Qt&&(ne=!1),rn&&(yr=!0),xr&&(J=nt({},Il),at=[],xr.html===!0&&(nt(J,Ol),nt(at,Pl)),xr.svg===!0&&(nt(J,Ka),nt(at,ts),nt(at,un)),xr.svgFilters===!0&&(nt(J,Qa),nt(at,ts),nt(at,un)),xr.mathMl===!0&&(nt(J,Ja),nt(at,Nl),nt(at,un))),C.ADD_TAGS&&(J===pt&&(J=Ze(J)),nt(J,C.ADD_TAGS,wt)),C.ADD_ATTR&&(at===_t&&(at=Ze(at)),nt(at,C.ADD_ATTR,wt)),C.ADD_URI_SAFE_ATTR&&nt(Ua,C.ADD_URI_SAFE_ATTR,wt),C.FORBID_CONTENTS&&(br===dl&&(br=Ze(br)),nt(br,C.FORBID_CONTENTS,wt)),ja&&(J["#text"]=!0),Ve&&nt(J,["html","head","body"]),J.table&&(nt(J,["tbody"]),delete Kt.tbody),C.TRUSTED_TYPES_POLICY){if(typeof C.TRUSTED_TYPES_POLICY.createHTML!="function")throw ci('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof C.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw ci('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');v=C.TRUSTED_TYPES_POLICY,k=v.createHTML("")}else v===void 0&&(v=B0(p,n)),v!==null&&typeof k=="string"&&(k=v.createHTML(""));zt&&zt(C),Cr=C}},bl=nt({},[...Ka,...Qa,...x0]),_l=nt({},[...Ja,...b0]),Am=function(C){let D=_(C);(!D||!D.tagName)&&(D={namespaceURI:_r,tagName:"template"});const H=wn(C.tagName),mt=wn(D.tagName);return Ga[C.namespaceURI]?C.namespaceURI===sn?D.namespaceURI===ve?H==="svg":D.namespaceURI===an?H==="svg"&&(mt==="annotation-xml"||on[mt]):!!bl[H]:C.namespaceURI===an?D.namespaceURI===ve?H==="math":D.namespaceURI===sn?H==="math"&&ln[mt]:!!_l[H]:C.namespaceURI===ve?D.namespaceURI===sn&&!ln[mt]||D.namespaceURI===an&&!on[mt]?!1:!_l[H]&&(vm[H]||!bl[H]):!!(ni==="application/xhtml+xml"&&Ga[C.namespaceURI]):!1},fe=function(C){oi(t.removed,{element:C});try{_(C).removeChild(C)}catch{y(C)}},cn=function(C,D){try{oi(t.removed,{attribute:D.getAttributeNode(C),from:D})}catch{oi(t.removed,{attribute:null,from:D})}if(D.removeAttribute(C),C==="is")if(yr||rn)try{fe(D)}catch{}else try{D.setAttribute(C,"")}catch{}},Cl=function(C){let D=null,H=null;if(Ha)C=""+C;else{const St=Rl(C,/^[\r\n\t ]+/);H=St&&St[0]}ni==="application/xhtml+xml"&&_r===ve&&(C=''+C+"");const mt=v?v.createHTML(C):C;if(_r===ve)try{D=new f().parseFromString(mt,ni)}catch{}if(!D||!D.documentElement){D=E.createDocument(_r,"template",null);try{D.documentElement.innerHTML=Ya?k:mt}catch{}}const Mt=D.body||D.documentElement;return C&&H&&Mt.insertBefore(r.createTextNode(H),Mt.childNodes[0]||null),_r===ve?N.call(D,Ve?"html":"body")[0]:Ve?D.documentElement:Mt},wl=function(C){return A.call(C.ownerDocument||C,C,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Xa=function(C){return C instanceof u&&(typeof C.nodeName!="string"||typeof C.textContent!="string"||typeof C.removeChild!="function"||!(C.attributes instanceof h)||typeof C.removeAttribute!="function"||typeof C.setAttribute!="function"||typeof C.namespaceURI!="string"||typeof C.insertBefore!="function"||typeof C.hasChildNodes!="function")},vl=function(C){return typeof s=="function"&&C instanceof s};function ke(K,C,D){hn(K,H=>{H.call(t,C,D,Cr)})}const kl=function(C){let D=null;if(ke(B.beforeSanitizeElements,C,null),Xa(C))return fe(C),!0;const H=wt(C.nodeName);if(ke(B.uponSanitizeElement,C,{tagName:H,allowedTags:J}),C.hasChildNodes()&&!vl(C.firstElementChild)&&Ot(/<[/\w]/g,C.innerHTML)&&Ot(/<[/\w]/g,C.textContent)||C.nodeType===ui.progressingInstruction||Ie&&C.nodeType===ui.comment&&Ot(/<[/\w]/g,C.data))return fe(C),!0;if(!J[H]||Kt[H]){if(!Kt[H]&&Tl(H)&&(st.tagNameCheck instanceof RegExp&&Ot(st.tagNameCheck,H)||st.tagNameCheck instanceof Function&&st.tagNameCheck(H)))return!1;if(ja&&!br[H]){const mt=_(C)||C.parentNode,Mt=b(C)||C.childNodes;if(Mt&&mt){const St=Mt.length;for(let qt=St-1;qt>=0;--qt){const pe=m(Mt[qt],!0);pe.__removalCount=(C.__removalCount||0)+1,mt.insertBefore(pe,x(C))}}}return fe(C),!0}return C instanceof l&&!Am(C)||(H==="noscript"||H==="noembed"||H==="noframes")&&Ot(/<\/no(script|embed|frames)/i,C.innerHTML)?(fe(C),!0):(Qt&&C.nodeType===ui.text&&(D=C.textContent,hn([q,I,M],mt=>{D=li(D,mt," ")}),C.textContent!==D&&(oi(t.removed,{element:C.cloneNode()}),C.textContent=D)),ke(B.afterSanitizeElements,C,null),!1)},Sl=function(C,D,H){if(fl&&(D==="id"||D==="name")&&(H in r||H in Tm))return!1;if(!(ne&&!ie[D]&&Ot(L,D))){if(!(Oe&&Ot(S,D))){if(!at[D]||ie[D]){if(!(Tl(C)&&(st.tagNameCheck instanceof RegExp&&Ot(st.tagNameCheck,C)||st.tagNameCheck instanceof Function&&st.tagNameCheck(C))&&(st.attributeNameCheck instanceof RegExp&&Ot(st.attributeNameCheck,D)||st.attributeNameCheck instanceof Function&&st.attributeNameCheck(D))||D==="is"&&st.allowCustomizedBuiltInElements&&(st.tagNameCheck instanceof RegExp&&Ot(st.tagNameCheck,H)||st.tagNameCheck instanceof Function&&st.tagNameCheck(H))))return!1}else if(!Ua[D]){if(!Ot(Y,li(H,T,""))){if(!((D==="src"||D==="xlink:href"||D==="href")&&C!=="script"&&d0(H,"data:")===0&&gl[C])){if(!(kt&&!Ot(F,li(H,T,"")))){if(H)return!1}}}}}}return!0},Tl=function(C){return C!=="annotation-xml"&&Rl(C,z)},Al=function(C){ke(B.beforeSanitizeAttributes,C,null);const{attributes:D}=C;if(!D||Xa(C))return;const H={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:at,forceKeepAttr:void 0};let mt=D.length;for(;mt--;){const Mt=D[mt],{name:St,namespaceURI:qt,value:pe}=Mt,ai=wt(St);let Rt=St==="value"?pe:g0(pe);if(H.attrName=ai,H.attrValue=Rt,H.keepAttr=!0,H.forceKeepAttr=void 0,ke(B.uponSanitizeAttribute,C,H),Rt=H.attrValue,pl&&(ai==="id"||ai==="name")&&(cn(St,C),Rt=Cm+Rt),Ie&&Ot(/((--!?|])>)|<\/(style|title)/i,Rt)){cn(St,C);continue}if(H.forceKeepAttr||(cn(St,C),!H.keepAttr))continue;if(!ae&&Ot(/\/>/i,Rt)){cn(St,C);continue}Qt&&hn([q,I,M],Bl=>{Rt=li(Rt,Bl," ")});const Ll=wt(C.nodeName);if(Sl(Ll,ai,Rt)){if(v&&typeof p=="object"&&typeof p.getAttributeType=="function"&&!qt)switch(p.getAttributeType(Ll,ai)){case"TrustedHTML":{Rt=v.createHTML(Rt);break}case"TrustedScriptURL":{Rt=v.createScriptURL(Rt);break}}try{qt?C.setAttributeNS(qt,St,Rt):C.setAttribute(St,Rt),Xa(C)?fe(C):Dl(t.removed)}catch{}}}ke(B.afterSanitizeAttributes,C,null)},Lm=function K(C){let D=null;const H=wl(C);for(ke(B.beforeSanitizeShadowDOM,C,null);D=H.nextNode();)ke(B.uponSanitizeShadowNode,D,null),kl(D),Al(D),D.content instanceof a&&K(D.content);ke(B.afterSanitizeShadowDOM,C,null)};return t.sanitize=function(K){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},D=null,H=null,mt=null,Mt=null;if(Ya=!K,Ya&&(K=""),typeof K!="string"&&!vl(K))if(typeof K.toString=="function"){if(K=K.toString(),typeof K!="string")throw ci("dirty is not a string, aborting")}else throw ci("toString is not a function");if(!t.isSupported)return K;if(Wa||Va(C),t.removed=[],typeof K=="string"&&(ii=!1),ii){if(K.nodeName){const pe=wt(K.nodeName);if(!J[pe]||Kt[pe])throw ci("root node is forbidden and cannot be sanitized in-place")}}else if(K instanceof s)D=Cl(""),H=D.ownerDocument.importNode(K,!0),H.nodeType===ui.element&&H.nodeName==="BODY"||H.nodeName==="HTML"?D=H:D.appendChild(H);else{if(!yr&&!Qt&&!Ve&&K.indexOf("<")===-1)return v&&nn?v.createHTML(K):K;if(D=Cl(K),!D)return yr?null:nn?k:""}D&&Ha&&fe(D.firstChild);const St=wl(ii?K:D);for(;mt=St.nextNode();)kl(mt),Al(mt),mt.content instanceof a&&Lm(mt.content);if(ii)return K;if(yr){if(rn)for(Mt=O.call(D.ownerDocument);D.firstChild;)Mt.appendChild(D.firstChild);else Mt=D;return(at.shadowroot||at.shadowrootmode)&&(Mt=R.call(i,Mt,!0)),Mt}let qt=Ve?D.outerHTML:D.innerHTML;return Ve&&J["!doctype"]&&D.ownerDocument&&D.ownerDocument.doctype&&D.ownerDocument.doctype.name&&Ot(xh,D.ownerDocument.doctype.name)&&(qt=" +`+qt),Qt&&hn([q,I,M],pe=>{qt=li(qt,pe," ")}),v&&nn?v.createHTML(qt):qt},t.setConfig=function(){let K=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Va(K),Wa=!0},t.clearConfig=function(){Cr=null,Wa=!1},t.isValidAttribute=function(K,C,D){Cr||Va({});const H=wt(K),mt=wt(C);return Sl(H,mt,D)},t.addHook=function(K,C){typeof C=="function"&&oi(B[K],C)},t.removeHook=function(K){return Dl(B[K])},t.removeHooks=function(K){B[K]=[]},t.removeAllHooks=function(){B=ql()},t}var Ir=bh(),_h=Object.defineProperty,d=(e,t)=>_h(e,"name",{value:t,configurable:!0}),M0=(e,t)=>{for(var r in t)_h(e,r,{get:t[r],enumerable:!0})},Se={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},$={trace:d((...e)=>{},"trace"),debug:d((...e)=>{},"debug"),info:d((...e)=>{},"info"),warn:d((...e)=>{},"warn"),error:d((...e)=>{},"error"),fatal:d((...e)=>{},"fatal")},fo=d(function(e="fatal"){let t=Se.fatal;typeof e=="string"?e.toLowerCase()in Se&&(t=Se[e]):typeof e=="number"&&(t=e),$.trace=()=>{},$.debug=()=>{},$.info=()=>{},$.warn=()=>{},$.error=()=>{},$.fatal=()=>{},t<=Se.fatal&&($.fatal=console.error?console.error.bind(console,Jt("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Jt("FATAL"))),t<=Se.error&&($.error=console.error?console.error.bind(console,Jt("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Jt("ERROR"))),t<=Se.warn&&($.warn=console.warn?console.warn.bind(console,Jt("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Jt("WARN"))),t<=Se.info&&($.info=console.info?console.info.bind(console,Jt("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Jt("INFO"))),t<=Se.debug&&($.debug=console.debug?console.debug.bind(console,Jt("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Jt("DEBUG"))),t<=Se.trace&&($.trace=console.debug?console.debug.bind(console,Jt("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Jt("TRACE")))},"setLogLevel"),Jt=d(e=>`%c${i0().format("ss.SSS")} : ${e} : `,"format"),Ch=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,Li=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,E0=/\s*%%.*\n/gm,Br,wh=(Br=class extends Error{constructor(t){super(t),this.name="UnknownDiagramError"}},d(Br,"UnknownDiagramError"),Br),Pr={},po=d(function(e,t){e=e.replace(Ch,"").replace(Li,"").replace(E0,` +`);for(const[r,{detector:i}]of Object.entries(Pr))if(i(e,t))return r;throw new wh(`No diagram type detected matching given configuration for text: ${e}`)},"detectType"),vh=d((...e)=>{for(const{id:t,detector:r,loader:i}of e)kh(t,r,i)},"registerLazyLoadedDiagrams"),kh=d((e,t,r)=>{Pr[e]&&$.warn(`Detector with key ${e} already exists. Overwriting.`),Pr[e]={detector:t,loader:r},$.debug(`Detector with key ${e} added${r?" with loader":""}`)},"addDetector"),F0=d(e=>Pr[e].loader,"getDiagramLoader"),bs=d((e,t,{depth:r=2,clobber:i=!1}={})=>{const n={depth:r,clobber:i};return Array.isArray(t)&&!Array.isArray(e)?(t.forEach(a=>bs(e,a,n)),e):Array.isArray(t)&&Array.isArray(e)?(t.forEach(a=>{e.includes(a)||e.push(a)}),e):e===void 0||r<=0?e!=null&&typeof e=="object"&&typeof t=="object"?Object.assign(e,t):t:(t!==void 0&&typeof e=="object"&&typeof t=="object"&&Object.keys(t).forEach(a=>{typeof t[a]=="object"&&(e[a]===void 0||typeof e[a]=="object")?(e[a]===void 0&&(e[a]=Array.isArray(t[a])?[]:{}),e[a]=bs(e[a],t[a],{depth:r-1,clobber:i})):(i||typeof e[a]!="object"&&typeof t[a]!="object")&&(e[a]=t[a])}),e)},"assignWithDepth"),Lt=bs,ma="#ffffff",ya="#f2f2f2",It=d((e,t)=>t?w(e,{s:-40,l:10}):w(e,{s:-40,l:-10}),"mkBorder"),Mr,$0=(Mr=class{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(){var r,i,n,a,o,s,l,c,h,u,f;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||w(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||w(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||It(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||It(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||It(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||It(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||P(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||P(this.tertiaryColor),this.lineColor=this.lineColor||P(this.background),this.arrowheadColor=this.arrowheadColor||P(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?Q(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||Q(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||P(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||V(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.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.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||w(this.primaryColor,{h:30}),this.cScale4=this.cScale4||w(this.primaryColor,{h:60}),this.cScale5=this.cScale5||w(this.primaryColor,{h:90}),this.cScale6=this.cScale6||w(this.primaryColor,{h:120}),this.cScale7=this.cScale7||w(this.primaryColor,{h:150}),this.cScale8=this.cScale8||w(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||w(this.primaryColor,{h:270}),this.cScale10=this.cScale10||w(this.primaryColor,{h:300}),this.cScale11=this.cScale11||w(this.primaryColor,{h:330}),this.darkMode)for(let p=0;p{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},d(Mr,"Theme"),Mr),D0=d(e=>{const t=new $0;return t.calculate(e),t},"getThemeVariables"),Er,R0=(Er=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=V(this.primaryColor,16),this.tertiaryColor=w(this.primaryColor,{h:-160}),this.primaryBorderColor=P(this.background),this.secondaryBorderColor=It(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=It(this.tertiaryColor,this.darkMode),this.primaryTextColor=P(this.primaryColor),this.secondaryTextColor=P(this.secondaryColor),this.tertiaryTextColor=P(this.tertiaryColor),this.lineColor=P(this.background),this.textColor=P(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=V(P("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=Ai(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=Q("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Q(this.sectionBkgColor,10),this.taskBorderColor=Ai(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=Ai(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.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="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var t,r,i,n,a,o,s,l,c,h,u;this.secondBkg=V(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=V(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=V(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=w(this.primaryColor,{h:64}),this.fillType3=w(this.secondaryColor,{h:64}),this.fillType4=w(this.primaryColor,{h:-64}),this.fillType5=w(this.secondaryColor,{h:-64}),this.fillType6=w(this.primaryColor,{h:128}),this.fillType7=w(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||w(this.primaryColor,{h:30}),this.cScale4=this.cScale4||w(this.primaryColor,{h:60}),this.cScale5=this.cScale5||w(this.primaryColor,{h:90}),this.cScale6=this.cScale6||w(this.primaryColor,{h:120}),this.cScale7=this.cScale7||w(this.primaryColor,{h:150}),this.cScale8=this.cScale8||w(this.primaryColor,{h:210}),this.cScale9=this.cScale9||w(this.primaryColor,{h:270}),this.cScale10=this.cScale10||w(this.primaryColor,{h:300}),this.cScale11=this.cScale11||w(this.primaryColor,{h:330});for(let f=0;f{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},d(Er,"Theme"),Er),O0=d(e=>{const t=new R0;return t.calculate(e),t},"getThemeVariables"),Fr,I0=(Fr=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=w(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=w(this.primaryColor,{h:-160}),this.primaryBorderColor=It(this.primaryColor,this.darkMode),this.secondaryBorderColor=It(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=It(this.tertiaryColor,this.darkMode),this.primaryTextColor=P(this.primaryColor),this.secondaryTextColor=P(this.secondaryColor),this.tertiaryTextColor=P(this.tertiaryColor),this.lineColor=P(this.background),this.textColor=P(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.sectionBkgColor=Ai(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.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",this.updateColors()}updateColors(){var t,r,i,n,a,o,s,l,c,h,u;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||w(this.primaryColor,{h:30}),this.cScale4=this.cScale4||w(this.primaryColor,{h:60}),this.cScale5=this.cScale5||w(this.primaryColor,{h:90}),this.cScale6=this.cScale6||w(this.primaryColor,{h:120}),this.cScale7=this.cScale7||w(this.primaryColor,{h:150}),this.cScale8=this.cScale8||w(this.primaryColor,{h:210}),this.cScale9=this.cScale9||w(this.primaryColor,{h:270}),this.cScale10=this.cScale10||w(this.primaryColor,{h:300}),this.cScale11=this.cScale11||w(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Q(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Q(this.tertiaryColor,40);for(let f=0;f{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},d(Fr,"Theme"),Fr),P0=d(e=>{const t=new I0;return t.calculate(e),t},"getThemeVariables"),$r,N0=($r=class{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=V("#cde498",10),this.primaryBorderColor=It(this.primaryColor,this.darkMode),this.secondaryBorderColor=It(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=It(this.tertiaryColor,this.darkMode),this.primaryTextColor=P(this.primaryColor),this.secondaryTextColor=P(this.secondaryColor),this.tertiaryTextColor=P(this.primaryColor),this.lineColor=P(this.background),this.textColor=P(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.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(){var t,r,i,n,a,o,s,l,c,h,u;this.actorBorder=Q(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||w(this.primaryColor,{h:30}),this.cScale4=this.cScale4||w(this.primaryColor,{h:60}),this.cScale5=this.cScale5||w(this.primaryColor,{h:90}),this.cScale6=this.cScale6||w(this.primaryColor,{h:120}),this.cScale7=this.cScale7||w(this.primaryColor,{h:150}),this.cScale8=this.cScale8||w(this.primaryColor,{h:210}),this.cScale9=this.cScale9||w(this.primaryColor,{h:270}),this.cScale10=this.cScale10||w(this.primaryColor,{h:300}),this.cScale11=this.cScale11||w(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Q(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Q(this.tertiaryColor,40);for(let f=0;f{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},d($r,"Theme"),$r),z0=d(e=>{const t=new N0;return t.calculate(e),t},"getThemeVariables"),Dr,q0=(Dr=class{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=V(this.contrast,55),this.background="#ffffff",this.tertiaryColor=w(this.primaryColor,{h:-160}),this.primaryBorderColor=It(this.primaryColor,this.darkMode),this.secondaryBorderColor=It(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=It(this.tertiaryColor,this.darkMode),this.primaryTextColor=P(this.primaryColor),this.secondaryTextColor=P(this.secondaryColor),this.tertiaryTextColor=P(this.tertiaryColor),this.lineColor=P(this.background),this.textColor=P(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.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(){var t,r,i,n,a,o,s,l,c,h,u;this.secondBkg=V(this.contrast,55),this.border2=this.contrast,this.actorBorder=V(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 f=0;f{this[i]=t[i]}),this.updateColors(),r.forEach(i=>{this[i]=t[i]})}},d(Dr,"Theme"),Dr),W0=d(e=>{const t=new q0;return t.calculate(e),t},"getThemeVariables"),Be={base:{getThemeVariables:D0},dark:{getThemeVariables:O0},default:{getThemeVariables:P0},forest:{getThemeVariables:z0},neutral:{getThemeVariables:W0}},Pe={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},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,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"]},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,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,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},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},Sh={...Pe,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:Be.default.getThemeVariables(),sequence:{...Pe.sequence,messageFont:d(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:d(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:d(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...Pe.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Pe.c4,useWidth:void 0,personFont:d(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:d(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:d(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:d(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:d(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:d(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:d(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:d(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:d(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:d(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:d(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:d(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:d(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:d(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:d(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:d(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:d(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:d(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:d(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:d(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:d(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:d(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...Pe.pie,useWidth:984},xyChart:{...Pe.xyChart,useWidth:void 0},requirement:{...Pe.requirement,useWidth:void 0},packet:{...Pe.packet}},Th=d((e,t="")=>Object.keys(e).reduce((r,i)=>Array.isArray(e[i])?r:typeof e[i]=="object"&&e[i]!==null?[...r,t+i,...Th(e[i],"")]:[...r,t+i],[]),"keyify"),H0=new Set(Th(Sh,"")),Ah=Sh,Dn=d(e=>{if($.debug("sanitizeDirective called with",e),!(typeof e!="object"||e==null)){if(Array.isArray(e)){e.forEach(t=>Dn(t));return}for(const t of Object.keys(e)){if($.debug("Checking key",t),t.startsWith("__")||t.includes("proto")||t.includes("constr")||!H0.has(t)||e[t]==null){$.debug("sanitize deleting key: ",t),delete e[t];continue}if(typeof e[t]=="object"){$.debug("sanitizing object",t),Dn(e[t]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const i of r)t.includes(i)&&($.debug("sanitizing css option",t),e[t]=j0(e[t]))}if(e.themeVariables)for(const t of Object.keys(e.themeVariables)){const r=e.themeVariables[t];r!=null&&r.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(e.themeVariables[t]="")}$.debug("After sanitization",e)}},"sanitizeDirective"),j0=d(e=>{let t=0,r=0;for(const i of e){if(t{let r=Lt({},e),i={};for(const n of t)Eh(n),i=Lt(i,n);if(r=Lt(r,i),i.theme&&i.theme in Be){const n=Lt({},Lh),a=Lt(n.themeVariables||{},i.themeVariables);r.theme&&r.theme in Be&&(r.themeVariables=Be[r.theme].getThemeVariables(a))}return Bi=r,Fh(Bi),Bi},"updateCurrentConfig"),U0=d(e=>(Ht=Lt({},Nr),Ht=Lt(Ht,e),e.theme&&Be[e.theme]&&(Ht.themeVariables=Be[e.theme].getThemeVariables(e.themeVariables)),xa(Ht,zr),Ht),"setSiteConfig"),Y0=d(e=>{Lh=Lt({},e)},"saveConfigFromInitialize"),G0=d(e=>(Ht=Lt(Ht,e),xa(Ht,zr),Ht),"updateSiteConfig"),Bh=d(()=>Lt({},Ht),"getSiteConfig"),Mh=d(e=>(Fh(e),Lt(Bi,e),he()),"setConfig"),he=d(()=>Lt({},Bi),"getConfig"),Eh=d(e=>{e&&(["secure",...Ht.secure??[]].forEach(t=>{Object.hasOwn(e,t)&&($.debug(`Denied attempt to modify a secure key ${t}`,e[t]),delete e[t])}),Object.keys(e).forEach(t=>{t.startsWith("__")&&delete e[t]}),Object.keys(e).forEach(t=>{typeof e[t]=="string"&&(e[t].includes("<")||e[t].includes(">")||e[t].includes("url(data:"))&&delete e[t],typeof e[t]=="object"&&Eh(e[t])}))},"sanitize"),V0=d(e=>{var t;Dn(e),e.fontFamily&&!((t=e.themeVariables)!=null&&t.fontFamily)&&(e.themeVariables={...e.themeVariables,fontFamily:e.fontFamily}),zr.push(e),xa(Ht,zr)},"addDirective"),Rn=d((e=Ht)=>{zr=[],xa(e,zr)},"reset"),X0={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},Wl={},Z0=d(e=>{Wl[e]||($.warn(X0[e]),Wl[e]=!0)},"issueWarning"),Fh=d(e=>{e&&(e.lazyLoadedDiagrams||e.loadExternalDiagramsAtStartup)&&Z0("LAZY_LOAD_DEPRECATED")},"checkConfig"),Gi=//gi,K0=d(e=>e?Rh(e).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),Q0=(()=>{let e=!1;return()=>{e||($h(),e=!0)}})();function $h(){const e="data-temp-href-target";Ir.addHook("beforeSanitizeAttributes",t=>{t instanceof Element&&t.tagName==="A"&&t.hasAttribute("target")&&t.setAttribute(e,t.getAttribute("target")??"")}),Ir.addHook("afterSanitizeAttributes",t=>{t instanceof Element&&t.tagName==="A"&&t.hasAttribute(e)&&(t.setAttribute("target",t.getAttribute(e)??""),t.removeAttribute(e),t.getAttribute("target")==="_blank"&&t.setAttribute("rel","noopener"))})}d($h,"setupDompurifyHooks");var Dh=d(e=>(Q0(),Ir.sanitize(e)),"removeScript"),Hl=d((e,t)=>{var r;if(((r=t.flowchart)==null?void 0:r.htmlLabels)!==!1){const i=t.securityLevel;i==="antiscript"||i==="strict"?e=Dh(e):i!=="loose"&&(e=Rh(e),e=e.replace(//g,">"),e=e.replace(/=/g,"="),e=ry(e))}return e},"sanitizeMore"),or=d((e,t)=>e&&(t.dompurifyConfig?e=Ir.sanitize(Hl(e,t),t.dompurifyConfig).toString():e=Ir.sanitize(Hl(e,t),{FORBID_TAGS:["style"]}).toString(),e),"sanitizeText"),J0=d((e,t)=>typeof e=="string"?or(e,t):e.flat().map(r=>or(r,t)),"sanitizeTextOrArray"),ty=d(e=>Gi.test(e),"hasBreaks"),ey=d(e=>e.split(Gi),"splitBreaks"),ry=d(e=>e.replace(/#br#/g,"
"),"placeholderToBreak"),Rh=d(e=>e.replace(Gi,"#br#"),"breakToPlaceholder"),iy=d(e=>{let t="";return e&&(t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,t=t.replaceAll(/\(/g,"\\("),t=t.replaceAll(/\)/g,"\\)")),t},"getUrl"),Bt=d(e=>!(e===!1||["false","null","0"].includes(String(e).trim().toLowerCase())),"evaluate"),ny=d(function(...e){const t=e.filter(r=>!isNaN(r));return Math.max(...t)},"getMax"),ay=d(function(...e){const t=e.filter(r=>!isNaN(r));return Math.min(...t)},"getMin"),XL=d(function(e){const t=e.split(/(,)/),r=[];for(let i=0;i0&&i+1Math.max(0,e.split(t).length-1),"countOccurrence"),sy=d((e,t)=>{const r=_s(e,"~"),i=_s(t,"~");return r===1&&i===1},"shouldCombineSets"),oy=d(e=>{const t=_s(e,"~");let r=!1;if(t<=1)return e;t%2!==0&&e.startsWith("~")&&(e=e.substring(1),r=!0);const i=[...e];let n=i.indexOf("~"),a=i.lastIndexOf("~");for(;n!==-1&&a!==-1&&n!==a;)i[n]="<",i[a]=">",n=i.indexOf("~"),a=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")},"processSet"),jl=d(()=>window.MathMLElement!==void 0,"isMathMLSupported"),Cs=/\$\$(.*)\$\$/g,qr=d(e=>{var t;return(((t=e.match(Cs))==null?void 0:t.length)??0)>0},"hasKatex"),ZL=d(async(e,t)=>{e=await go(e,t);const r=document.createElement("div");r.innerHTML=e,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const i=document.querySelector("body");i==null||i.insertAdjacentElement("beforeend",r);const n={width:r.clientWidth,height:r.clientHeight};return r.remove(),n},"calculateMathMLDimensions"),go=d(async(e,t)=>{if(!qr(e))return e;if(!(jl()||t.legacyMathML||t.forceLegacyMathML))return e.replace(Cs,"MathML is unsupported in this environment.");const{default:r}=await ft(async()=>{const{default:n}=await import("./chunks/katex.cqFQqex1.js");return{default:n}},[]),i=t.forceLegacyMathML||!jl()&&t.legacyMathML?"htmlAndMathml":"mathml";return e.split(Gi).map(n=>qr(n)?`
${n}
`:`
${n}
`).join("").replace(Cs,(n,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:i}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),Xr={getRows:K0,sanitizeText:or,sanitizeTextOrArray:J0,hasBreaks:ty,splitBreaks:ey,lineBreakRegex:Gi,removeScript:Dh,getUrl:iy,evaluate:Bt,getMax:ny,getMin:ay},ly=d(function(e,t){for(let r of t)e.attr(r[0],r[1])},"d3Attrs"),cy=d(function(e,t,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${t}px;`)):(i.set("height",e),i.set("width",t)),i},"calculateSvgSizeAttrs"),Oh=d(function(e,t,r,i){const n=cy(t,r,i);ly(e,n)},"configureSvgSize"),hy=d(function(e,t,r,i){const n=t.node().getBBox(),a=n.width,o=n.height;$.info(`SVG bounds: ${a}x${o}`,n);let s=0,l=0;$.info(`Graph bounds: ${s}x${l}`,e),s=a+r*2,l=o+r*2,$.info(`Calculated bounds: ${s}x${l}`),Oh(t,l,s,i);const c=`${n.x-r} ${n.y-r} ${n.width+2*r} ${n.height+2*r}`;t.attr("viewBox",c)},"setupGraphViewbox"),vn={},uy=d((e,t,r)=>{let i="";return e in vn&&vn[e]?i=vn[e](r):$.warn(`No theme found for ${e}`),` & { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + fill: ${r.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${r.errorBkgColor}; + } + & .error-text { + fill: ${r.errorTextColor}; + stroke: ${r.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 1px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + & .edge-thickness-invisible { + stroke-width: 0; + fill: none; + } + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${r.lineColor}; + stroke: ${r.lineColor}; + } + & .marker.cross { + stroke: ${r.lineColor}; + } + + & svg { + font-family: ${r.fontFamily}; + font-size: ${r.fontSize}; + } + & p { + margin: 0 + } + + ${i} + + ${t} +`},"getStyles"),fy=d((e,t)=>{t!==void 0&&(vn[e]=t)},"addStylesForDiagram"),py=uy,Ih={};M0(Ih,{clear:()=>dy,getAccDescription:()=>xy,getAccTitle:()=>my,getDiagramTitle:()=>_y,setAccDescription:()=>yy,setAccTitle:()=>gy,setDiagramTitle:()=>by});var mo="",yo="",xo="",bo=d(e=>or(e,he()),"sanitizeText"),dy=d(()=>{mo="",xo="",yo=""},"clear"),gy=d(e=>{mo=bo(e).replace(/^\s+/g,"")},"setAccTitle"),my=d(()=>mo,"getAccTitle"),yy=d(e=>{xo=bo(e).replace(/\n\s+/g,` +`)},"setAccDescription"),xy=d(()=>xo,"getAccDescription"),by=d(e=>{yo=bo(e)},"setDiagramTitle"),_y=d(()=>yo,"getDiagramTitle"),Ul=$,Cy=fo,ct=he,KL=Mh,QL=Nr,Ph=d(e=>or(e,ct()),"sanitizeText"),wy=hy,vy=d(()=>Ih,"getCommonDb"),On={},In=d((e,t,r)=>{var i;On[e]&&Ul.warn(`Diagram with id ${e} already registered. Overwriting.`),On[e]=t,r&&kh(e,r),fy(e,t.styles),(i=t.injectUtils)==null||i.call(t,Ul,Cy,ct,Ph,wy,vy(),()=>{})},"registerDiagram"),ws=d(e=>{if(e in On)return On[e];throw new ky(e)},"getDiagram"),Rr,ky=(Rr=class extends Error{constructor(t){super(`Diagram ${t} not found.`)}},d(Rr,"DiagramNotFoundError"),Rr);function _o(e){return typeof e>"u"||e===null}d(_o,"isNothing");function Nh(e){return typeof e=="object"&&e!==null}d(Nh,"isObject");function zh(e){return Array.isArray(e)?e:_o(e)?[]:[e]}d(zh,"toArray");function qh(e,t){var r,i,n,a;if(t)for(a=Object.keys(t),r=0,i=a.length;rs&&(a=" ... ",t=i-s+a.length),r-i>s&&(o=" ...",r=i+s-o.length),{str:a+e.slice(t,r).replace(/\t/g,"→")+o,pos:i-t+a.length}}d(kn,"getLine");function Sn(e,t){return Ct.repeat(" ",t-e.length)+e}d(Sn,"padStart");function jh(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),typeof t.indent!="number"&&(t.indent=1),typeof t.linesBefore!="number"&&(t.linesBefore=3),typeof t.linesAfter!="number"&&(t.linesAfter=2);for(var r=/\r?\n|\r|\0/g,i=[0],n=[],a,o=-1;a=r.exec(e.buffer);)n.push(a.index),i.push(a.index+a[0].length),e.position<=a.index&&o<0&&(o=i.length-2);o<0&&(o=i.length-1);var s="",l,c,h=Math.min(e.line+t.linesAfter,n.length).toString().length,u=t.maxLength-(t.indent+h+3);for(l=1;l<=t.linesBefore&&!(o-l<0);l++)c=kn(e.buffer,i[o-l],n[o-l],e.position-(i[o]-i[o-l]),u),s=Ct.repeat(" ",t.indent)+Sn((e.line-l+1).toString(),h)+" | "+c.str+` +`+s;for(c=kn(e.buffer,i[o],n[o],e.position,u),s+=Ct.repeat(" ",t.indent)+Sn((e.line+1).toString(),h)+" | "+c.str+` +`,s+=Ct.repeat("-",t.indent+h+3+c.pos)+`^ +`,l=1;l<=t.linesAfter&&!(o+l>=n.length);l++)c=kn(e.buffer,i[o+l],n[o+l],e.position-(i[o]-i[o+l]),u),s+=Ct.repeat(" ",t.indent)+Sn((e.line+l+1).toString(),h)+" | "+c.str+` +`;return s.replace(/\n$/,"")}d(jh,"makeSnippet");var Ey=jh,Fy=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],$y=["scalar","sequence","mapping"];function Uh(e){var t={};return e!==null&&Object.keys(e).forEach(function(r){e[r].forEach(function(i){t[String(i)]=r})}),t}d(Uh,"compileStyleAliases");function Yh(e,t){if(t=t||{},Object.keys(t).forEach(function(r){if(Fy.indexOf(r)===-1)throw new jt('Unknown option "'+r+'" is met in definition of "'+e+'" YAML type.')}),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(r){return r},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=Uh(t.styleAliases||null),$y.indexOf(this.kind)===-1)throw new jt('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}d(Yh,"Type$1");var $t=Yh;function vs(e,t){var r=[];return e[t].forEach(function(i){var n=r.length;r.forEach(function(a,o){a.tag===i.tag&&a.kind===i.kind&&a.multi===i.multi&&(n=o)}),r[n]=i}),r}d(vs,"compileList");function Gh(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},t,r;function i(n){n.multi?(e.multi[n.kind].push(n),e.multi.fallback.push(n)):e[n.kind][n.tag]=e.fallback[n.tag]=n}for(d(i,"collectType"),t=0,r=arguments.length;t=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},"binary"),octal:d(function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},"octal"),decimal:d(function(e){return e.toString(10)},"decimal"),hexadecimal:d(function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Wy=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function su(e){return!(e===null||!Wy.test(e)||e[e.length-1]==="_")}d(su,"resolveYamlFloat");function ou(e){var t,r;return t=e.replace(/_/g,"").toLowerCase(),r=t[0]==="-"?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),t===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:t===".nan"?NaN:r*parseFloat(t,10)}d(ou,"constructYamlFloat");var Hy=/^[-+]?[0-9]+e/;function lu(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ct.isNegativeZero(e))return"-0.0";return r=e.toString(10),Hy.test(r)?r.replace("e",".e"):r}d(lu,"representYamlFloat");function cu(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Ct.isNegativeZero(e))}d(cu,"isFloat");var jy=new $t("tag:yaml.org,2002:float",{kind:"scalar",resolve:su,construct:ou,predicate:cu,represent:lu,defaultStyle:"lowercase"}),hu=Py.extend({implicit:[Ny,zy,qy,jy]}),Uy=hu,uu=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),fu=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 pu(e){return e===null?!1:uu.exec(e)!==null||fu.exec(e)!==null}d(pu,"resolveYamlTimestamp");function du(e){var t,r,i,n,a,o,s,l=0,c=null,h,u,f;if(t=uu.exec(e),t===null&&(t=fu.exec(e)),t===null)throw new Error("Date resolve error");if(r=+t[1],i=+t[2]-1,n=+t[3],!t[4])return new Date(Date.UTC(r,i,n));if(a=+t[4],o=+t[5],s=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(h=+t[10],u=+(t[11]||0),c=(h*60+u)*6e4,t[9]==="-"&&(c=-c)),f=new Date(Date.UTC(r,i,n,a,o,s,l)),c&&f.setTime(f.getTime()-c),f}d(du,"constructYamlTimestamp");function gu(e){return e.toISOString()}d(gu,"representYamlTimestamp");var Yy=new $t("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:pu,construct:du,instanceOf:Date,represent:gu});function mu(e){return e==="<<"||e===null}d(mu,"resolveYamlMerge");var Gy=new $t("tag:yaml.org,2002:merge",{kind:"scalar",resolve:mu}),wo=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function yu(e){if(e===null)return!1;var t,r,i=0,n=e.length,a=wo;for(r=0;r64)){if(t<0)return!1;i+=6}return i%8===0}d(yu,"resolveYamlBinary");function xu(e){var t,r,i=e.replace(/[\r\n=]/g,""),n=i.length,a=wo,o=0,s=[];for(t=0;t>16&255),s.push(o>>8&255),s.push(o&255)),o=o<<6|a.indexOf(i.charAt(t));return r=n%4*6,r===0?(s.push(o>>16&255),s.push(o>>8&255),s.push(o&255)):r===18?(s.push(o>>10&255),s.push(o>>2&255)):r===12&&s.push(o>>4&255),new Uint8Array(s)}d(xu,"constructYamlBinary");function bu(e){var t="",r=0,i,n,a=e.length,o=wo;for(i=0;i>18&63],t+=o[r>>12&63],t+=o[r>>6&63],t+=o[r&63]),r=(r<<8)+e[i];return n=a%3,n===0?(t+=o[r>>18&63],t+=o[r>>12&63],t+=o[r>>6&63],t+=o[r&63]):n===2?(t+=o[r>>10&63],t+=o[r>>4&63],t+=o[r<<2&63],t+=o[64]):n===1&&(t+=o[r>>2&63],t+=o[r<<4&63],t+=o[64],t+=o[64]),t}d(bu,"representYamlBinary");function _u(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}d(_u,"isBinary");var Vy=new $t("tag:yaml.org,2002:binary",{kind:"scalar",resolve:yu,construct:xu,predicate:_u,represent:bu}),Xy=Object.prototype.hasOwnProperty,Zy=Object.prototype.toString;function Cu(e){if(e===null)return!0;var t=[],r,i,n,a,o,s=e;for(r=0,i=s.length;r>10)+55296,(e-65536&1023)+56320)}d(Ru,"charFromCodepoint");var Ou=new Array(256),Iu=new Array(256);for(Xe=0;Xe<256;Xe++)Ou[Xe]=Ss(Xe)?1:0,Iu[Xe]=Ss(Xe);var Xe;function Pu(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||Au,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}d(Pu,"State$1");function vo(e,t){var r={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return r.snippet=Ey(r),new jt(t,r)}d(vo,"generateError");function G(e,t){throw vo(e,t)}d(G,"throwError");function $i(e,t){e.onWarning&&e.onWarning.call(null,vo(e,t))}d($i,"throwWarning");var Gl={YAML:d(function(t,r,i){var n,a,o;t.version!==null&&G(t,"duplication of %YAML directive"),i.length!==1&&G(t,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&G(t,"ill-formed argument of the YAML directive"),a=parseInt(n[1],10),o=parseInt(n[2],10),a!==1&&G(t,"unacceptable YAML version of the document"),t.version=i[0],t.checkLineBreaks=o<2,o!==1&&o!==2&&$i(t,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:d(function(t,r,i){var n,a;i.length!==2&&G(t,"TAG directive accepts exactly two arguments"),n=i[0],a=i[1],Mu.test(n)||G(t,"ill-formed tag handle (first argument) of the TAG directive"),He.call(t.tagMap,n)&&G(t,'there is a previously declared suffix for "'+n+'" tag handle'),Eu.test(a)||G(t,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{G(t,"tag prefix is malformed: "+a)}t.tagMap[n]=a},"handleTagDirective")};function Me(e,t,r,i){var n,a,o,s;if(t1&&(e.result+=Ct.repeat(` +`,t-1))}d(_a,"writeFoldedLines");function Nu(e,t,r){var i,n,a,o,s,l,c,h,u=e.kind,f=e.result,p;if(p=e.input.charCodeAt(e.position),Pt(p)||er(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96||(p===63||p===45)&&(n=e.input.charCodeAt(e.position+1),Pt(n)||r&&er(n)))return!1;for(e.kind="scalar",e.result="",a=o=e.position,s=!1;p!==0;){if(p===58){if(n=e.input.charCodeAt(e.position+1),Pt(n)||r&&er(n))break}else if(p===35){if(i=e.input.charCodeAt(e.position-1),Pt(i))break}else{if(e.position===e.lineStart&&Vi(e)||r&&er(p))break;if(le(p))if(l=e.line,c=e.lineStart,h=e.lineIndent,xt(e,!1,-1),e.lineIndent>=t){s=!0,p=e.input.charCodeAt(e.position);continue}else{e.position=o,e.line=l,e.lineStart=c,e.lineIndent=h;break}}s&&(Me(e,a,o,!1),_a(e,e.line-l),a=o=e.position,s=!1),We(p)||(o=e.position+1),p=e.input.charCodeAt(++e.position)}return Me(e,a,o,!1),e.result?!0:(e.kind=u,e.result=f,!1)}d(Nu,"readPlainScalar");function zu(e,t){var r,i,n;if(r=e.input.charCodeAt(e.position),r!==39)return!1;for(e.kind="scalar",e.result="",e.position++,i=n=e.position;(r=e.input.charCodeAt(e.position))!==0;)if(r===39)if(Me(e,i,e.position,!0),r=e.input.charCodeAt(++e.position),r===39)i=e.position,e.position++,n=e.position;else return!0;else le(r)?(Me(e,i,n,!0),_a(e,xt(e,!1,t)),i=n=e.position):e.position===e.lineStart&&Vi(e)?G(e,"unexpected end of the document within a single quoted scalar"):(e.position++,n=e.position);G(e,"unexpected end of the stream within a single quoted scalar")}d(zu,"readSingleQuotedScalar");function qu(e,t){var r,i,n,a,o,s;if(s=e.input.charCodeAt(e.position),s!==34)return!1;for(e.kind="scalar",e.result="",e.position++,r=i=e.position;(s=e.input.charCodeAt(e.position))!==0;){if(s===34)return Me(e,r,e.position,!0),e.position++,!0;if(s===92){if(Me(e,r,e.position,!0),s=e.input.charCodeAt(++e.position),le(s))xt(e,!1,t);else if(s<256&&Ou[s])e.result+=Iu[s],e.position++;else if((o=$u(s))>0){for(n=o,a=0;n>0;n--)s=e.input.charCodeAt(++e.position),(o=Fu(s))>=0?a=(a<<4)+o:G(e,"expected hexadecimal character");e.result+=Ru(a),e.position++}else G(e,"unknown escape sequence");r=i=e.position}else le(s)?(Me(e,r,i,!0),_a(e,xt(e,!1,t)),r=i=e.position):e.position===e.lineStart&&Vi(e)?G(e,"unexpected end of the document within a double quoted scalar"):(e.position++,i=e.position)}G(e,"unexpected end of the stream within a double quoted scalar")}d(qu,"readDoubleQuotedScalar");function Wu(e,t){var r=!0,i,n,a,o=e.tag,s,l=e.anchor,c,h,u,f,p,g=Object.create(null),m,y,x,b;if(b=e.input.charCodeAt(e.position),b===91)h=93,p=!1,s=[];else if(b===123)h=125,p=!0,s={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=s),b=e.input.charCodeAt(++e.position);b!==0;){if(xt(e,!0,t),b=e.input.charCodeAt(e.position),b===h)return e.position++,e.tag=o,e.anchor=l,e.kind=p?"mapping":"sequence",e.result=s,!0;r?b===44&&G(e,"expected the node content, but found ','"):G(e,"missed comma between flow collection entries"),y=m=x=null,u=f=!1,b===63&&(c=e.input.charCodeAt(e.position+1),Pt(c)&&(u=f=!0,e.position++,xt(e,!0,t))),i=e.line,n=e.lineStart,a=e.position,lr(e,t,Nn,!1,!0),y=e.tag,m=e.result,xt(e,!0,t),b=e.input.charCodeAt(e.position),(f||e.line===i)&&b===58&&(u=!0,b=e.input.charCodeAt(++e.position),xt(e,!0,t),lr(e,t,Nn,!1,!0),x=e.result),p?rr(e,s,g,y,m,x,i,n,a):u?s.push(rr(e,null,g,y,m,x,i,n,a)):s.push(m),xt(e,!0,t),b=e.input.charCodeAt(e.position),b===44?(r=!0,b=e.input.charCodeAt(++e.position)):r=!1}G(e,"unexpected end of the stream within a flow collection")}d(Wu,"readFlowCollection");function Hu(e,t){var r,i,n=es,a=!1,o=!1,s=t,l=0,c=!1,h,u;if(u=e.input.charCodeAt(e.position),u===124)i=!1;else if(u===62)i=!0;else return!1;for(e.kind="scalar",e.result="";u!==0;)if(u=e.input.charCodeAt(++e.position),u===43||u===45)es===n?n=u===43?Yl:rx:G(e,"repeat of a chomping mode identifier");else if((h=Du(u))>=0)h===0?G(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?G(e,"repeat of an indentation width identifier"):(s=t+h-1,o=!0);else break;if(We(u)){do u=e.input.charCodeAt(++e.position);while(We(u));if(u===35)do u=e.input.charCodeAt(++e.position);while(!le(u)&&u!==0)}for(;u!==0;){for(ba(e),e.lineIndent=0,u=e.input.charCodeAt(e.position);(!o||e.lineIndents&&(s=e.lineIndent),le(u)){l++;continue}if(e.lineIndentt)&&l!==0)G(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(y&&(o=e.line,s=e.lineStart,l=e.position),lr(e,t,zn,!0,n)&&(y?g=e.result:m=e.result),y||(rr(e,u,f,p,g,m,o,s,l),p=g=m=null),xt(e,!0,-1),b=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&b!==0)G(e,"bad indentation of a mapping entry");else if(e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndentt?l=1:e.lineIndent===t?l=0:e.lineIndent tag; it should be "scalar", not "'+e.kind+'"'),u=0,f=e.implicitTypes.length;u"),e.result!==null&&g.kind!==e.kind&&G(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+g.kind+'", not "'+e.kind+'"'),g.resolve(e.result,e.tag)?(e.result=g.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):G(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||h}d(lr,"composeNode");function Vu(e){var t=e.position,r,i,n,a=!1,o;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(o=e.input.charCodeAt(e.position))!==0&&(xt(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||o!==37));){for(a=!0,o=e.input.charCodeAt(++e.position),r=e.position;o!==0&&!Pt(o);)o=e.input.charCodeAt(++e.position);for(i=e.input.slice(r,e.position),n=[],i.length<1&&G(e,"directive name must not be less than one character in length");o!==0;){for(;We(o);)o=e.input.charCodeAt(++e.position);if(o===35){do o=e.input.charCodeAt(++e.position);while(o!==0&&!le(o));break}if(le(o))break;for(r=e.position;o!==0&&!Pt(o);)o=e.input.charCodeAt(++e.position);n.push(e.input.slice(r,e.position))}o!==0&&ba(e),He.call(Gl,i)?Gl[i](e,i,n):$i(e,'unknown document directive "'+i+'"')}if(xt(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,xt(e,!0,-1)):a&&G(e,"directives end mark is expected"),lr(e,e.lineIndent-1,zn,!1,!0),xt(e,!0,-1),e.checkLineBreaks&&nx.test(e.input.slice(t,e.position))&&$i(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Vi(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,xt(e,!0,-1));return}if(e.position"u"&&(r=t,t=null);var i=ko(e,r);if(typeof t!="function")return i;for(var n=0,a=i.length;n=55296&&r<=56319&&t+1=56320&&i<=57343)?(r-55296)*1024+i-56320+65536:r}d(Sr,"codePointAt");function To(e){var t=/^\n* /;return t.test(e)}d(To,"needIndentIndicator");var uf=1,Fs=2,ff=3,pf=4,kr=5;function df(e,t,r,i,n,a,o,s){var l,c=0,h=null,u=!1,f=!1,p=i!==-1,g=-1,m=cf(Sr(e,0))&&hf(Sr(e,e.length-1));if(t||o)for(l=0;l=65536?l+=2:l++){if(c=Sr(e,l),!Hr(c))return kr;m=m&&Es(c,h,s),h=c}else{for(l=0;l=65536?l+=2:l++){if(c=Sr(e,l),c===Di)u=!0,p&&(f=f||l-g-1>i&&e[g+1]!==" ",g=l);else if(!Hr(c))return kr;m=m&&Es(c,h,s),h=c}f=f||p&&l-g-1>i&&e[g+1]!==" "}return!u&&!f?m&&!o&&!n(e)?uf:a===Ri?kr:Fs:r>9&&To(e)?kr:o?a===Ri?kr:Fs:f?pf:ff}d(df,"chooseScalarStyle");function gf(e,t,r,i,n){e.dump=function(){if(t.length===0)return e.quotingType===Ri?'""':"''";if(!e.noCompatMode&&(Sx.indexOf(t)!==-1||Tx.test(t)))return e.quotingType===Ri?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,r),o=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),s=i||e.flowLevel>-1&&r>=e.flowLevel;function l(c){return lf(e,c)}switch(d(l,"testAmbiguity"),df(t,s,e.indent,o,l,e.quotingType,e.forceQuotes&&!i,n)){case uf:return t;case Fs:return"'"+t.replace(/'/g,"''")+"'";case ff:return"|"+$s(t,e.indent)+Ds(Bs(t,a));case pf:return">"+$s(t,e.indent)+Ds(Bs(mf(t,o),a));case kr:return'"'+yf(t)+'"';default:throw new jt("impossible error: invalid scalar style")}}()}d(gf,"writeScalar");function $s(e,t){var r=To(e)?String(t):"",i=e[e.length-1]===` +`,n=i&&(e[e.length-2]===` +`||e===` +`),a=n?"+":i?"":"-";return r+a+` +`}d($s,"blockHeader");function Ds(e){return e[e.length-1]===` +`?e.slice(0,-1):e}d(Ds,"dropEndingNewline");function mf(e,t){for(var r=/(\n+)([^\n]*)/g,i=function(){var c=e.indexOf(` +`);return c=c!==-1?c:e.length,r.lastIndex=c,Rs(e.slice(0,c),t)}(),n=e[0]===` +`||e[0]===" ",a,o;o=r.exec(e);){var s=o[1],l=o[2];a=l[0]===" ",i+=s+(!n&&!a&&l!==""?` +`:"")+Rs(l,t),n=a}return i}d(mf,"foldString");function Rs(e,t){if(e===""||e[0]===" ")return e;for(var r=/ [^ ]/g,i,n=0,a,o=0,s=0,l="";i=r.exec(e);)s=i.index,s-n>t&&(a=o>n?o:s,l+=` +`+e.slice(n,a),n=a+1),o=s;return l+=` +`,e.length-n>t&&o>n?l+=e.slice(n,o)+` +`+e.slice(o+1):l+=e.slice(n),l.slice(1)}d(Rs,"foldLine");function yf(e){for(var t="",r=0,i,n=0;n=65536?n+=2:n++)r=Sr(e,n),i=Dt[r],!i&&Hr(r)?(t+=e[n],r>=65536&&(t+=e[n+1])):t+=i||sf(r);return t}d(yf,"escapeString");function xf(e,t,r){var i="",n=e.tag,a,o,s;for(a=0,o=r.length;a"u"&&_e(e,t,null,!1,!1))&&(i!==""&&(i+=","+(e.condenseFlow?"":" ")),i+=e.dump);e.tag=n,e.dump="["+i+"]"}d(xf,"writeFlowSequence");function Os(e,t,r,i){var n="",a=e.tag,o,s,l;for(o=0,s=r.length;o"u"&&_e(e,t+1,null,!0,!0,!1,!0))&&((!i||n!=="")&&(n+=Wn(e,t)),e.dump&&Di===e.dump.charCodeAt(0)?n+="-":n+="- ",n+=e.dump);e.tag=a,e.dump=n||"[]"}d(Os,"writeBlockSequence");function bf(e,t,r){var i="",n=e.tag,a=Object.keys(r),o,s,l,c,h;for(o=0,s=a.length;o1024&&(h+="? "),h+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),_e(e,t,c,!1,!1)&&(h+=e.dump,i+=h));e.tag=n,e.dump="{"+i+"}"}d(bf,"writeFlowMapping");function _f(e,t,r,i){var n="",a=e.tag,o=Object.keys(r),s,l,c,h,u,f;if(e.sortKeys===!0)o.sort();else if(typeof e.sortKeys=="function")o.sort(e.sortKeys);else if(e.sortKeys)throw new jt("sortKeys must be a boolean or a function");for(s=0,l=o.length;s1024,u&&(e.dump&&Di===e.dump.charCodeAt(0)?f+="?":f+="? "),f+=e.dump,u&&(f+=Wn(e,t)),_e(e,t+1,h,!0,u)&&(e.dump&&Di===e.dump.charCodeAt(0)?f+=":":f+=": ",f+=e.dump,n+=f));e.tag=a,e.dump=n||"{}"}d(_f,"writeBlockMapping");function Is(e,t,r){var i,n,a,o,s,l;for(n=r?e.explicitTypes:e.implicitTypes,a=0,o=n.length;a tag resolver accepts not "'+l+'" style');e.dump=i}return!0}return!1}d(Is,"detectType");function _e(e,t,r,i,n,a,o){e.tag=null,e.dump=r,Is(e,r,!1)||Is(e,r,!0);var s=Ku.call(e.dump),l=i,c;i&&(i=e.flowLevel<0||e.flowLevel>t);var h=s==="[object Object]"||s==="[object Array]",u,f;if(h&&(u=e.duplicates.indexOf(r),f=u!==-1),(e.tag!==null&&e.tag!=="?"||f||e.indent!==2&&t>0)&&(n=!1),f&&e.usedDuplicates[u])e.dump="*ref_"+u;else{if(h&&f&&!e.usedDuplicates[u]&&(e.usedDuplicates[u]=!0),s==="[object Object]")i&&Object.keys(e.dump).length!==0?(_f(e,t,e.dump,n),f&&(e.dump="&ref_"+u+e.dump)):(bf(e,t,e.dump),f&&(e.dump="&ref_"+u+" "+e.dump));else if(s==="[object Array]")i&&e.dump.length!==0?(e.noArrayIndent&&!o&&t>0?Os(e,t-1,e.dump,n):Os(e,t,e.dump,n),f&&(e.dump="&ref_"+u+e.dump)):(xf(e,t,e.dump),f&&(e.dump="&ref_"+u+" "+e.dump));else if(s==="[object String]")e.tag!=="?"&&gf(e,e.dump,t,a,l);else{if(s==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new jt("unacceptable kind of an object to dump "+s)}e.tag!==null&&e.tag!=="?"&&(c=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?c="!"+c:c.slice(0,18)==="tag:yaml.org,2002:"?c="!!"+c.slice(18):c="!<"+c+">",e.dump=c+" "+e.dump)}return!0}d(_e,"writeNode");function Cf(e,t){var r=[],i=[],n,a;for(Hn(e,r,i),n=0,a=i.length;n{const n=e.split(":");if(e.slice(0,1)==="@"){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){const s=n.pop(),l=n.pop(),c={provider:n.length>0?n[0]:i,prefix:l,name:s};return rs(c)?c:null}const a=n[0],o=a.split("-");if(o.length>1){const s={provider:i,prefix:o.shift(),name:o.join("-")};return rs(s)?s:null}if(r&&i===""){const s={provider:i,prefix:"",name:a};return rs(s,r)?s:null}return null},rs=(e,t)=>e?!!((t&&e.prefix===""||e.prefix)&&e.name):!1;function Ix(e,t){const r={};!e.hFlip!=!t.hFlip&&(r.hFlip=!0),!e.vFlip!=!t.vFlip&&(r.vFlip=!0);const i=((e.rotate||0)+(t.rotate||0))%4;return i&&(r.rotate=i),r}function Vl(e,t){const r=Ix(e,t);for(const i in $x)i in jn?i in e&&!(i in r)&&(r[i]=jn[i]):i in t?r[i]=t[i]:i in e&&(r[i]=e[i]);return r}function Px(e,t){const r=e.icons,i=e.aliases||Object.create(null),n=Object.create(null);function a(o){if(r[o])return n[o]=[];if(!(o in n)){n[o]=null;const s=i[o]&&i[o].parent,l=s&&a(s);l&&(n[o]=[s].concat(l))}return n[o]}return t.forEach(a),n}function Xl(e,t,r){const i=e.icons,n=e.aliases||Object.create(null);let a={};function o(s){a=Vl(i[s]||n[s],a)}return o(t),r.forEach(o),Vl(e,a)}function Nx(e,t){if(e.icons[t])return Xl(e,t,[]);const r=Px(e,[t])[t];return r?Xl(e,t,r):null}const zx=/(-?[0-9.]*[0-9]+[0-9.]*)/g,qx=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function Zl(e,t,r){if(t===1)return e;if(r=r||100,typeof e=="number")return Math.ceil(e*t*r)/r;if(typeof e!="string")return e;const i=e.split(zx);if(i===null||!i.length)return e;const n=[];let a=i.shift(),o=qx.test(a);for(;;){if(o){const s=parseFloat(a);isNaN(s)?n.push(a):n.push(Math.ceil(s*t*r)/r)}else n.push(a);if(a=i.shift(),a===void 0)return n.join("");o=!o}}function Wx(e,t="defs"){let r="";const i=e.indexOf("<"+t);for(;i>=0;){const n=e.indexOf(">",i),a=e.indexOf("",a);if(o===-1)break;r+=e.slice(n+1,a).trim(),e=e.slice(0,i).trim()+e.slice(o+1)}return{defs:r,content:e}}function Hx(e,t){return e?""+e+""+t:t}function jx(e,t,r){const i=Wx(e);return Hx(i.defs,t+i.content+r)}const Ux=e=>e==="unset"||e==="undefined"||e==="none";function Yx(e,t){const r={...wf,...e},i={...Rx,...t},n={left:r.left,top:r.top,width:r.width,height:r.height};let a=r.body;[r,i].forEach(m=>{const y=[],x=m.hFlip,b=m.vFlip;let _=m.rotate;x?b?_+=2:(y.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),y.push("scale(-1 1)"),n.top=n.left=0):b&&(y.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),y.push("scale(1 -1)"),n.top=n.left=0);let v;switch(_<0&&(_-=Math.floor(_/4)*4),_=_%4,_){case 1:v=n.height/2+n.top,y.unshift("rotate(90 "+v.toString()+" "+v.toString()+")");break;case 2:y.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:v=n.width/2+n.left,y.unshift("rotate(-90 "+v.toString()+" "+v.toString()+")");break}_%2===1&&(n.left!==n.top&&(v=n.left,n.left=n.top,n.top=v),n.width!==n.height&&(v=n.width,n.width=n.height,n.height=v)),y.length&&(a=jx(a,'',""))});const o=i.width,s=i.height,l=n.width,c=n.height;let h,u;o===null?(u=s===null?"1em":s==="auto"?c:s,h=Zl(u,l/c)):(h=o==="auto"?l:o,u=s===null?Zl(h,c/l):s==="auto"?c:s);const f={},p=(m,y)=>{Ux(y)||(f[m]=y.toString())};p("width",h),p("height",u);const g=[n.left,n.top,l,c];return f.viewBox=g.join(" "),{attributes:f,viewBox:g,body:a}}const Gx=/\sid="(\S+)"/g,Vx="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);let Xx=0;function Zx(e,t=Vx){const r=[];let i;for(;i=Gx.exec(e);)r.push(i[1]);if(!r.length)return e;const n="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{const o=typeof t=="function"?t(a):t+(Xx++).toString(),s=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+s+')([")]|\\.[a-z])',"g"),"$1"+o+n+"$3")}),e=e.replace(new RegExp(n,"g"),""),e}function Kx(e,t){let r=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const i in t)r+=" "+i+'="'+t[i]+'"';return'"+e+""}var Qx={body:'?',height:80,width:80},Ps=new Map,vf=new Map,Jx=d(e=>{for(const t of e){if(!t.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if($.debug("Registering icon pack:",t.name),"loader"in t)vf.set(t.name,t.loader);else if("icons"in t)Ps.set(t.name,t.icons);else throw $.error("Invalid icon loader:",t),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),tb=d(async(e,t)=>{const r=Ox(e,!0,t!==void 0);if(!r)throw new Error(`Invalid icon name: ${e}`);const i=r.prefix||t;if(!i)throw new Error(`Icon name must contain a prefix: ${e}`);let n=Ps.get(i);if(!n){const o=vf.get(i);if(!o)throw new Error(`Icon set not found: ${r.prefix}`);try{n={...await o(),prefix:i},Ps.set(i,n)}catch(s){throw $.error(s),new Error(`Failed to load icon set: ${r.prefix}`)}}const a=Nx(n,r.name);if(!a)throw new Error(`Icon not found: ${e}`);return a},"getRegisteredIconData"),Ca=d(async(e,t)=>{let r;try{r=await tb(e,t==null?void 0:t.fallbackPrefix)}catch(a){$.error(a),r=Qx}const i=Yx(r,t);return Kx(Zx(i.body),i.attributes)},"getIconSVG"),Ao=d(({flowchart:e})=>{var n,a;const t=((n=e==null?void 0:e.subGraphTitleMargin)==null?void 0:n.top)??0,r=((a=e==null?void 0:e.subGraphTitleMargin)==null?void 0:a.bottom)??0,i=t+r;return{subGraphTitleTopMargin:t,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:i}},"getSubGraphTitleMargins"),Lo={},vt={};Object.defineProperty(vt,"__esModule",{value:!0});vt.BLANK_URL=vt.relativeFirstCharacters=vt.whitespaceEscapeCharsRegex=vt.urlSchemeRegex=vt.ctrlCharactersRegex=vt.htmlCtrlEntityRegex=vt.htmlEntitiesRegex=vt.invalidProtocolRegex=void 0;vt.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;vt.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;vt.htmlCtrlEntityRegex=/&(newline|tab);/gi;vt.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;vt.urlSchemeRegex=/^.+(:|:)/gim;vt.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;vt.relativeFirstCharacters=[".","/"];vt.BLANK_URL="about:blank";Object.defineProperty(Lo,"__esModule",{value:!0});var kf=Lo.sanitizeUrl=void 0,Ft=vt;function eb(e){return Ft.relativeFirstCharacters.indexOf(e[0])>-1}function rb(e){var t=e.replace(Ft.ctrlCharactersRegex,"");return t.replace(Ft.htmlEntitiesRegex,function(r,i){return String.fromCharCode(i)})}function ib(e){return URL.canParse(e)}function Kl(e){try{return decodeURIComponent(e)}catch{return e}}function nb(e){if(!e)return Ft.BLANK_URL;var t,r=Kl(e.trim());do r=rb(r).replace(Ft.htmlCtrlEntityRegex,"").replace(Ft.ctrlCharactersRegex,"").replace(Ft.whitespaceEscapeCharsRegex,"").trim(),r=Kl(r),t=r.match(Ft.ctrlCharactersRegex)||r.match(Ft.htmlEntitiesRegex)||r.match(Ft.htmlCtrlEntityRegex)||r.match(Ft.whitespaceEscapeCharsRegex);while(t&&t.length>0);var i=r;if(!i)return Ft.BLANK_URL;if(eb(i))return i;var n=i.trimStart(),a=n.match(Ft.urlSchemeRegex);if(!a)return i;var o=a[0].toLowerCase().trim();if(Ft.invalidProtocolRegex.test(o))return Ft.BLANK_URL;var s=n.replace(/\\/g,"/");if(o==="mailto:"||o.includes("://"))return s;if(o==="http:"||o==="https:"){if(!ib(s))return Ft.BLANK_URL;var l=new URL(s);return l.protocol=l.protocol.toLowerCase(),l.hostname=l.hostname.toLowerCase(),l.toString()}return s}kf=Lo.sanitizeUrl=nb;var ab={value:()=>{}};function Sf(){for(var e=0,t=arguments.length,r={},i;e=0&&(i=r.slice(n+1),r=r.slice(0,n)),r&&!t.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:i}})}Tn.prototype=Sf.prototype={constructor:Tn,on:function(e,t){var r=this._,i=sb(e+"",r),n,a=-1,o=i.length;if(arguments.length<2){for(;++a0)for(var r=new Array(n),i=0,n,a;i=0&&(t=e.slice(0,r))!=="xmlns"&&(e=e.slice(r+1)),Jl.hasOwnProperty(t)?{space:Jl[t],local:e}:e}function lb(e){return function(){var t=this.ownerDocument,r=this.namespaceURI;return r===Ns&&t.documentElement.namespaceURI===Ns?t.createElement(e):t.createElementNS(r,e)}}function cb(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function Tf(e){var t=wa(e);return(t.local?cb:lb)(t)}function hb(){}function Bo(e){return e==null?hb:function(){return this.querySelector(e)}}function ub(e){typeof e!="function"&&(e=Bo(e));for(var t=this._groups,r=t.length,i=new Array(r),n=0;n=_&&(_=b+1);!(k=y[_])&&++_=0;)(o=i[n])&&(a&&o.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(o,a),a=o);return this}function Ob(e){e||(e=Ib);function t(u,f){return u&&f?e(u.__data__,f.__data__):!u-!f}for(var r=this._groups,i=r.length,n=new Array(i),a=0;at?1:e>=t?0:NaN}function Pb(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function Nb(){return Array.from(this)}function zb(){for(var e=this._groups,t=0,r=e.length;t1?this.each((t==null?Kb:typeof t=="function"?Jb:Qb)(e,t,r??"")):jr(this.node(),e)}function jr(e,t){return e.style.getPropertyValue(t)||Ef(e).getComputedStyle(e,null).getPropertyValue(t)}function e1(e){return function(){delete this[e]}}function r1(e,t){return function(){this[e]=t}}function i1(e,t){return function(){var r=t.apply(this,arguments);r==null?delete this[e]:this[e]=r}}function n1(e,t){return arguments.length>1?this.each((t==null?e1:typeof t=="function"?i1:r1)(e,t)):this.node()[e]}function Ff(e){return e.trim().split(/^|\s+/)}function Mo(e){return e.classList||new $f(e)}function $f(e){this._node=e,this._names=Ff(e.getAttribute("class")||"")}$f.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function Df(e,t){for(var r=Mo(e),i=-1,n=t.length;++i=0&&(r=t.slice(i+1),t=t.slice(0,i)),{type:t,name:r}})}function F1(e){return function(){var t=this.__on;if(t){for(var r=0,i=-1,n=t.length,a;r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?fn(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?fn(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=q1.exec(e))?new Ut(t[1],t[2],t[3],1):(t=W1.exec(e))?new Ut(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=H1.exec(e))?fn(t[1],t[2],t[3],t[4]):(t=j1.exec(e))?fn(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=U1.exec(e))?sc(t[1],t[2]/100,t[3]/100,1):(t=Y1.exec(e))?sc(t[1],t[2]/100,t[3]/100,t[4]):tc.hasOwnProperty(e)?ic(tc[e]):e==="transparent"?new Ut(NaN,NaN,NaN,0):null}function ic(e){return new Ut(e>>16&255,e>>8&255,e&255,1)}function fn(e,t,r,i){return i<=0&&(e=t=r=NaN),new Ut(e,t,r,i)}function X1(e){return e instanceof Zi||(e=Ni(e)),e?(e=e.rgb(),new Ut(e.r,e.g,e.b,e.opacity)):new Ut}function zs(e,t,r,i){return arguments.length===1?X1(e):new Ut(e,t,r,i??1)}function Ut(e,t,r,i){this.r=+e,this.g=+t,this.b=+r,this.opacity=+i}Eo(Ut,zs,Pf(Zi,{brighter(e){return e=e==null?Yn:Math.pow(Yn,e),new Ut(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ii:Math.pow(Ii,e),new Ut(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ut(ar(this.r),ar(this.g),ar(this.b),Gn(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:nc,formatHex:nc,formatHex8:Z1,formatRgb:ac,toString:ac}));function nc(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}`}function Z1(){return`#${ir(this.r)}${ir(this.g)}${ir(this.b)}${ir((isNaN(this.opacity)?1:this.opacity)*255)}`}function ac(){const e=Gn(this.opacity);return`${e===1?"rgb(":"rgba("}${ar(this.r)}, ${ar(this.g)}, ${ar(this.b)}${e===1?")":`, ${e})`}`}function Gn(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ar(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function ir(e){return e=ar(e),(e<16?"0":"")+e.toString(16)}function sc(e,t,r,i){return i<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new oe(e,t,r,i)}function Nf(e){if(e instanceof oe)return new oe(e.h,e.s,e.l,e.opacity);if(e instanceof Zi||(e=Ni(e)),!e)return new oe;if(e instanceof oe)return e;e=e.rgb();var t=e.r/255,r=e.g/255,i=e.b/255,n=Math.min(t,r,i),a=Math.max(t,r,i),o=NaN,s=a-n,l=(a+n)/2;return s?(t===a?o=(r-i)/s+(r0&&l<1?0:o,new oe(o,s,l,e.opacity)}function K1(e,t,r,i){return arguments.length===1?Nf(e):new oe(e,t,r,i??1)}function oe(e,t,r,i){this.h=+e,this.s=+t,this.l=+r,this.opacity=+i}Eo(oe,K1,Pf(Zi,{brighter(e){return e=e==null?Yn:Math.pow(Yn,e),new oe(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ii:Math.pow(Ii,e),new oe(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*t,n=2*r-i;return new Ut(is(e>=240?e-240:e+120,n,i),is(e,n,i),is(e<120?e+240:e-120,n,i),this.opacity)},clamp(){return new oe(oc(this.h),pn(this.s),pn(this.l),Gn(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 e=Gn(this.opacity);return`${e===1?"hsl(":"hsla("}${oc(this.h)}, ${pn(this.s)*100}%, ${pn(this.l)*100}%${e===1?")":`, ${e})`}`}}));function oc(e){return e=(e||0)%360,e<0?e+360:e}function pn(e){return Math.max(0,Math.min(1,e||0))}function is(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const Fo=e=>()=>e;function zf(e,t){return function(r){return e+r*t}}function Q1(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(i){return Math.pow(e+i*t,r)}}function JL(e,t){var r=t-e;return r?zf(e,r>180||r<-180?r-360*Math.round(r/360):r):Fo(isNaN(e)?t:e)}function J1(e){return(e=+e)==1?qf:function(t,r){return r-t?Q1(t,r,e):Fo(isNaN(t)?r:t)}}function qf(e,t){var r=t-e;return r?zf(e,r):Fo(isNaN(e)?t:e)}const lc=function e(t){var r=J1(t);function i(n,a){var o=r((n=zs(n)).r,(a=zs(a)).r),s=r(n.g,a.g),l=r(n.b,a.b),c=qf(n.opacity,a.opacity);return function(h){return n.r=o(h),n.g=s(h),n.b=l(h),n.opacity=c(h),n+""}}return i.gamma=e,i}(1);function ze(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var qs=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ns=new RegExp(qs.source,"g");function t_(e){return function(){return e}}function e_(e){return function(t){return e(t)+""}}function r_(e,t){var r=qs.lastIndex=ns.lastIndex=0,i,n,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(i=qs.exec(e))&&(n=ns.exec(t));)(a=n.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(i=i[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:ze(i,n)})),r=ns.lastIndex;return r180?h+=360:h-c>180&&(c+=360),f.push({i:u.push(n(u)+"rotate(",null,i)-2,x:ze(c,h)})):h&&u.push(n(u)+"rotate("+h+i)}function s(c,h,u,f){c!==h?f.push({i:u.push(n(u)+"skewX(",null,i)-2,x:ze(c,h)}):h&&u.push(n(u)+"skewX("+h+i)}function l(c,h,u,f,p,g){if(c!==u||h!==f){var m=p.push(n(p)+"scale(",null,",",null,")");g.push({i:m-4,x:ze(c,u)},{i:m-2,x:ze(h,f)})}else(u!==1||f!==1)&&p.push(n(p)+"scale("+u+","+f+")")}return function(c,h){var u=[],f=[];return c=e(c),h=e(h),a(c.translateX,c.translateY,h.translateX,h.translateY,u,f),o(c.rotate,h.rotate,u,f),s(c.skewX,h.skewX,u,f),l(c.scaleX,c.scaleY,h.scaleX,h.scaleY,u,f),c=h=null,function(p){for(var g=-1,m=f.length,y;++g=0&&e._call.call(void 0,t),e=e._next;--Ur}function hc(){cr=(Xn=zi.now())+va,Ur=_i=0;try{l_()}finally{Ur=0,h_(),cr=0}}function c_(){var e=zi.now(),t=e-Xn;t>jf&&(va-=t,Xn=e)}function h_(){for(var e,t=Vn,r,i=1/0;t;)t._call?(i>t._time&&(i=t._time),e=t,t=t._next):(r=t._next,t._next=null,t=e?e._next=r:Vn=r);Ci=e,Hs(i)}function Hs(e){if(!Ur){_i&&(_i=clearTimeout(_i));var t=e-cr;t>24?(e<1/0&&(_i=setTimeout(hc,e-zi.now()-va)),fi&&(fi=clearInterval(fi))):(fi||(Xn=zi.now(),fi=setInterval(c_,jf)),Ur=1,Uf(hc))}}function uc(e,t,r){var i=new Zn;return t=t==null?0:+t,i.restart(n=>{i.stop(),e(n+t)},t,r),i}var u_=Sf("start","end","cancel","interrupt"),f_=[],Gf=0,fc=1,js=2,An=3,pc=4,Us=5,Ln=6;function ka(e,t,r,i,n,a){var o=e.__transition;if(!o)e.__transition={};else if(r in o)return;p_(e,r,{name:t,index:i,group:n,on:u_,tween:f_,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:Gf})}function Do(e,t){var r=ue(e,t);if(r.state>Gf)throw new Error("too late; already scheduled");return r}function Ce(e,t){var r=ue(e,t);if(r.state>An)throw new Error("too late; already running");return r}function ue(e,t){var r=e.__transition;if(!r||!(r=r[t]))throw new Error("transition not found");return r}function p_(e,t,r){var i=e.__transition,n;i[t]=r,r.timer=Yf(a,0,r.time);function a(c){r.state=fc,r.timer.restart(o,r.delay,r.time),r.delay<=c&&o(c-r.delay)}function o(c){var h,u,f,p;if(r.state!==fc)return l();for(h in i)if(p=i[h],p.name===r.name){if(p.state===An)return uc(o);p.state===pc?(p.state=Ln,p.timer.stop(),p.on.call("interrupt",e,e.__data__,p.index,p.group),delete i[h]):+hjs&&i.state=0&&(t=t.slice(0,r)),!t||t==="start"})}function j_(e,t,r){var i,n,a=H_(t)?Do:Ce;return function(){var o=a(this,e),s=o.on;s!==i&&(n=(i=s).copy()).on(t,r),o.on=n}}function U_(e,t){var r=this._id;return arguments.length<2?ue(this.node(),r).on.on(e):this.each(j_(r,e,t))}function Y_(e){return function(){var t=this.parentNode;for(var r in this.__transition)if(+r!==e)return;t&&t.removeChild(this)}}function G_(){return this.on("end.remove",Y_(this._id))}function V_(e){var t=this._name,r=this._id;typeof e!="function"&&(e=Bo(e));for(var i=this._groups,n=i.length,a=new Array(n),o=0;o=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Kf;const r=10**t;return function(i){this._+=i[0];for(let n=1,a=i.length;nKe)if(!(Math.abs(u*l-c*h)>Ke)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=i-o,g=n-s,m=l*l+c*c,y=p*p+g*g,x=Math.sqrt(m),b=Math.sqrt(f),_=a*Math.tan((Ys-Math.acos((m+f-y)/(2*x*b)))/2),v=_/b,k=_/x;Math.abs(v-1)>Ke&&this._append`L${t+v*h},${r+v*u}`,this._append`A${a},${a},0,0,${+(u*p>h*g)},${this._x1=t+k*l},${this._y1=r+k*c}`}}arc(t,r,i,n,a,o){if(t=+t,r=+r,i=+i,o=!!o,i<0)throw new Error(`negative radius: ${i}`);let s=i*Math.cos(n),l=i*Math.sin(n),c=t+s,h=r+l,u=1^o,f=o?n-a:a-n;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>Ke||Math.abs(this._y1-h)>Ke)&&this._append`L${c},${h}`,i&&(f<0&&(f=f%Gs+Gs),f>b2?this._append`A${i},${i},0,1,${u},${t-s},${r-l}A${i},${i},0,1,${u},${this._x1=c},${this._y1=h}`:f>Ke&&this._append`A${i},${i},0,${+(f>=Ys)},${u},${this._x1=t+i*Math.cos(a)},${this._y1=r+i*Math.sin(a)}`)}rect(t,r,i,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${i=+i}v${+n}h${-i}Z`}toString(){return this._}}function wr(e){return function(){return e}}const tB=Math.abs,eB=Math.atan2,rB=Math.cos,iB=Math.max,nB=Math.min,aB=Math.sin,sB=Math.sqrt,dc=1e-12,Oo=Math.PI,gc=Oo/2,oB=2*Oo;function lB(e){return e>1?0:e<-1?Oo:Math.acos(e)}function cB(e){return e>=1?gc:e<=-1?-gc:Math.asin(e)}function w2(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const i=Math.floor(r);if(!(i>=0))throw new RangeError(`invalid digits: ${r}`);t=i}return e},()=>new C2(t)}function v2(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Qf(e){this._context=e}Qf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Jf(e){return new Qf(e)}function k2(e){return e[0]}function S2(e){return e[1]}function T2(e,t){var r=wr(!0),i=null,n=Jf,a=null,o=w2(s);e=typeof e=="function"?e:e===void 0?k2:wr(e),t=typeof t=="function"?t:t===void 0?S2:wr(t);function s(l){var c,h=(l=v2(l)).length,u,f=!1,p;for(i==null&&(a=n(p=o())),c=0;c<=h;++c)!(c0)for(var i=e[0],n=t[0],a=e[r]-i,o=t[r]-n,s=-1,l;++s<=r;)l=s/r,this._basis.point(this._beta*e[s]+(1-this._beta)*(i+l*a),this._beta*t[s]+(1-this._beta)*(n+l*o));this._x=this._y=null,this._basis.lineEnd()},point:function(e,t){this._x.push(+e),this._y.push(+t)}};const E2=function e(t){function r(i){return t===1?new Sa(i):new np(i,t)}return r.beta=function(i){return e(+i)},r}(.85);function Qn(e,t,r){e._context.bezierCurveTo(e._x1+e._k*(e._x2-e._x0),e._y1+e._k*(e._y2-e._y0),e._x2+e._k*(e._x1-t),e._y2+e._k*(e._y1-r),e._x2,e._y2)}function Io(e,t){this._context=e,this._k=(1-t)/6}Io.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:Qn(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2,this._x1=e,this._y1=t;break;case 2:this._point=3;default:Qn(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const F2=function e(t){function r(i){return new Io(i,t)}return r.tension=function(i){return e(+i)},r}(0);function Po(e,t){this._context=e,this._k=(1-t)/6}Po.prototype={areaStart:je,areaEnd:je,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);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:Qn(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const $2=function e(t){function r(i){return new Po(i,t)}return r.tension=function(i){return e(+i)},r}(0);function No(e,t){this._context=e,this._k=(1-t)/6}No.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||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,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:Qn(this,e,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const D2=function e(t){function r(i){return new No(i,t)}return r.tension=function(i){return e(+i)},r}(0);function zo(e,t,r){var i=e._x1,n=e._y1,a=e._x2,o=e._y2;if(e._l01_a>dc){var s=2*e._l01_2a+3*e._l01_a*e._l12_a+e._l12_2a,l=3*e._l01_a*(e._l01_a+e._l12_a);i=(i*s-e._x0*e._l12_2a+e._x2*e._l01_2a)/l,n=(n*s-e._y0*e._l12_2a+e._y2*e._l01_2a)/l}if(e._l23_a>dc){var c=2*e._l23_2a+3*e._l23_a*e._l12_a+e._l12_2a,h=3*e._l23_a*(e._l23_a+e._l12_a);a=(a*c+e._x1*e._l23_2a-t*e._l12_2a)/h,o=(o*c+e._y1*e._l23_2a-r*e._l12_2a)/h}e._context.bezierCurveTo(i,n,a,o,e._x2,e._y2)}function ap(e,t){this._context=e,this._alpha=t}ap.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);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3;default:zo(this,e,t);break}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=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const R2=function e(t){function r(i){return t?new ap(i,t):new Io(i,0)}return r.alpha=function(i){return e(+i)},r}(.5);function sp(e,t){this._context=e,this._alpha=t}sp.prototype={areaStart:je,areaEnd:je,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);break}}},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=e,this._y3=t;break;case 1:this._point=2,this._context.moveTo(this._x4=e,this._y4=t);break;case 2:this._point=3,this._x5=e,this._y5=t;break;default:zo(this,e,t);break}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=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const O2=function e(t){function r(i){return t?new sp(i,t):new Po(i,0)}return r.alpha=function(i){return e(+i)},r}(.5);function op(e,t){this._context=e,this._alpha=t}op.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||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){if(e=+e,t=+t,this._point){var r=this._x2-e,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,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:zo(this,e,t);break}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=e,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const I2=function e(t){function r(i){return t?new op(i,t):new No(i,0)}return r.alpha=function(i){return e(+i)},r}(.5);function lp(e){this._context=e}lp.prototype={areaStart:je,areaEnd:je,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function P2(e){return new lp(e)}function mc(e){return e<0?-1:1}function yc(e,t,r){var i=e._x1-e._x0,n=t-e._x1,a=(e._y1-e._y0)/(i||n<0&&-0),o=(r-e._y1)/(n||i<0&&-0),s=(a*n+o*i)/(i+n);return(mc(a)+mc(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function xc(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function as(e,t,r){var i=e._x0,n=e._y0,a=e._x1,o=e._y1,s=(a-i)/3;e._context.bezierCurveTo(i+s,n+s*t,a-s,o-s*r,a,o)}function Jn(e){this._context=e}Jn.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:as(this,this._t0,xc(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,as(this,xc(this,r=yc(this,e,t)),r);break;default:as(this,this._t0,r=yc(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function cp(e){this._context=new hp(e)}(cp.prototype=Object.create(Jn.prototype)).point=function(e,t){Jn.prototype.point.call(this,t,e)};function hp(e){this._context=e}hp.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,i,n,a){this._context.bezierCurveTo(t,e,i,r,a,n)}};function N2(e){return new Jn(e)}function z2(e){return new cp(e)}function up(e){this._context=e}up.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var i=bc(e),n=bc(t),a=0,o=1;o=0;--t)n[t]=(o[t]-n[t+1])/a[t];for(a[r-1]=(e[r]+n[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function W2(e){return new Ta(e,.5)}function H2(e){return new Ta(e,0)}function j2(e){return new Ta(e,1)}function wi(e,t,r){this.k=e,this.x=t,this.y=r}wi.prototype={constructor:wi,scale:function(e){return e===1?this:new wi(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new wi(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};wi.prototype;var fp=typeof global=="object"&&global&&global.Object===Object&&global,U2=typeof self=="object"&&self&&self.Object===Object&&self,we=fp||U2||Function("return this")(),ta=we.Symbol,pp=Object.prototype,Y2=pp.hasOwnProperty,G2=pp.toString,pi=ta?ta.toStringTag:void 0;function V2(e){var t=Y2.call(e,pi),r=e[pi];try{e[pi]=void 0;var i=!0}catch{}var n=G2.call(e);return i&&(t?e[pi]=r:delete e[pi]),n}var X2=Object.prototype,Z2=X2.toString;function K2(e){return Z2.call(e)}var Q2="[object Null]",J2="[object Undefined]",_c=ta?ta.toStringTag:void 0;function Zr(e){return e==null?e===void 0?J2:Q2:_c&&_c in Object(e)?V2(e):K2(e)}function pr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var tC="[object AsyncFunction]",eC="[object Function]",rC="[object GeneratorFunction]",iC="[object Proxy]";function qo(e){if(!pr(e))return!1;var t=Zr(e);return t==eC||t==rC||t==tC||t==iC}var ss=we["__core-js_shared__"],Cc=function(){var e=/[^.]+$/.exec(ss&&ss.keys&&ss.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function nC(e){return!!Cc&&Cc in e}var aC=Function.prototype,sC=aC.toString;function dr(e){if(e!=null){try{return sC.call(e)}catch{}try{return e+""}catch{}}return""}var oC=/[\\^$.*+?()[\]{}|]/g,lC=/^\[object .+?Constructor\]$/,cC=Function.prototype,hC=Object.prototype,uC=cC.toString,fC=hC.hasOwnProperty,pC=RegExp("^"+uC.call(fC).replace(oC,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function dC(e){if(!pr(e)||nC(e))return!1;var t=qo(e)?pC:lC;return t.test(dr(e))}function gC(e,t){return e==null?void 0:e[t]}function gr(e,t){var r=gC(e,t);return dC(r)?r:void 0}var qi=gr(Object,"create");function mC(){this.__data__=qi?qi(null):{},this.size=0}function yC(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var xC="__lodash_hash_undefined__",bC=Object.prototype,_C=bC.hasOwnProperty;function CC(e){var t=this.__data__;if(qi){var r=t[e];return r===xC?void 0:r}return _C.call(t,e)?t[e]:void 0}var wC=Object.prototype,vC=wC.hasOwnProperty;function kC(e){var t=this.__data__;return qi?t[e]!==void 0:vC.call(t,e)}var SC="__lodash_hash_undefined__";function TC(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=qi&&t===void 0?SC:t,this}function hr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t-1}function $C(e,t){var r=this.__data__,i=La(r,e);return i<0?(++this.size,r.push([e,t])):r[i][1]=t,this}function $e(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=sw}function Ea(e){return e!=null&&xp(e.length)&&!qo(e)}function ow(e){return Qi(e)&&Ea(e)}function lw(){return!1}var bp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Lc=bp&&typeof module=="object"&&module&&!module.nodeType&&module,cw=Lc&&Lc.exports===bp,Bc=cw?we.Buffer:void 0,hw=Bc?Bc.isBuffer:void 0,Ho=hw||lw,uw="[object Object]",fw=Function.prototype,pw=Object.prototype,_p=fw.toString,dw=pw.hasOwnProperty,gw=_p.call(Object);function mw(e){if(!Qi(e)||Zr(e)!=uw)return!1;var t=mp(e);if(t===null)return!0;var r=dw.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&_p.call(r)==gw}var yw="[object Arguments]",xw="[object Array]",bw="[object Boolean]",_w="[object Date]",Cw="[object Error]",ww="[object Function]",vw="[object Map]",kw="[object Number]",Sw="[object Object]",Tw="[object RegExp]",Aw="[object Set]",Lw="[object String]",Bw="[object WeakMap]",Mw="[object ArrayBuffer]",Ew="[object DataView]",Fw="[object Float32Array]",$w="[object Float64Array]",Dw="[object Int8Array]",Rw="[object Int16Array]",Ow="[object Int32Array]",Iw="[object Uint8Array]",Pw="[object Uint8ClampedArray]",Nw="[object Uint16Array]",zw="[object Uint32Array]",gt={};gt[Fw]=gt[$w]=gt[Dw]=gt[Rw]=gt[Ow]=gt[Iw]=gt[Pw]=gt[Nw]=gt[zw]=!0;gt[yw]=gt[xw]=gt[Mw]=gt[bw]=gt[Ew]=gt[_w]=gt[Cw]=gt[ww]=gt[vw]=gt[kw]=gt[Sw]=gt[Tw]=gt[Aw]=gt[Lw]=gt[Bw]=!1;function qw(e){return Qi(e)&&xp(e.length)&&!!gt[Zr(e)]}function Ww(e){return function(t){return e(t)}}var Cp=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Mi=Cp&&typeof module=="object"&&module&&!module.nodeType&&module,Hw=Mi&&Mi.exports===Cp,os=Hw&&fp.process,Mc=function(){try{var e=Mi&&Mi.require&&Mi.require("util").types;return e||os&&os.binding&&os.binding("util")}catch{}}(),Ec=Mc&&Mc.isTypedArray,jo=Ec?Ww(Ec):qw;function Xs(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var jw=Object.prototype,Uw=jw.hasOwnProperty;function Yw(e,t,r){var i=e[t];(!(Uw.call(e,t)&&Aa(i,r))||r===void 0&&!(t in e))&&Wo(e,t,r)}function Gw(e,t,r,i){var n=!r;r||(r={});for(var a=-1,o=t.length;++a-1&&e%1==0&&e0){if(++t>=hv)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var dv=pv(cv);function gv(e,t){return dv(ov(e,t,Sp),e+"")}function mv(e,t,r){if(!pr(r))return!1;var i=typeof t;return(i=="number"?Ea(r)&&wp(t,r.length):i=="string"&&t in r)?Aa(r[t],e):!1}function yv(e){return gv(function(t,r){var i=-1,n=r.length,a=n>1?r[n-1]:void 0,o=n>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(n--,a):void 0,o&&mv(r[0],r[1],o)&&(a=n<3?void 0:a,n=1),t=Object(t);++is.args);Dn(o),i=Lt(i,[...o])}else i=r.args;if(!i)return;let n=po(e,t);const a="config";return i[a]!==void 0&&(n==="flowchart-v2"&&(n="flowchart"),i[n]=i[a],delete i[a]),i},"detectInit"),Tp=d(function(e,t=null){var r,i;try{const n=new RegExp(`[%]{2}(?![{]${Cv.source})(?=[}][%]{2}).* +`,"ig");e=e.trim().replace(n,"").replace(/'/gm,'"'),$.debug(`Detecting diagram directive${t!==null?" type:"+t:""} based on the text:${e}`);let a;const o=[];for(;(a=Li.exec(e))!==null;)if(a.index===Li.lastIndex&&Li.lastIndex++,a&&!t||t&&((r=a[1])!=null&&r.match(t))||t&&((i=a[2])!=null&&i.match(t))){const s=a[1]?a[1]:a[2],l=a[3]?a[3].trim():a[4]?JSON.parse(a[4].trim()):null;o.push({type:s,args:l})}return o.length===0?{type:e,args:null}:o.length===1?o[0]:o}catch(n){return $.error(`ERROR: ${n.message} - Unable to parse directive type: '${t}' based on the text: '${e}'`),{type:void 0,args:null}}},"detectDirective"),vv=d(function(e){return e.replace(Li,"")},"removeDirectives"),kv=d(function(e,t){for(const[r,i]of t.entries())if(i.match(e))return r;return-1},"isSubstringInArray");function Uo(e,t){if(!e)return t;const r=`curve${e.charAt(0).toUpperCase()+e.slice(1)}`;return _v[r]??t}d(Uo,"interpolateToCurve");function Ap(e,t){const r=e.trim();if(r)return t.securityLevel!=="loose"?kf(r):r}d(Ap,"formatUrl");var Sv=d((e,...t)=>{const r=e.split("."),i=r.length-1,n=r[i];let a=window;for(let o=0;o{r+=Yo(n,t),t=n});const i=r/2;return Go(e,i)}d(Lp,"traverseEdge");function Bp(e){return e.length===1?e[0]:Lp(e)}d(Bp,"calcLabelPosition");var $c=d((e,t=2)=>{const r=Math.pow(10,t);return Math.round(e*r)/r},"roundNumber"),Go=d((e,t)=>{let r,i=t;for(const n of e){if(r){const a=Yo(n,r);if(a=1)return{x:n.x,y:n.y};if(o>0&&o<1)return{x:$c((1-o)*r.x+o*n.x,5),y:$c((1-o)*r.y+o*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),Tv=d((e,t,r)=>{$.info(`our points ${JSON.stringify(t)}`),t[0]!==r&&(t=t.reverse());const n=Go(t,25),a=e?10:5,o=Math.atan2(t[0].y-n.y,t[0].x-n.x),s={x:0,y:0};return s.x=Math.sin(o)*a+(t[0].x+n.x)/2,s.y=-Math.cos(o)*a+(t[0].y+n.y)/2,s},"calcCardinalityPosition");function Mp(e,t,r){const i=structuredClone(r);$.info("our points",i),t!=="start_left"&&t!=="start_right"&&i.reverse();const n=25+e,a=Go(i,n),o=10+e*.5,s=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return t==="start_left"?(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):t==="end_right"?(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):t==="end_left"?(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}d(Mp,"calcTerminalLabelPosition");function Ep(e){let t="",r="";for(const i of e)i!==void 0&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":t=t+i+";");return{style:t,labelStyle:r}}d(Ep,"getStylesFromArray");var Dc=0,Av=d(()=>(Dc++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Dc),"generateId");function Fp(e){let t="";const r="0123456789abcdef",i=r.length;for(let n=0;nFp(e.length),"random"),Bv=d(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"),Mv=d(function(e,t){const r=t.text.replace(Xr.lineBreakRegex," "),[,i]=Fa(t.fontSize),n=e.append("text");n.attr("x",t.x),n.attr("y",t.y),n.style("text-anchor",t.anchor),n.style("font-family",t.fontFamily),n.style("font-size",i),n.style("font-weight",t.fontWeight),n.attr("fill",t.fill),t.class!==void 0&&n.attr("class",t.class);const a=n.append("tspan");return a.attr("x",t.x+t.textMargin*2),a.attr("fill",t.fill),a.text(r),n},"drawSimpleText"),Ev=Ki((e,t,r)=>{if(!e||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),Xr.lineBreakRegex.test(e)))return e;const i=e.split(" ").filter(Boolean),n=[];let a="";return i.forEach((o,s)=>{const l=Yr(`${o} `,r),c=Yr(a,r);if(l>t){const{hyphenatedStrings:f,remainingWord:p}=Fv(o,t,"-",r);n.push(a,...f),a=p}else c+l>=t?(n.push(a),a=o):a=[a,o].filter(Boolean).join(" ");s+1===i.length&&n.push(a)}),n.filter(o=>o!=="").join(r.joinWith)},(e,t,r)=>`${e}${t}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),Fv=Ki((e,t,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const n=[...e],a=[];let o="";return n.forEach((s,l)=>{const c=`${o}${s}`;if(Yr(c,i)>=t){const u=l+1,f=n.length===u,p=`${c}${r}`;a.push(f?c:p),o=""}else o=c}),{hyphenatedStrings:a,remainingWord:o}},(e,t,r="-",i)=>`${e}${t}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);function $p(e,t){return Vo(e,t).height}d($p,"calculateTextHeight");function Yr(e,t){return Vo(e,t).width}d(Yr,"calculateTextWidth");var Vo=Ki((e,t)=>{const{fontSize:r=12,fontFamily:i="Arial",fontWeight:n=400}=t;if(!e)return{width:0,height:0};const[,a]=Fa(r),o=["sans-serif",i],s=e.split(Xr.lineBreakRegex),l=[],c=lt("body");if(!c.remove)return{width:0,height:0,lineHeight:0};const h=c.append("svg");for(const f of o){let p=0;const g={width:0,height:0,lineHeight:0};for(const m of s){const y=Bv();y.text=m||bv;const x=Mv(h,y).style("font-size",a).style("font-weight",n).style("font-family",f),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),p=Math.round(b.height),g.height+=p,g.lineHeight=Math.round(Math.max(g.lineHeight,p))}l.push(g)}h.remove();const u=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[u]},(e,t)=>`${e}${t.fontSize}${t.fontWeight}${t.fontFamily}`),Or,$v=(Or=class{constructor(t=!1,r){this.count=0,this.count=r?r.length:0,this.next=t?()=>this.count++:()=>Date.now()}},d(Or,"InitIDGenerator"),Or),gn,Dv=d(function(e){return gn=gn||document.createElement("div"),e=escape(e).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),gn.innerHTML=e,unescape(gn.textContent)},"entityDecode");function Xo(e){return"str"in e}d(Xo,"isDetailedError");var Rv=d((e,t,r,i)=>{var a;if(!i)return;const n=(a=e.node())==null?void 0:a.getBBox();n&&e.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",t)},"insertTitle"),Fa=d(e=>{if(typeof e=="number")return[e,e+"px"];const t=parseInt(e??"",10);return Number.isNaN(t)?[void 0,void 0]:e===String(t)?[t,e+"px"]:[t,e]},"parseFontSize");function Zo(e,t){return xv({},e,t)}d(Zo,"cleanAndMerge");var ge={assignWithDepth:Lt,wrapLabel:Ev,calculateTextHeight:$p,calculateTextWidth:Yr,calculateTextDimensions:Vo,cleanAndMerge:Zo,detectInit:wv,detectDirective:Tp,isSubstringInArray:kv,interpolateToCurve:Uo,calcLabelPosition:Bp,calcCardinalityPosition:Tv,calcTerminalLabelPosition:Mp,formatUrl:Ap,getStylesFromArray:Ep,generateId:Av,random:Lv,runFunc:Sv,entityDecode:Dv,insertTitle:Rv,parseFontSize:Fa,InitIDGenerator:$v},Ov=d(function(e){let t=e;return t=t.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),t=t.replace(/#\w+;/g,function(r){const i=r.substring(1,r.length-1);return/^\+?\d+$/.test(i)?"fl°°"+i+"¶ß":"fl°"+i+"¶ß"}),t},"encodeEntities"),Qr=d(function(e){return e.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),hB=d((e,t,{counter:r=0,prefix:i,suffix:n})=>`${i?`${i}_`:""}${e}_${t}_${r}${n?`_${n}`:""}`,"getEdgeId");function Nt(e){return e??null}d(Nt,"handleUndefinedAttr");function Ko(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}let mr=Ko();function Dp(e){mr=e}const Rp=/[&<>"']/,Iv=new RegExp(Rp.source,"g"),Op=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,Pv=new RegExp(Op.source,"g"),Nv={"&":"&","<":"<",">":">",'"':""","'":"'"},Rc=e=>Nv[e];function Gt(e,t){if(t){if(Rp.test(e))return e.replace(Iv,Rc)}else if(Op.test(e))return e.replace(Pv,Rc);return e}const zv=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function qv(e){return e.replace(zv,(t,r)=>(r=r.toLowerCase(),r==="colon"?":":r.charAt(0)==="#"?r.charAt(1)==="x"?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""))}const Wv=/(^|[^\[])\^/g;function ut(e,t){let r=typeof e=="string"?e:e.source;t=t||"";const i={replace:(n,a)=>{let o=typeof a=="string"?a:a.source;return o=o.replace(Wv,"$1"),r=r.replace(n,o),i},getRegex:()=>new RegExp(r,t)};return i}function Oc(e){try{e=encodeURI(e).replace(/%25/g,"%")}catch{return null}return e}const Ei={exec:()=>null};function Ic(e,t){const r=e.replace(/\|/g,(a,o,s)=>{let l=!1,c=o;for(;--c>=0&&s[c]==="\\";)l=!l;return l?"|":" |"}),i=r.split(/ \|/);let n=0;if(i[0].trim()||i.shift(),i.length>0&&!i[i.length-1].trim()&&i.pop(),t)if(i.length>t)i.splice(t);else for(;i.length{const a=n.match(/^\s+/);if(a===null)return n;const[o]=a;return o.length>=i.length?n.slice(i.length):n}).join(` +`)}class na{constructor(t){dt(this,"options");dt(this,"rules");dt(this,"lexer");this.options=t||mr}space(t){const r=this.rules.block.newline.exec(t);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(t){const r=this.rules.block.code.exec(t);if(r){const i=r[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?i:di(i,` +`)}}}fences(t){const r=this.rules.block.fences.exec(t);if(r){const i=r[0],n=jv(i,r[3]||"");return{type:"code",raw:i,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:n}}}heading(t){const r=this.rules.block.heading.exec(t);if(r){let i=r[2].trim();if(/#$/.test(i)){const n=di(i,"#");(this.options.pedantic||!n||/ $/.test(n))&&(i=n.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:i,tokens:this.lexer.inline(i)}}}hr(t){const r=this.rules.block.hr.exec(t);if(r)return{type:"hr",raw:di(r[0],` +`)}}blockquote(t){const r=this.rules.block.blockquote.exec(t);if(r){let i=di(r[0],` +`).split(` +`),n="",a="";const o=[];for(;i.length>0;){let s=!1;const l=[];let c;for(c=0;c/.test(i[c]))l.push(i[c]),s=!0;else if(!s)l.push(i[c]);else break;i=i.slice(c);const h=l.join(` +`),u=h.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,` + $1`).replace(/^ {0,3}>[ \t]?/gm,"");n=n?`${n} +${h}`:h,a=a?`${a} +${u}`:u;const f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(u,o,!0),this.lexer.state.top=f,i.length===0)break;const p=o[o.length-1];if((p==null?void 0:p.type)==="code")break;if((p==null?void 0:p.type)==="blockquote"){const g=p,m=g.raw+` +`+i.join(` +`),y=this.blockquote(m);o[o.length-1]=y,n=n.substring(0,n.length-g.raw.length)+y.raw,a=a.substring(0,a.length-g.text.length)+y.text;break}else if((p==null?void 0:p.type)==="list"){const g=p,m=g.raw+` +`+i.join(` +`),y=this.list(m);o[o.length-1]=y,n=n.substring(0,n.length-p.raw.length)+y.raw,a=a.substring(0,a.length-g.raw.length)+y.raw,i=m.substring(o[o.length-1].raw.length).split(` +`);continue}}return{type:"blockquote",raw:n,tokens:o,text:a}}}list(t){let r=this.rules.block.list.exec(t);if(r){let i=r[1].trim();const n=i.length>1,a={type:"list",raw:"",ordered:n,start:n?+i.slice(0,-1):"",loose:!1,items:[]};i=n?`\\d{1,9}\\${i.slice(-1)}`:`\\${i}`,this.options.pedantic&&(i=n?i:"[*+-]");const o=new RegExp(`^( {0,3}${i})((?:[ ][^\\n]*)?(?:\\n|$))`);let s=!1;for(;t;){let l=!1,c="",h="";if(!(r=o.exec(t))||this.rules.block.hr.test(t))break;c=r[0],t=t.substring(c.length);let u=r[2].split(` +`,1)[0].replace(/^\t+/,x=>" ".repeat(3*x.length)),f=t.split(` +`,1)[0],p=!u.trim(),g=0;if(this.options.pedantic?(g=2,h=u.trimStart()):p?g=r[1].length+1:(g=r[2].search(/[^ ]/),g=g>4?1:g,h=u.slice(g),g+=r[1].length),p&&/^ *$/.test(f)&&(c+=f+` +`,t=t.substring(f.length+1),l=!0),!l){const x=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,g-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),_=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:\`\`\`|~~~)`),v=new RegExp(`^ {0,${Math.min(3,g-1)}}#`);for(;t;){const k=t.split(` +`,1)[0];if(f=k,this.options.pedantic&&(f=f.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),_.test(f)||v.test(f)||x.test(f)||b.test(t))break;if(f.search(/[^ ]/)>=g||!f.trim())h+=` +`+f.slice(g);else{if(p||u.search(/[^ ]/)>=4||_.test(u)||v.test(u)||b.test(u))break;h+=` +`+f}!p&&!f.trim()&&(p=!0),c+=k+` +`,t=t.substring(k.length+1),u=f.slice(g)}}a.loose||(s?a.loose=!0:/\n *\n *$/.test(c)&&(s=!0));let m=null,y;this.options.gfm&&(m=/^\[[ xX]\] /.exec(h),m&&(y=m[0]!=="[ ] ",h=h.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:c,task:!!m,checked:y,loose:!1,text:h,tokens:[]}),a.raw+=c}a.items[a.items.length-1].raw=a.items[a.items.length-1].raw.trimEnd(),a.items[a.items.length-1].text=a.items[a.items.length-1].text.trimEnd(),a.raw=a.raw.trimEnd();for(let l=0;lu.type==="space"),h=c.length>0&&c.some(u=>/\n.*\n/.test(u.raw));a.loose=h}if(a.loose)for(let l=0;l$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):r[3];return{type:"def",tag:i,raw:r[0],href:n,title:a}}}table(t){const r=this.rules.block.table.exec(t);if(!r||!/[:|]/.test(r[2]))return;const i=Ic(r[1]),n=r[2].replace(/^\||\| *$/g,"").split("|"),a=r[3]&&r[3].trim()?r[3].replace(/\n[ \t]*$/,"").split(` +`):[],o={type:"table",raw:r[0],header:[],align:[],rows:[]};if(i.length===n.length){for(const s of n)/^ *-+: *$/.test(s)?o.align.push("right"):/^ *:-+: *$/.test(s)?o.align.push("center"):/^ *:-+ *$/.test(s)?o.align.push("left"):o.align.push(null);for(let s=0;s({text:l,tokens:this.lexer.inline(l),header:!1,align:o.align[c]})));return o}}lheading(t){const r=this.rules.block.lheading.exec(t);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(t){const r=this.rules.block.paragraph.exec(t);if(r){const i=r[1].charAt(r[1].length-1)===` +`?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:i,tokens:this.lexer.inline(i)}}}text(t){const r=this.rules.block.text.exec(t);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(t){const r=this.rules.inline.escape.exec(t);if(r)return{type:"escape",raw:r[0],text:Gt(r[1])}}tag(t){const r=this.rules.inline.tag.exec(t);if(r)return!this.lexer.state.inLink&&/^/i.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(t){const r=this.rules.inline.link.exec(t);if(r){const i=r[2].trim();if(!this.options.pedantic&&/^$/.test(i))return;const o=di(i.slice(0,-1),"\\");if((i.length-o.length)%2===0)return}else{const o=Hv(r[2],"()");if(o>-1){const l=(r[0].indexOf("!")===0?5:4)+r[1].length+o;r[2]=r[2].substring(0,o),r[0]=r[0].substring(0,l).trim(),r[3]=""}}let n=r[2],a="";if(this.options.pedantic){const o=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);o&&(n=o[1],a=o[3])}else a=r[3]?r[3].slice(1,-1):"";return n=n.trim(),/^$/.test(i)?n=n.slice(1):n=n.slice(1,-1)),Pc(r,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer)}}reflink(t,r){let i;if((i=this.rules.inline.reflink.exec(t))||(i=this.rules.inline.nolink.exec(t))){const n=(i[2]||i[1]).replace(/\s+/g," "),a=r[n.toLowerCase()];if(!a){const o=i[0].charAt(0);return{type:"text",raw:o,text:o}}return Pc(i,a,i[0],this.lexer)}}emStrong(t,r,i=""){let n=this.rules.inline.emStrongLDelim.exec(t);if(!n||n[3]&&i.match(/[\p{L}\p{N}]/u))return;if(!(n[1]||n[2]||"")||!i||this.rules.inline.punctuation.exec(i)){const o=[...n[0]].length-1;let s,l,c=o,h=0;const u=n[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,r=r.slice(-1*t.length+o);(n=u.exec(r))!=null;){if(s=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!s)continue;if(l=[...s].length,n[3]||n[4]){c+=l;continue}else if((n[5]||n[6])&&o%3&&!((o+l)%3)){h+=l;continue}if(c-=l,c>0)continue;l=Math.min(l,l+c+h);const f=[...n[0]][0].length,p=t.slice(0,o+n.index+f+l);if(Math.min(o,l)%2){const m=p.slice(1,-1);return{type:"em",raw:p,text:m,tokens:this.lexer.inlineTokens(m)}}const g=p.slice(2,-2);return{type:"strong",raw:p,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(t){const r=this.rules.inline.code.exec(t);if(r){let i=r[2].replace(/\n/g," ");const n=/[^ ]/.test(i),a=/^ /.test(i)&&/ $/.test(i);return n&&a&&(i=i.substring(1,i.length-1)),i=Gt(i,!0),{type:"codespan",raw:r[0],text:i}}}br(t){const r=this.rules.inline.br.exec(t);if(r)return{type:"br",raw:r[0]}}del(t){const r=this.rules.inline.del.exec(t);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(t){const r=this.rules.inline.autolink.exec(t);if(r){let i,n;return r[2]==="@"?(i=Gt(r[1]),n="mailto:"+i):(i=Gt(r[1]),n=i),{type:"link",raw:r[0],text:i,href:n,tokens:[{type:"text",raw:i,text:i}]}}}url(t){var i;let r;if(r=this.rules.inline.url.exec(t)){let n,a;if(r[2]==="@")n=Gt(r[0]),a="mailto:"+n;else{let o;do o=r[0],r[0]=((i=this.rules.inline._backpedal.exec(r[0]))==null?void 0:i[0])??"";while(o!==r[0]);n=Gt(r[0]),r[1]==="www."?a="http://"+r[0]:a=r[0]}return{type:"link",raw:r[0],text:n,href:a,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(t){const r=this.rules.inline.text.exec(t);if(r){let i;return this.lexer.state.inRawBlock?i=r[0]:i=Gt(r[0]),{type:"text",raw:r[0],text:i}}}}const Uv=/^(?: *(?:\n|$))+/,Yv=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,Gv=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Ji=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Vv=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Ip=/(?:[*+-]|\d{1,9}[.)])/,Pp=ut(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,Ip).replace(/blockCode/g,/ {4}/).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/).getRegex(),Qo=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,Xv=/^[^\n]+/,Jo=/(?!\s*\])(?:\\.|[^\[\]\\])+/,Zv=ut(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",Jo).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Kv=ut(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Ip).getRegex(),$a="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",tl=/|$))/,Qv=ut("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",tl).replace("tag",$a).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Np=ut(Qo).replace("hr",Ji).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",")|<(?:script|pre|style|textarea|!--)").replace("tag",$a).getRegex(),Jv=ut(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",Np).getRegex(),el={blockquote:Jv,code:Yv,def:Zv,fences:Gv,heading:Vv,hr:Ji,html:Qv,lheading:Pp,list:Kv,newline:Uv,paragraph:Np,table:Ei,text:Xv},Nc=ut("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Ji).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",$a).getRegex(),tk={...el,table:Nc,paragraph:ut(Qo).replace("hr",Ji).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Nc).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",$a).getRegex()},ek={...el,html:ut(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",tl).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:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ei,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ut(Qo).replace("hr",Ji).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Pp).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},zp=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,rk=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,qp=/^( {2,}|\\)\n(?!\s*$)/,ik=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,sk=ut(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,tn).getRegex(),ok=ut("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,tn).getRegex(),lk=ut("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,tn).getRegex(),ck=ut(/\\([punct])/,"gu").replace(/punct/g,tn).getRegex(),hk=ut(/^<(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(),uk=ut(tl).replace("(?:-->|$)","-->").getRegex(),fk=ut("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",uk).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),aa=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,pk=ut(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",aa).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Wp=ut(/^!?\[(label)\]\[(ref)\]/).replace("label",aa).replace("ref",Jo).getRegex(),Hp=ut(/^!?\[(ref)\](?:\[\])?/).replace("ref",Jo).getRegex(),dk=ut("reflink|nolink(?!\\()","g").replace("reflink",Wp).replace("nolink",Hp).getRegex(),rl={_backpedal:Ei,anyPunctuation:ck,autolink:hk,blockSkip:ak,br:qp,code:rk,del:Ei,emStrongLDelim:sk,emStrongRDelimAst:ok,emStrongRDelimUnd:lk,escape:zp,link:pk,nolink:Hp,punctuation:nk,reflink:Wp,reflinkSearch:dk,tag:fk,text:ik,url:Ei},gk={...rl,link:ut(/^!?\[(label)\]\((.*?)\)/).replace("label",aa).getRegex(),reflink:ut(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",aa).getRegex()},Zs={...rl,escape:ut(zp).replace("])","~|])").getRegex(),url:ut(/^((?: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\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(c.length));let n,a,o;for(;t;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(s=>(n=s.call({lexer:this},t,r))?(t=t.substring(n.raw.length),r.push(n),!0):!1))){if(n=this.tokenizer.space(t)){t=t.substring(n.raw.length),n.raw.length===1&&r.length>0?r[r.length-1].raw+=` +`:r.push(n);continue}if(n=this.tokenizer.code(t)){t=t.substring(n.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` +`+n.raw,a.text+=` +`+n.text,this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(n);continue}if(n=this.tokenizer.fences(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.heading(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.hr(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.blockquote(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.list(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.html(t)){t=t.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.def(t)){t=t.substring(n.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` +`+n.raw,a.text+=` +`+n.raw,this.inlineQueue[this.inlineQueue.length-1].src=a.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),r.push(n);continue}if(n=this.tokenizer.lheading(t)){t=t.substring(n.raw.length),r.push(n);continue}if(o=t,this.options.extensions&&this.options.extensions.startBlock){let s=1/0;const l=t.slice(1);let c;this.options.extensions.startBlock.forEach(h=>{c=h.call({lexer:this},l),typeof c=="number"&&c>=0&&(s=Math.min(s,c))}),s<1/0&&s>=0&&(o=t.substring(0,s+1))}if(this.state.top&&(n=this.tokenizer.paragraph(o))){a=r[r.length-1],i&&(a==null?void 0:a.type)==="paragraph"?(a.raw+=` +`+n.raw,a.text+=` +`+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(n),i=o.length!==t.length,t=t.substring(n.raw.length);continue}if(n=this.tokenizer.text(t)){t=t.substring(n.raw.length),a=r[r.length-1],a&&a.type==="text"?(a.raw+=` +`+n.raw,a.text+=` +`+n.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(n);continue}if(t){const s="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,r}inline(t,r=[]){return this.inlineQueue.push({src:t,tokens:r}),r}inlineTokens(t,r=[]){let i,n,a,o=t,s,l,c;if(this.tokens.links){const h=Object.keys(this.tokens.links);if(h.length>0)for(;(s=this.tokenizer.rules.inline.reflinkSearch.exec(o))!=null;)h.includes(s[0].slice(s[0].lastIndexOf("[")+1,-1))&&(o=o.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(s=this.tokenizer.rules.inline.blockSkip.exec(o))!=null;)o=o.slice(0,s.index)+"["+"a".repeat(s[0].length-2)+"]"+o.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(s=this.tokenizer.rules.inline.anyPunctuation.exec(o))!=null;)o=o.slice(0,s.index)+"++"+o.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;t;)if(l||(c=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(h=>(i=h.call({lexer:this},t,r))?(t=t.substring(i.raw.length),r.push(i),!0):!1))){if(i=this.tokenizer.escape(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.tag(t)){t=t.substring(i.raw.length),n=r[r.length-1],n&&i.type==="text"&&n.type==="text"?(n.raw+=i.raw,n.text+=i.text):r.push(i);continue}if(i=this.tokenizer.link(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(i.raw.length),n=r[r.length-1],n&&i.type==="text"&&n.type==="text"?(n.raw+=i.raw,n.text+=i.text):r.push(i);continue}if(i=this.tokenizer.emStrong(t,o,c)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.codespan(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.br(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.del(t)){t=t.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.autolink(t)){t=t.substring(i.raw.length),r.push(i);continue}if(!this.state.inLink&&(i=this.tokenizer.url(t))){t=t.substring(i.raw.length),r.push(i);continue}if(a=t,this.options.extensions&&this.options.extensions.startInline){let h=1/0;const u=t.slice(1);let f;this.options.extensions.startInline.forEach(p=>{f=p.call({lexer:this},u),typeof f=="number"&&f>=0&&(h=Math.min(h,f))}),h<1/0&&h>=0&&(a=t.substring(0,h+1))}if(i=this.tokenizer.inlineText(a)){t=t.substring(i.raw.length),i.raw.slice(-1)!=="_"&&(c=i.raw.slice(-1)),l=!0,n=r[r.length-1],n&&n.type==="text"?(n.raw+=i.raw,n.text+=i.text):r.push(i);continue}if(t){const h="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}}class sa{constructor(t){dt(this,"options");dt(this,"parser");this.options=t||mr}space(t){return""}code({text:t,lang:r,escaped:i}){var o;const n=(o=(r||"").match(/^\S*/))==null?void 0:o[0],a=t.replace(/\n$/,"")+` +`;return n?'
'+(i?a:Gt(a,!0))+`
+`:"
"+(i?a:Gt(a,!0))+`
+`}blockquote({tokens:t}){return`
+${this.parser.parse(t)}
+`}html({text:t}){return t}heading({tokens:t,depth:r}){return`${this.parser.parseInline(t)} +`}hr(t){return`
+`}list(t){const r=t.ordered,i=t.start;let n="";for(let s=0;s +`+n+" +`}listitem(t){let r="";if(t.task){const i=this.checkbox({checked:!!t.checked});t.loose?t.tokens.length>0&&t.tokens[0].type==="paragraph"?(t.tokens[0].text=i+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&t.tokens[0].tokens[0].type==="text"&&(t.tokens[0].tokens[0].text=i+" "+t.tokens[0].tokens[0].text)):t.tokens.unshift({type:"text",raw:i+" ",text:i+" "}):r+=i+" "}return r+=this.parser.parse(t.tokens,!!t.loose),`
  • ${r}
  • +`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    +`}table(t){let r="",i="";for(let a=0;a${n}`),` + +`+r+` +`+n+`
    +`}tablerow({text:t}){return` +${t} +`}tablecell(t){const r=this.parser.parseInline(t.tokens),i=t.header?"th":"td";return(t.align?`<${i} align="${t.align}">`:`<${i}>`)+r+` +`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${t}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:r,tokens:i}){const n=this.parser.parseInline(i),a=Oc(t);if(a===null)return n;t=a;let o='
    ",o}image({href:t,title:r,text:i}){const n=Oc(t);if(n===null)return i;t=n;let a=`${i}{const c=s[l].flat(1/0);i=i.concat(this.walkTokens(c,r))}):s.tokens&&(i=i.concat(this.walkTokens(s.tokens,r)))}}return i}use(...t){const r=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach(i=>{const n={...i};if(n.async=this.defaults.async||n.async||!1,i.extensions&&(i.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){const o=r.renderers[a.name];o?r.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=o.apply(this,s)),l}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");const o=r[a.level];o?o.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),n.extensions=r),i.renderer){const a=this.defaults.renderer||new sa(this.defaults);for(const o in i.renderer){if(!(o in a))throw new Error(`renderer '${o}' does not exist`);if(["options","parser"].includes(o))continue;const s=o;let l=i.renderer[s];i.useNewRenderer||(l=si(this,Fe,jp).call(this,l,s,a));const c=a[s];a[s]=(...h)=>{let u=l.apply(a,h);return u===!1&&(u=c.apply(a,h)),u||""}}n.renderer=a}if(i.tokenizer){const a=this.defaults.tokenizer||new na(this.defaults);for(const o in i.tokenizer){if(!(o in a))throw new Error(`tokenizer '${o}' does not exist`);if(["options","rules","lexer"].includes(o))continue;const s=o,l=i.tokenizer[s],c=a[s];a[s]=(...h)=>{let u=l.apply(a,h);return u===!1&&(u=c.apply(a,h)),u}}n.tokenizer=a}if(i.hooks){const a=this.defaults.hooks||new Fi;for(const o in i.hooks){if(!(o in a))throw new Error(`hook '${o}' does not exist`);if(o==="options")continue;const s=o,l=i.hooks[s],c=a[s];Fi.passThroughHooks.has(o)?a[s]=h=>{if(this.defaults.async)return Promise.resolve(l.call(a,h)).then(f=>c.call(a,f));const u=l.call(a,h);return c.call(a,u)}:a[s]=(...h)=>{let u=l.apply(a,h);return u===!1&&(u=c.apply(a,h)),u}}n.hooks=a}if(i.walkTokens){const a=this.defaults.walkTokens,o=i.walkTokens;n.walkTokens=function(s){let l=[];return l.push(o.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...n}}),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,r){return me.lex(t,r??this.defaults)}parser(t,r){return ye.parse(t,r??this.defaults)}}Fe=new WeakSet,jp=function(t,r,i){switch(r){case"heading":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,i.parser.parseInline(n.tokens),n.depth,qv(i.parser.parseInline(n.tokens,i.parser.textRenderer)))};case"code":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.text,n.lang,!!n.escaped)};case"table":return function(n){if(!n.type||n.type!==r)return t.apply(this,arguments);let a="",o="";for(let l=0;l0&&h.tokens[0].type==="paragraph"?(h.tokens[0].text=g+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&h.tokens[0].tokens[0].type==="text"&&(h.tokens[0].tokens[0].text=g+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:g+" "}):p+=g+" "}p+=this.parser.parse(h.tokens,s),l+=this.listitem({type:"list_item",raw:p,text:p,task:f,checked:!!u,loose:s,tokens:h.tokens})}return t.call(this,l,a,o)};case"html":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.text,n.block)};case"paragraph":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,this.parser.parseInline(n.tokens))};case"escape":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.text)};case"link":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.href,n.title,this.parser.parseInline(n.tokens))};case"image":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.href,n.title,n.text)};case"strong":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,this.parser.parseInline(n.tokens))};case"em":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,this.parser.parseInline(n.tokens))};case"codespan":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.text)};case"del":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,this.parser.parseInline(n.tokens))};case"text":return function(n){return!n.type||n.type!==r?t.apply(this,arguments):t.call(this,n.text)}}return t},Ks=function(t,r){return(i,n)=>{const a={...n},o={...this.defaults,...a};this.defaults.async===!0&&a.async===!1&&(o.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),o.async=!0);const s=si(this,Fe,Up).call(this,!!o.silent,!!o.async);if(typeof i>"u"||i===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof i!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(i)+", string expected"));if(o.hooks&&(o.hooks.options=o),o.async)return Promise.resolve(o.hooks?o.hooks.preprocess(i):i).then(l=>t(l,o)).then(l=>o.hooks?o.hooks.processAllTokens(l):l).then(l=>o.walkTokens?Promise.all(this.walkTokens(l,o.walkTokens)).then(()=>l):l).then(l=>r(l,o)).then(l=>o.hooks?o.hooks.postprocess(l):l).catch(s);try{o.hooks&&(i=o.hooks.preprocess(i));let l=t(i,o);o.hooks&&(l=o.hooks.processAllTokens(l)),o.walkTokens&&this.walkTokens(l,o.walkTokens);let c=r(l,o);return o.hooks&&(c=o.hooks.postprocess(c)),c}catch(l){return s(l)}}},Up=function(t,r){return i=>{if(i.message+=` +Please report this to https://github.com/markedjs/marked.`,t){const n="

    An error occurred:

    "+Gt(i.message+"",!0)+"
    ";return r?Promise.resolve(n):n}if(r)return Promise.reject(i);throw i}};const ur=new yk;function ht(e,t){return ur.parse(e,t)}ht.options=ht.setOptions=function(e){return ur.setOptions(e),ht.defaults=ur.defaults,Dp(ht.defaults),ht};ht.getDefaults=Ko;ht.defaults=mr;ht.use=function(...e){return ur.use(...e),ht.defaults=ur.defaults,Dp(ht.defaults),ht};ht.walkTokens=function(e,t){return ur.walkTokens(e,t)};ht.parseInline=ur.parseInline;ht.Parser=ye;ht.parser=ye.parse;ht.Renderer=sa;ht.TextRenderer=il;ht.Lexer=me;ht.lexer=me.lex;ht.Tokenizer=na;ht.Hooks=Fi;ht.parse=ht;ht.options;ht.setOptions;ht.use;ht.walkTokens;ht.parseInline;ye.parse;me.lex;function Yp(e){for(var t=[],r=1;r/g,` +`).replace(/\n{2,}/g,` +`),n=Yp(i);return t===!1?n.replace(/ /g," "):n}d(Gp,"preprocessMarkdown");function Vp(e,t={}){const r=Gp(e,t),i=ht.lexer(r),n=[[]];let a=0;function o(s,l="normal"){s.type==="text"?s.text.split(` +`).forEach((h,u)=>{u!==0&&(a++,n.push([])),h.split(" ").forEach(f=>{f=f.replace(/'/g,"'"),f&&n[a].push({content:f,type:l})})}):s.type==="strong"||s.type==="em"?s.tokens.forEach(c=>{o(c,s.type)}):s.type==="html"&&n[a].push({content:s.text,type:"normal"})}return d(o,"processNode"),i.forEach(s=>{var l;s.type==="paragraph"?(l=s.tokens)==null||l.forEach(c=>{o(c)}):s.type==="html"&&n[a].push({content:s.text,type:"normal"})}),n}d(Vp,"markdownToLines");function Xp(e,{markdownAutoWrap:t}={}){const r=ht.lexer(e);function i(n){var a,o,s;return n.type==="text"?t===!1?n.text.replace(/\n */g,"
    ").replace(/ /g," "):n.text.replace(/\n */g,"
    "):n.type==="strong"?`${(a=n.tokens)==null?void 0:a.map(i).join("")}`:n.type==="em"?`${(o=n.tokens)==null?void 0:o.map(i).join("")}`:n.type==="paragraph"?`

    ${(s=n.tokens)==null?void 0:s.map(i).join("")}

    `:n.type==="space"?"":n.type==="html"?`${n.text}`:n.type==="escape"?n.text:`Unsupported markdown: ${n.type}`}return d(i,"output"),r.map(i).join("")}d(Xp,"markdownToHTML");function Zp(e){return Intl.Segmenter?[...new Intl.Segmenter().segment(e)].map(t=>t.segment):[...e]}d(Zp,"splitTextToChars");function Kp(e,t){const r=Zp(t.content);return nl(e,[],r,t.type)}d(Kp,"splitWordToFitWidth");function nl(e,t,r,i){if(r.length===0)return[{content:t.join(""),type:i},{content:"",type:i}];const[n,...a]=r,o=[...t,n];return e([{content:o.join(""),type:i}])?nl(e,o,a,i):(t.length===0&&n&&(t.push(n),r.shift()),[{content:t.join(""),type:i},{content:r.join(""),type:i}])}d(nl,"splitWordToFitWidthRecursion");function Qp(e,t){if(e.some(({content:r})=>r.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return oa(e,t)}d(Qp,"splitLineToFitWidth");function oa(e,t,r=[],i=[]){if(e.length===0)return i.length>0&&r.push(i),r.length>0?r:[];let n="";e[0].content===" "&&(n=" ",e.shift());const a=e.shift()??{content:" ",type:"normal"},o=[...i];if(n!==""&&o.push({content:n,type:"normal"}),o.push(a),t(o))return oa(e,t,r,o);if(i.length>0)r.push(i),e.unshift(a);else if(a.content){const[s,l]=Kp(t,a);r.push([s]),l.content&&e.unshift(l)}return oa(e,t,r)}d(oa,"splitLineToFitWidthRecursion");function Qs(e,t){t&&e.attr("style",t)}d(Qs,"applyStyle");async function Jp(e,t,r,i,n=!1){const a=e.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);const o=a.append("xhtml:div");let s=t.label;t.label&&qr(t.label)&&(s=await go(t.label.replace(Xr.lineBreakRegex,` +`),ct()));const l=t.isNode?"nodeLabel":"edgeLabel",c=o.append("span");c.html(s),Qs(c,t.labelStyle),c.attr("class",`${l} ${i}`),Qs(o,t.labelStyle),o.style("display","table-cell"),o.style("white-space","nowrap"),o.style("line-height","1.5"),o.style("max-width",r+"px"),o.style("text-align","center"),o.attr("xmlns","http://www.w3.org/1999/xhtml"),n&&o.attr("class","labelBkg");let h=o.node().getBoundingClientRect();return h.width===r&&(o.style("display","table"),o.style("white-space","break-spaces"),o.style("width",r+"px"),h=o.node().getBoundingClientRect()),a.node()}d(Jp,"addHtmlSpan");function Da(e,t,r){return e.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",t*r-.1+"em").attr("dy",r+"em")}d(Da,"createTspan");function td(e,t,r){const i=e.append("text"),n=Da(i,1,t);Ra(n,r);const a=n.node().getComputedTextLength();return i.remove(),a}d(td,"computeWidthOfText");function xk(e,t,r){var o;const i=e.append("text"),n=Da(i,1,t);Ra(n,[{content:r,type:"normal"}]);const a=(o=n.node())==null?void 0:o.getBoundingClientRect();return a&&i.remove(),a}d(xk,"computeDimensionOfText");function ed(e,t,r,i=!1){const a=t.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 h=d(f=>td(a,1.1,f)<=e,"checkWidth"),u=h(c)?[c]:Qp(c,h);for(const f of u){const p=Da(s,l,1.1);Ra(p,f),l++}}if(i){const c=s.node().getBBox(),h=2;return o.attr("x",c.x-h).attr("y",c.y-h).attr("width",c.width+2*h).attr("height",c.height+2*h),a.node()}else return s.node()}d(ed,"createFormattedText");function Ra(e,t){e.text(""),t.forEach((r,i)=>{const n=e.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");i===0?n.text(r.content):n.text(" "+r.content)})}d(Ra,"updateTextContentAndStyles");function rd(e){return e.replace(/fa[bklrs]?:fa-[\w-]+/g,t=>``)}d(rd,"replaceIconSubstring");var Jr=d(async(e,t="",{style:r="",isTitle:i=!1,classes:n="",useHtmlLabels:a=!0,isNode:o=!0,width:s=200,addSvgBackground:l=!1}={},c)=>{if($.debug("XYZ createText",t,r,i,n,a,o,"addSvgBackground: ",l),a){const h=Xp(t,c),u=rd(Qr(h)),f=t.replace(/\\\\/g,"\\"),p={isNode:o,label:qr(t)?f:u,labelStyle:r.replace("fill:","color:")};return await Jp(e,p,s,n,l)}else{const h=t.replace(//g,"
    "),u=Vp(h.replace("
    ","
    "),c),f=ed(s,e,u,t?l:!1);if(o){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const p=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");lt(f).attr("style",p)}else{const p=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");lt(f).select("rect").attr("style",p.replace(/background:/g,"fill:"));const g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");lt(f).select("text").attr("style",g)}return f}},"createText");function ls(e,t,r){if(e&&e.length){const[i,n]=t,a=Math.PI/180*r,o=Math.cos(a),s=Math.sin(a);for(const l of e){const[c,h]=l;l[0]=(c-i)*o-(h-n)*s+i,l[1]=(c-i)*s+(h-n)*o+n}}}function bk(e,t){return e[0]===t[0]&&e[1]===t[1]}function _k(e,t,r,i=1){const n=r,a=Math.max(t,.1),o=e[0]&&e[0][0]&&typeof e[0][0]=="number"?[e]:e,s=[0,0];if(n)for(const c of o)ls(c,s,n);const l=function(c,h,u){const f=[];for(const b of c){const _=[...b];bk(_[0],_[_.length-1])||_.push([_[0][0],_[0][1]]),_.length>2&&f.push(_)}const p=[];h=Math.max(h,.1);const g=[];for(const b of f)for(let _=0;_b.ymin<_.ymin?-1:b.ymin>_.ymin?1:b.x<_.x?-1:b.x>_.x?1:b.ymax===_.ymax?0:(b.ymax-_.ymax)/Math.abs(b.ymax-_.ymax)),!g.length)return p;let m=[],y=g[0].ymin,x=0;for(;m.length||g.length;){if(g.length){let b=-1;for(let _=0;_y);_++)b=_;g.splice(0,b+1).forEach(_=>{m.push({s:y,edge:_})})}if(m=m.filter(b=>!(b.edge.ymax<=y)),m.sort((b,_)=>b.edge.x===_.edge.x?0:(b.edge.x-_.edge.x)/Math.abs(b.edge.x-_.edge.x)),(u!==1||x%h==0)&&m.length>1)for(let b=0;b=m.length)break;const v=m[b].edge,k=m[_].edge;p.push([[Math.round(v.x),y],[Math.round(k.x),y]])}y+=u,m.forEach(b=>{b.edge.x=b.edge.x+u*b.edge.islope}),x++}return p}(o,a,i);if(n){for(const c of o)ls(c,s,-n);(function(c,h,u){const f=[];c.forEach(p=>f.push(...p)),ls(f,h,u)})(l,s,-n)}return l}function en(e,t){var r;const i=t.hachureAngle+90;let n=t.hachureGap;n<0&&(n=4*t.strokeWidth),n=Math.round(Math.max(n,.1));let a=1;return t.roughness>=1&&(((r=t.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=n),_k(e,n,i,a||1)}class al{constructor(t){this.helper=t}fillPolygons(t,r){return this._fillPolygons(t,r)}_fillPolygons(t,r){const i=en(t,r);return{type:"fillSketch",ops:this.renderLines(i,r)}}renderLines(t,r){const i=[];for(const n of t)i.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],r));return i}}function Oa(e){const t=e[0],r=e[1];return Math.sqrt(Math.pow(t[0]-r[0],2)+Math.pow(t[1]-r[1],2))}class Ck extends al{fillPolygons(t,r){let i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);const n=en(t,Object.assign({},r,{hachureGap:i})),a=Math.PI/180*r.hachureAngle,o=[],s=.5*i*Math.cos(a),l=.5*i*Math.sin(a);for(const[c,h]of n)Oa([c,h])&&o.push([[c[0]-s,c[1]+l],[...h]],[[c[0]+s,c[1]-l],[...h]]);return{type:"fillSketch",ops:this.renderLines(o,r)}}}class wk extends al{fillPolygons(t,r){const i=this._fillPolygons(t,r),n=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(t,n);return i.ops=i.ops.concat(a.ops),i}}class vk{constructor(t){this.helper=t}fillPolygons(t,r){const i=en(t,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(i,r)}dotsOnLines(t,r){const i=[];let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);const o=n/4;for(const s of t){const l=Oa(s),c=l/n,h=Math.ceil(c)-1,u=l-h*n,f=(s[0][0]+s[1][0])/2-n/4,p=Math.min(s[0][1],s[1][1]);for(let g=0;g{const s=Oa(o),l=Math.floor(s/(i+n)),c=(s+n-l*(i+n))/2;let h=o[0],u=o[1];h[0]>u[0]&&(h=o[1],u=o[0]);const f=Math.atan((u[1]-h[1])/(u[0]-h[0]));for(let p=0;p{const o=Oa(a),s=Math.round(o/(2*r));let l=a[0],c=a[1];l[0]>c[0]&&(l=a[1],c=a[0]);const h=Math.atan((c[1]-l[1])/(c[0]-l[0]));for(let u=0;uh%2?c+r:c+t);a.push({key:"C",data:l}),t=l[4],r=l[5];break}case"Q":a.push({key:"Q",data:[...s]}),t=s[2],r=s[3];break;case"q":{const l=s.map((c,h)=>h%2?c+r:c+t);a.push({key:"Q",data:l}),t=l[2],r=l[3];break}case"A":a.push({key:"A",data:[...s]}),t=s[5],r=s[6];break;case"a":t+=s[5],r+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],t,r]});break;case"H":a.push({key:"H",data:[...s]}),t=s[0];break;case"h":t+=s[0],a.push({key:"H",data:[t]});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]}),t=s[2],r=s[3];break;case"s":{const l=s.map((c,h)=>h%2?c+r:c+t);a.push({key:"S",data:l}),t=l[2],r=l[3];break}case"T":a.push({key:"T",data:[...s]}),t=s[0],r=s[1];break;case"t":t+=s[0],r+=s[1],a.push({key:"T",data:[t,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),t=i,r=n}return a}function nd(e){const t=[];let r="",i=0,n=0,a=0,o=0,s=0,l=0;for(const{key:c,data:h}of e){switch(c){case"M":t.push({key:"M",data:[...h]}),[i,n]=h,[a,o]=h;break;case"C":t.push({key:"C",data:[...h]}),i=h[4],n=h[5],s=h[2],l=h[3];break;case"L":t.push({key:"L",data:[...h]}),[i,n]=h;break;case"H":i=h[0],t.push({key:"L",data:[i,n]});break;case"V":n=h[0],t.push({key:"L",data:[i,n]});break;case"S":{let u=0,f=0;r==="C"||r==="S"?(u=i+(i-s),f=n+(n-l)):(u=i,f=n),t.push({key:"C",data:[u,f,...h]}),s=h[0],l=h[1],i=h[2],n=h[3];break}case"T":{const[u,f]=h;let p=0,g=0;r==="Q"||r==="T"?(p=i+(i-s),g=n+(n-l)):(p=i,g=n);const m=i+2*(p-i)/3,y=n+2*(g-n)/3,x=u+2*(p-u)/3,b=f+2*(g-f)/3;t.push({key:"C",data:[m,y,x,b,u,f]}),s=p,l=g,i=u,n=f;break}case"Q":{const[u,f,p,g]=h,m=i+2*(u-i)/3,y=n+2*(f-n)/3,x=p+2*(u-p)/3,b=g+2*(f-g)/3;t.push({key:"C",data:[m,y,x,b,p,g]}),s=u,l=f,i=p,n=g;break}case"A":{const u=Math.abs(h[0]),f=Math.abs(h[1]),p=h[2],g=h[3],m=h[4],y=h[5],x=h[6];u===0||f===0?(t.push({key:"C",data:[i,n,y,x,y,x]}),i=y,n=x):(i!==y||n!==x)&&(ad(i,n,y,x,u,f,p,g,m).forEach(function(b){t.push({key:"C",data:b})}),i=y,n=x);break}case"Z":t.push({key:"Z",data:[]}),i=a,n=o}r=c}return t}function mi(e,t,r){return[e*Math.cos(r)-t*Math.sin(r),e*Math.sin(r)+t*Math.cos(r)]}function ad(e,t,r,i,n,a,o,s,l,c){const h=(u=o,Math.PI*u/180);var u;let f=[],p=0,g=0,m=0,y=0;if(c)[p,g,m,y]=c;else{[e,t]=mi(e,t,-h),[r,i]=mi(r,i,-h);const I=(e-r)/2,M=(t-i)/2;let L=I*I/(n*n)+M*M/(a*a);L>1&&(L=Math.sqrt(L),n*=L,a*=L);const S=n*n,F=a*a,T=S*F-S*M*M-F*I*I,z=S*M*M+F*I*I,Y=(s===l?-1:1)*Math.sqrt(Math.abs(T/z));m=Y*n*M/a+(e+r)/2,y=Y*-a*I/n+(t+i)/2,p=Math.asin(parseFloat(((t-y)/a).toFixed(9))),g=Math.asin(parseFloat(((i-y)/a).toFixed(9))),eg&&(p-=2*Math.PI),!l&&g>p&&(g-=2*Math.PI)}let x=g-p;if(Math.abs(x)>120*Math.PI/180){const I=g,M=r,L=i;g=l&&g>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,f=ad(r=m+n*Math.cos(g),i=y+a*Math.sin(g),M,L,n,a,o,0,l,[g,I,m,y])}x=g-p;const b=Math.cos(p),_=Math.sin(p),v=Math.cos(g),k=Math.sin(g),E=Math.tan(x/4),A=4/3*n*E,O=4/3*a*E,N=[e,t],R=[e+A*_,t-O*b],B=[r+A*k,i-O*v],q=[r,i];if(R[0]=2*N[0]-R[0],R[1]=2*N[1]-R[1],c)return[R,B,q].concat(f);{f=[R,B,q].concat(f);const I=[];for(let M=0;M2){const n=[];for(let a=0;a2*Math.PI&&(p=0,g=2*Math.PI);const m=2*Math.PI/l.curveStepCount,y=Math.min(m/2,(g-p)/2),x=Yc(y,c,h,u,f,p,g,1,l);if(!l.disableMultiStroke){const b=Yc(y,c,h,u,f,p,g,1.5,l);x.push(...b)}return o&&(s?x.push(...Ue(c,h,c+u*Math.cos(p),h+f*Math.sin(p),l),...Ue(c,h,c+u*Math.cos(g),h+f*Math.sin(g),l)):x.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+u*Math.cos(p),h+f*Math.sin(p)]})),{type:"path",ops:x}}function Hc(e,t){const r=nd(id(sl(e))),i=[];let n=[0,0],a=[0,0];for(const{key:o,data:s}of r)switch(o){case"M":a=[s[0],s[1]],n=[s[0],s[1]];break;case"L":i.push(...Ue(a[0],a[1],s[0],s[1],t)),a=[s[0],s[1]];break;case"C":{const[l,c,h,u,f,p]=s;i.push(...Mk(l,c,h,u,f,p,a,t)),a=[f,p];break}case"Z":i.push(...Ue(a[0],a[1],n[0],n[1],t)),a=[n[0],n[1]]}return{type:"path",ops:i}}function us(e,t){const r=[];for(const i of e)if(i.length){const n=t.maxRandomnessOffset||0,a=i.length;if(a>2){r.push({op:"move",data:[i[0][0]+tt(n,t),i[0][1]+tt(n,t)]});for(let o=1;o500?.4:-.0016668*l+1.233334;let h=n.maxRandomnessOffset||0;h*h*100>s&&(h=l/10);const u=h/2,f=.2+.2*ld(n);let p=n.bowing*n.maxRandomnessOffset*(i-t)/200,g=n.bowing*n.maxRandomnessOffset*(e-r)/200;p=tt(p,n,c),g=tt(g,n,c);const m=[],y=()=>tt(u,n,c),x=()=>tt(h,n,c),b=n.preserveVertices;return o?m.push({op:"move",data:[e+(b?0:y()),t+(b?0:y())]}):m.push({op:"move",data:[e+(b?0:tt(h,n,c)),t+(b?0:tt(h,n,c))]}),o?m.push({op:"bcurveTo",data:[p+e+(r-e)*f+y(),g+t+(i-t)*f+y(),p+e+2*(r-e)*f+y(),g+t+2*(i-t)*f+y(),r+(b?0:y()),i+(b?0:y())]}):m.push({op:"bcurveTo",data:[p+e+(r-e)*f+x(),g+t+(i-t)*f+x(),p+e+2*(r-e)*f+x(),g+t+2*(i-t)*f+x(),r+(b?0:x()),i+(b?0:x())]}),m}function xn(e,t,r){if(!e.length)return[];const i=[];i.push([e[0][0]+tt(t,r),e[0][1]+tt(t,r)]),i.push([e[0][0]+tt(t,r),e[0][1]+tt(t,r)]);for(let n=1;n3){const a=[],o=1-r.curveTightness;n.push({op:"move",data:[e[1][0],e[1][1]]});for(let s=1;s+21&&n.push(s)):n.push(s),n.push(e[t+3])}else{const l=e[t+0],c=e[t+1],h=e[t+2],u=e[t+3],f=Qe(l,c,.5),p=Qe(c,h,.5),g=Qe(h,u,.5),m=Qe(f,p,.5),y=Qe(p,g,.5),x=Qe(m,y,.5);eo([l,f,m,x],0,r,n),eo([x,y,g,u],0,r,n)}var a,o;return n}function Fk(e,t){return ha(e,0,e.length,t)}function ha(e,t,r,i,n){const a=n||[],o=e[t],s=e[r-1];let l=0,c=1;for(let h=t+1;hl&&(l=u,c=h)}return Math.sqrt(l)>i?(ha(e,t,c+1,i,a),ha(e,c,r,i,a)):(a.length||a.push(o),a.push(s)),a}function fs(e,t=.15,r){const i=[],n=(e.length-1)/3;for(let a=0;a0?ha(i,0,i.length,r):i}const Yt="none";class ua{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,r,i){return{shape:t,sets:r||[],options:i||this.defaultOptions}}line(t,r,i,n,a){const o=this._o(a);return this._d("line",[sd(t,r,i,n,o)],o)}rectangle(t,r,i,n,a){const o=this._o(a),s=[],l=Bk(t,r,i,n,o);if(o.fill){const c=[[t,r],[t+i,r],[t+i,r+n],[t,r+n]];o.fillStyle==="solid"?s.push(us([c],o)):s.push(vr([c],o))}return o.stroke!==Yt&&s.push(l),this._d("rectangle",s,o)}ellipse(t,r,i,n,a){const o=this._o(a),s=[],l=od(i,n,o),c=Js(t,r,o,l);if(o.fill)if(o.fillStyle==="solid"){const h=Js(t,r,o,l).opset;h.type="fillPath",s.push(h)}else s.push(vr([c.estimatedPoints],o));return o.stroke!==Yt&&s.push(c.opset),this._d("ellipse",s,o)}circle(t,r,i,n){const a=this.ellipse(t,r,i,i,n);return a.shape="circle",a}linearPath(t,r){const i=this._o(r);return this._d("linearPath",[Bn(t,!1,i)],i)}arc(t,r,i,n,a,o,s=!1,l){const c=this._o(l),h=[],u=Wc(t,r,i,n,a,o,s,!0,c);if(s&&c.fill)if(c.fillStyle==="solid"){const f=Object.assign({},c);f.disableMultiStroke=!0;const p=Wc(t,r,i,n,a,o,!0,!1,f);p.type="fillPath",h.push(p)}else h.push(function(f,p,g,m,y,x,b){const _=f,v=p;let k=Math.abs(g/2),E=Math.abs(m/2);k+=tt(.01*k,b),E+=tt(.01*E,b);let A=y,O=x;for(;A<0;)A+=2*Math.PI,O+=2*Math.PI;O-A>2*Math.PI&&(A=0,O=2*Math.PI);const N=(O-A)/b.curveStepCount,R=[];for(let B=A;B<=O;B+=N)R.push([_+k*Math.cos(B),v+E*Math.sin(B)]);return R.push([_+k*Math.cos(O),v+E*Math.sin(O)]),R.push([_,v]),vr([R],b)}(t,r,i,n,a,o,c));return c.stroke!==Yt&&h.push(u),this._d("arc",h,c)}curve(t,r){const i=this._o(r),n=[],a=qc(t,i);if(i.fill&&i.fill!==Yt)if(i.fillStyle==="solid"){const o=qc(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(o.ops)})}else{const o=[],s=t;if(s.length){const l=typeof s[0][0]=="number"?[s]:s;for(const c of l)c.length<3?o.push(...c):c.length===3?o.push(...fs(Gc([c[0],c[0],c[1],c[2]]),10,(1+i.roughness)/2)):o.push(...fs(Gc(c),10,(1+i.roughness)/2))}o.length&&n.push(vr([o],i))}return i.stroke!==Yt&&n.push(a),this._d("curve",n,i)}polygon(t,r){const i=this._o(r),n=[],a=Bn(t,!0,i);return i.fill&&(i.fillStyle==="solid"?n.push(us([t],i)):n.push(vr([t],i))),i.stroke!==Yt&&n.push(a),this._d("polygon",n,i)}path(t,r){const i=this._o(r),n=[];if(!t)return this._d("path",n,i);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const a=i.fill&&i.fill!=="transparent"&&i.fill!==Yt,o=i.stroke!==Yt,s=!!(i.simplification&&i.simplification<1),l=function(h,u,f){const p=nd(id(sl(h))),g=[];let m=[],y=[0,0],x=[];const b=()=>{x.length>=4&&m.push(...fs(x,u)),x=[]},_=()=>{b(),m.length&&(g.push(m),m=[])};for(const{key:k,data:E}of p)switch(k){case"M":_(),y=[E[0],E[1]],m.push(y);break;case"L":b(),m.push([E[0],E[1]]);break;case"C":if(!x.length){const A=m.length?m[m.length-1]:y;x.push([A[0],A[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),m.push([y[0],y[1]])}if(_(),!f)return g;const v=[];for(const k of g){const E=Fk(k,f);E.length&&v.push(E)}return v}(t,1,s?4-4*(i.simplification||1):(1+i.roughness)/2),c=Hc(t,i);if(a)if(i.fillStyle==="solid")if(l.length===1){const h=Hc(t,Object.assign(Object.assign({},i),{disableMultiStroke:!0,roughness:i.roughness?i.roughness+i.fillShapeRoughnessGain:0}));n.push({type:"fillPath",ops:this._mergedShape(h.ops)})}else n.push(us(l,i));else n.push(vr(l,i));return o&&(s?l.forEach(h=>{n.push(Bn(h,!1,i))}):n.push(c)),this._d("path",n,i)}opsToPath(t,r){let i="";for(const n of t.ops){const a=typeof r=="number"&&r>=0?n.data.map(o=>+o.toFixed(r)):n.data;switch(n.op){case"move":i+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":i+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":i+=`L${a[0]} ${a[1]} `}}return i.trim()}toPaths(t){const r=t.sets||[],i=t.options||this.defaultOptions,n=[];for(const a of r){let o=null;switch(a.type){case"path":o={d:this.opsToPath(a),stroke:i.stroke,strokeWidth:i.strokeWidth,fill:Yt};break;case"fillPath":o={d:this.opsToPath(a),stroke:Yt,strokeWidth:0,fill:i.fill||Yt};break;case"fillSketch":o=this.fillSketch(a,i)}o&&n.push(o)}return n}fillSketch(t,r){let i=r.fillWeight;return i<0&&(i=r.strokeWidth/2),{d:this.opsToPath(t),stroke:r.fill||Yt,strokeWidth:i,fill:Yt}}_mergedShape(t){return t.filter((r,i)=>i===0||r.op!=="move")}}class $k{constructor(t,r){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new ua(r)}draw(t){const r=t.sets||[],i=t.options||this.getDefaultOptions(),n=this.ctx,a=t.options.fixedDecimalPlaceDigits;for(const o of r)switch(o.type){case"path":n.save(),n.strokeStyle=i.stroke==="none"?"transparent":i.stroke,n.lineWidth=i.strokeWidth,i.strokeLineDash&&n.setLineDash(i.strokeLineDash),i.strokeLineDashOffset&&(n.lineDashOffset=i.strokeLineDashOffset),this._drawToContext(n,o,a),n.restore();break;case"fillPath":{n.save(),n.fillStyle=i.fill||"";const s=t.shape==="curve"||t.shape==="polygon"||t.shape==="path"?"evenodd":"nonzero";this._drawToContext(n,o,a,s),n.restore();break}case"fillSketch":this.fillSketch(n,o,i)}}fillSketch(t,r,i){let n=i.fillWeight;n<0&&(n=i.strokeWidth/2),t.save(),i.fillLineDash&&t.setLineDash(i.fillLineDash),i.fillLineDashOffset&&(t.lineDashOffset=i.fillLineDashOffset),t.strokeStyle=i.fill||"",t.lineWidth=n,this._drawToContext(t,r,i.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,r,i,n="nonzero"){t.beginPath();for(const a of r.ops){const o=typeof i=="number"&&i>=0?a.data.map(s=>+s.toFixed(i)):a.data;switch(a.op){case"move":t.moveTo(o[0],o[1]);break;case"bcurveTo":t.bezierCurveTo(o[0],o[1],o[2],o[3],o[4],o[5]);break;case"lineTo":t.lineTo(o[0],o[1])}}r.type==="fillPath"?t.fill(n):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,r,i,n,a){const o=this.gen.line(t,r,i,n,a);return this.draw(o),o}rectangle(t,r,i,n,a){const o=this.gen.rectangle(t,r,i,n,a);return this.draw(o),o}ellipse(t,r,i,n,a){const o=this.gen.ellipse(t,r,i,n,a);return this.draw(o),o}circle(t,r,i,n){const a=this.gen.circle(t,r,i,n);return this.draw(a),a}linearPath(t,r){const i=this.gen.linearPath(t,r);return this.draw(i),i}polygon(t,r){const i=this.gen.polygon(t,r);return this.draw(i),i}arc(t,r,i,n,a,o,s=!1,l){const c=this.gen.arc(t,r,i,n,a,o,s,l);return this.draw(c),c}curve(t,r){const i=this.gen.curve(t,r);return this.draw(i),i}path(t,r){const i=this.gen.path(t,r);return this.draw(i),i}}const bn="http://www.w3.org/2000/svg";class Dk{constructor(t,r){this.svg=t,this.gen=new ua(r)}draw(t){const r=t.sets||[],i=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,a=n.createElementNS(bn,"g"),o=t.options.fixedDecimalPlaceDigits;for(const s of r){let l=null;switch(s.type){case"path":l=n.createElementNS(bn,"path"),l.setAttribute("d",this.opsToPath(s,o)),l.setAttribute("stroke",i.stroke),l.setAttribute("stroke-width",i.strokeWidth+""),l.setAttribute("fill","none"),i.strokeLineDash&&l.setAttribute("stroke-dasharray",i.strokeLineDash.join(" ").trim()),i.strokeLineDashOffset&&l.setAttribute("stroke-dashoffset",`${i.strokeLineDashOffset}`);break;case"fillPath":l=n.createElementNS(bn,"path"),l.setAttribute("d",this.opsToPath(s,o)),l.setAttribute("stroke","none"),l.setAttribute("stroke-width","0"),l.setAttribute("fill",i.fill||""),t.shape!=="curve"&&t.shape!=="polygon"||l.setAttribute("fill-rule","evenodd");break;case"fillSketch":l=this.fillSketch(n,s,i)}l&&a.appendChild(l)}return a}fillSketch(t,r,i){let n=i.fillWeight;n<0&&(n=i.strokeWidth/2);const a=t.createElementNS(bn,"path");return a.setAttribute("d",this.opsToPath(r,i.fixedDecimalPlaceDigits)),a.setAttribute("stroke",i.fill||""),a.setAttribute("stroke-width",n+""),a.setAttribute("fill","none"),i.fillLineDash&&a.setAttribute("stroke-dasharray",i.fillLineDash.join(" ").trim()),i.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${i.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,r){return this.gen.opsToPath(t,r)}line(t,r,i,n,a){const o=this.gen.line(t,r,i,n,a);return this.draw(o)}rectangle(t,r,i,n,a){const o=this.gen.rectangle(t,r,i,n,a);return this.draw(o)}ellipse(t,r,i,n,a){const o=this.gen.ellipse(t,r,i,n,a);return this.draw(o)}circle(t,r,i,n){const a=this.gen.circle(t,r,i,n);return this.draw(a)}linearPath(t,r){const i=this.gen.linearPath(t,r);return this.draw(i)}polygon(t,r){const i=this.gen.polygon(t,r);return this.draw(i)}arc(t,r,i,n,a,o,s=!1,l){const c=this.gen.arc(t,r,i,n,a,o,s,l);return this.draw(c)}curve(t,r){const i=this.gen.curve(t,r);return this.draw(i)}path(t,r){const i=this.gen.path(t,r);return this.draw(i)}}var j={canvas:(e,t)=>new $k(e,t),svg:(e,t)=>new Dk(e,t),generator:e=>new ua(e),newSeed:()=>ua.newSeed()},rt=d(async(e,t,r)=>{var u,f;let i;const n=t.useHtmlLabels||Bt((u=ct())==null?void 0:u.htmlLabels);r?i=r:i="node default";const a=e.insert("g").attr("class",i).attr("id",t.domId||t.id),o=a.insert("g").attr("class","label").attr("style",Nt(t.labelStyle));let s;t.label===void 0?s="":s=typeof t.label=="string"?t.label:t.label[0];const l=await Jr(o,or(Qr(s),ct()),{useHtmlLabels:n,width:t.width||((f=ct().flowchart)==null?void 0:f.wrappingWidth),cssClasses:"markdown-node-label",style:t.labelStyle,addSvgBackground:!!t.icon||!!t.img});let c=l.getBBox();const h=((t==null?void 0:t.padding)??0)/2;if(n){const p=l.children[0],g=lt(l),m=p.getElementsByTagName("img");if(m){const y=s.replace(/]*>/g,"").trim()==="";await Promise.all([...m].map(x=>new Promise(b=>{function _(){if(x.style.display="flex",x.style.flexDirection="column",y){const v=ct().fontSize?ct().fontSize:window.getComputedStyle(document.body).fontSize,k=5,[E=Ah.fontSize]=Fa(v),A=E*k+"px";x.style.minWidth=A,x.style.maxWidth=A}else x.style.width="100%";b(x)}d(_,"setupImage"),setTimeout(()=>{x.complete&&_()}),x.addEventListener("error",_),x.addEventListener("load",_)})))}c=p.getBoundingClientRect(),g.attr("width",c.width),g.attr("height",c.height)}return n?o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"):o.attr("transform","translate(0, "+-c.height/2+")"),t.centerLabel&&o.attr("transform","translate("+-c.width/2+", "+-c.height/2+")"),o.insert("rect",":first-child"),{shapeSvg:a,bbox:c,halfPadding:h,label:o}},"labelHelper"),ps=d(async(e,t,r)=>{var l,c,h,u,f,p;const i=r.useHtmlLabels||Bt((c=(l=ct())==null?void 0:l.flowchart)==null?void 0:c.htmlLabels),n=e.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Jr(n,or(Qr(t),ct()),{useHtmlLabels:i,width:r.width||((u=(h=ct())==null?void 0:h.flowchart)==null?void 0:u.wrappingWidth),style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let o=a.getBBox();const s=r.padding/2;if(Bt((p=(f=ct())==null?void 0:f.flowchart)==null?void 0:p.htmlLabels)){const g=a.children[0],m=lt(a);o=g.getBoundingClientRect(),m.attr("width",o.width),m.attr("height",o.height)}return i?n.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"):n.attr("transform","translate(0, "+-o.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:e,bbox:o,halfPadding:s,label:n}},"insertLabel"),X=d((e,t)=>{const r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds"),it=d((e,t)=>(e.look==="handDrawn"?"rough-node":"node")+" "+e.cssClasses+" "+(t||""),"getNodeClasses");function ot(e){const t=e.map((r,i)=>`${i===0?"M":"L"}${r.x},${r.y}`);return t.push("Z"),t.join(" ")}d(ot,"createPathFromPoints");function Ye(e,t,r,i,n,a){const o=[],l=r-e,c=i-t,h=l/a,u=2*Math.PI/h,f=t+c/2;for(let p=0;p<=50;p++){const g=p/50,m=e+g*l,y=f+n*Math.sin(u*(m-e));o.push({x:m,y})}return o}d(Ye,"generateFullSineWavePoints");function ol(e,t,r,i,n,a){const o=[],s=n*Math.PI/180,h=(a*Math.PI/180-s)/(i-1);for(let u=0;u{var r=e.x,i=e.y,n=t.x-r,a=t.y-i,o=e.width/2,s=e.height/2,l,c;return Math.abs(a)*o>Math.abs(n)*s?(a<0&&(s=-s),l=a===0?0:s*n/a,c=s):(n<0&&(o=-o),l=o,c=n===0?0:o*a/n),{x:r+l,y:i+c}},"intersectRect"),ti=Rk;function cd(e,t){t&&e.attr("style",t)}d(cd,"applyStyle");async function hd(e){const t=lt(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div");let i=e.label;e.label&&qr(e.label)&&(i=await go(e.label.replace(Xr.lineBreakRegex,` +`),ct()));const n=e.isNode?"nodeLabel":"edgeLabel";return r.html('"+i+""),cd(r,e.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"),t.node()}d(hd,"addHtmlLabel");var Ok=d(async(e,t,r,i)=>{let n=e||"";if(typeof n=="object"&&(n=n[0]),Bt(ct().flowchart.htmlLabels)){n=n.replace(/\\n|\n/g,"
    "),$.info("vertexText"+n);const a={isNode:i,label:Qr(n).replace(/fa[blrs]?:fa-[\w-]+/g,s=>``),labelStyle:t&&t.replace("fill:","color:")};return await hd(a)}else{const a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",t.replace("color:","fill:"));let o=[];typeof n=="string"?o=n.split(/\\n|\n|/gi):Array.isArray(n)?o=n:o=[];for(const s of o){const l=document.createElementNS("http://www.w3.org/2000/svg","tspan");l.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),l.setAttribute("dy","1em"),l.setAttribute("x","0"),r?l.setAttribute("class","title-row"):l.setAttribute("class","row"),l.textContent=s.trim(),a.appendChild(l)}return a}},"createLabel"),nr=Ok,De=d((e,t,r,i,n)=>["M",e+n,t,"H",e+r-n,"A",n,n,0,0,1,e+r,t+n,"V",t+i-n,"A",n,n,0,0,1,e+r-n,t+i,"H",e+n,"A",n,n,0,0,1,e,t+i-n,"V",t+n,"A",n,n,0,0,1,e+n,t,"Z"].join(" "),"createRoundedRectPathD"),Ik=d(e=>{const{handDrawnSeed:t}=ct();return{fill:e,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:e,seed:t}},"solidStateFill"),ei=d(e=>{const t=Pk([...e.cssCompiledStyles||[],...e.cssStyles||[]]);return{stylesMap:t,stylesArray:[...t]}},"compileStyles"),Pk=d(e=>{const t=new Map;return e.forEach(r=>{const[i,n]=r.split(":");t.set(i.trim(),n==null?void 0:n.trim())}),t},"styles2Map"),Z=d(e=>{const{stylesArray:t}=ei(e),r=[],i=[],n=[],a=[];return t.forEach(o=>{const s=o[0];s==="color"||s==="font-size"||s==="font-family"||s==="font-weight"||s==="font-style"||s==="text-decoration"||s==="text-align"||s==="text-transform"||s==="line-height"||s==="letter-spacing"||s==="word-spacing"||s==="text-shadow"||s==="text-overflow"||s==="white-space"||s==="word-wrap"||s==="word-break"||s==="overflow-wrap"||s==="hyphens"?r.push(o.join(":")+" !important"):(i.push(o.join(":")+" !important"),s.includes("stroke")&&n.push(o.join(":")+" !important"),s==="fill"&&a.push(o.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:t,borderStyles:n,backgroundStyles:a}},"styles2String"),U=d((e,t)=>{var l;const{themeVariables:r,handDrawnSeed:i}=ct(),{nodeBorder:n,mainBkg:a}=r,{stylesMap:o}=ei(e);return Object.assign({roughness:.7,fill:o.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:o.get("stroke")||n,seed:i,strokeWidth:((l=o.get("stroke-width"))==null?void 0:l.replace("px",""))||1.3,fillLineDash:[0,0]},t)},"userNodeOverrides"),ud=d(async(e,t)=>{$.info("Creating subgraph rect for ",t.id,t);const r=ct(),{themeVariables:i,handDrawnSeed:n}=r,{clusterBkg:a,clusterBorder:o}=i,{labelStyles:s,nodeStyles:l,borderStyles:c,backgroundStyles:h}=Z(t),u=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Bt(r.flowchart.htmlLabels),p=u.insert("g").attr("class","cluster-label "),g=await Jr(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0});let m=g.getBBox();if(Bt(r.flowchart.htmlLabels)){const A=g.children[0],O=lt(g);m=A.getBoundingClientRect(),O.attr("width",m.width),O.attr("height",m.height)}const y=t.width<=m.width+t.padding?m.width+t.padding:t.width;t.width<=m.width+t.padding?t.diff=(y-t.width)/2-t.padding:t.diff=-t.padding;const x=t.height,b=t.x-y/2,_=t.y-x/2;$.trace("Data ",t,JSON.stringify(t));let v;if(t.look==="handDrawn"){const A=j.svg(u),O=U(t,{roughness:.7,fill:a,stroke:o,fillWeight:3,seed:n}),N=A.path(De(b,_,y,x,0),O);v=u.insert(()=>($.debug("Rough node insert CXC",N),N),":first-child"),v.select("path:nth-child(2)").attr("style",c.join(";")),v.select("path").attr("style",h.join(";").replace("fill","stroke"))}else v=u.insert("rect",":first-child"),v.attr("style",l).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",_).attr("width",y).attr("height",x);const{subGraphTitleTopMargin:k}=Ao(r);if(p.attr("transform",`translate(${t.x-m.width/2}, ${t.y-t.height/2+k})`),s){const A=p.select("span");A&&A.attr("style",s)}const E=v.node().getBBox();return t.offsetX=0,t.width=E.width,t.height=E.height,t.offsetY=m.height-t.padding/2,t.intersect=function(A){return ti(t,A)},{cluster:u,labelBBox:m}},"rect"),Nk=d((e,t)=>{const r=e.insert("g").attr("class","note-cluster").attr("id",t.id),i=r.insert("rect",":first-child"),n=0*t.padding,a=n/2;i.attr("rx",t.rx).attr("ry",t.ry).attr("x",t.x-t.width/2-a).attr("y",t.y-t.height/2-a).attr("width",t.width+n).attr("height",t.height+n).attr("fill","none");const o=i.node().getBBox();return t.width=o.width,t.height=o.height,t.intersect=function(s){return ti(t,s)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),zk=d(async(e,t)=>{const r=ct(),{themeVariables:i,handDrawnSeed:n}=r,{altBackground:a,compositeBackground:o,compositeTitleBackground:s,nodeBorder:l}=i,c=e.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-id",t.id).attr("data-look",t.look),h=c.insert("g",":first-child"),u=c.insert("g").attr("class","cluster-label");let f=c.append("rect");const p=u.node().appendChild(await nr(t.label,t.labelStyle,void 0,!0));let g=p.getBBox();if(Bt(r.flowchart.htmlLabels)){const N=p.children[0],R=lt(p);g=N.getBoundingClientRect(),R.attr("width",g.width),R.attr("height",g.height)}const m=0*t.padding,y=m/2,x=(t.width<=g.width+t.padding?g.width+t.padding:t.width)+m;t.width<=g.width+t.padding?t.diff=(x-t.width)/2-t.padding:t.diff=-t.padding;const b=t.height+m,_=t.height+m-g.height-6,v=t.x-x/2,k=t.y-b/2;t.width=x;const E=t.y-t.height/2-y+g.height+2;let A;if(t.look==="handDrawn"){const N=t.cssClasses.includes("statediagram-cluster-alt"),R=j.svg(c),B=t.rx||t.ry?R.path(De(v,k,x,b,10),{roughness:.7,fill:s,fillStyle:"solid",stroke:l,seed:n}):R.rectangle(v,k,x,b,{seed:n});A=c.insert(()=>B,":first-child");const q=R.rectangle(v,E,x,_,{fill:N?a:o,fillStyle:N?"hachure":"solid",stroke:l,seed:n});A=c.insert(()=>B,":first-child"),f=c.insert(()=>q)}else A=h.insert("rect",":first-child"),A.attr("class","outer").attr("x",v).attr("y",k).attr("width",x).attr("height",b).attr("data-look",t.look),f.attr("class","inner").attr("x",v).attr("y",E).attr("width",x).attr("height",_);u.attr("transform",`translate(${t.x-g.width/2}, ${k+1-(Bt(r.flowchart.htmlLabels)?0:3)})`);const O=A.node().getBBox();return t.height=O.height,t.offsetX=0,t.offsetY=g.height-t.padding/2,t.labelBBox=g,t.intersect=function(N){return ti(t,N)},{cluster:c,labelBBox:g}},"roundedWithTitle"),qk=d(async(e,t)=>{$.info("Creating subgraph rect for ",t.id,t);const r=ct(),{themeVariables:i,handDrawnSeed:n}=r,{clusterBkg:a,clusterBorder:o}=i,{labelStyles:s,nodeStyles:l,borderStyles:c,backgroundStyles:h}=Z(t),u=e.insert("g").attr("class","cluster "+t.cssClasses).attr("id",t.id).attr("data-look",t.look),f=Bt(r.flowchart.htmlLabels),p=u.insert("g").attr("class","cluster-label "),g=await Jr(p,t.label,{style:t.labelStyle,useHtmlLabels:f,isNode:!0,width:t.width});let m=g.getBBox();if(Bt(r.flowchart.htmlLabels)){const A=g.children[0],O=lt(g);m=A.getBoundingClientRect(),O.attr("width",m.width),O.attr("height",m.height)}const y=t.width<=m.width+t.padding?m.width+t.padding:t.width;t.width<=m.width+t.padding?t.diff=(y-t.width)/2-t.padding:t.diff=-t.padding;const x=t.height,b=t.x-y/2,_=t.y-x/2;$.trace("Data ",t,JSON.stringify(t));let v;if(t.look==="handDrawn"){const A=j.svg(u),O=U(t,{roughness:.7,fill:a,stroke:o,fillWeight:4,seed:n}),N=A.path(De(b,_,y,x,t.rx),O);v=u.insert(()=>($.debug("Rough node insert CXC",N),N),":first-child"),v.select("path:nth-child(2)").attr("style",c.join(";")),v.select("path").attr("style",h.join(";").replace("fill","stroke"))}else v=u.insert("rect",":first-child"),v.attr("style",l).attr("rx",t.rx).attr("ry",t.ry).attr("x",b).attr("y",_).attr("width",y).attr("height",x);const{subGraphTitleTopMargin:k}=Ao(r);if(p.attr("transform",`translate(${t.x-m.width/2}, ${t.y-t.height/2+k})`),s){const A=p.select("span");A&&A.attr("style",s)}const E=v.node().getBBox();return t.offsetX=0,t.width=E.width,t.height=E.height,t.offsetY=m.height-t.padding/2,t.intersect=function(A){return ti(t,A)},{cluster:u,labelBBox:m}},"kanbanSection"),Wk=d((e,t)=>{const r=ct(),{themeVariables:i,handDrawnSeed:n}=r,{nodeBorder:a}=i,o=e.insert("g").attr("class",t.cssClasses).attr("id",t.id).attr("data-look",t.look),s=o.insert("g",":first-child"),l=0*t.padding,c=t.width+l;t.diff=-t.padding;const h=t.height+l,u=t.x-c/2,f=t.y-h/2;t.width=c;let p;if(t.look==="handDrawn"){const y=j.svg(o).rectangle(u,f,c,h,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:n});p=o.insert(()=>y,":first-child")}else p=s.insert("rect",":first-child"),p.attr("class","divider").attr("x",u).attr("y",f).attr("width",c).attr("height",h).attr("data-look",t.look);const g=p.node().getBBox();return t.height=g.height,t.offsetX=0,t.offsetY=0,t.intersect=function(m){return ti(t,m)},{cluster:o,labelBBox:{}}},"divider"),Hk=ud,jk={rect:ud,squareRect:Hk,roundedWithTitle:zk,noteGroup:Nk,divider:Wk,kanbanSection:qk},fd=new Map,Uk=d(async(e,t)=>{const r=t.shape||"rect",i=await jk[r](e,t);return fd.set(t.id,i),i},"insertCluster"),uB=d(()=>{fd=new Map},"clear");function pd(e,t){return e.intersect(t)}d(pd,"intersectNode");var Yk=pd;function dd(e,t,r,i){var n=e.x,a=e.y,o=n-i.x,s=a-i.y,l=Math.sqrt(t*t*s*s+r*r*o*o),c=Math.abs(t*r*o/l);i.x0}d(ro,"sameSign");var Vk=yd;function xd(e,t,r){let i=e.x,n=e.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(h){o=Math.min(o,h.x),s=Math.min(s,h.y)}):(o=Math.min(o,t.x),s=Math.min(s,t.y));let l=i-e.width/2-o,c=n-e.height/2-s;for(let h=0;h1&&a.sort(function(h,u){let f=h.x-r.x,p=h.y-r.y,g=Math.sqrt(f*f+p*p),m=u.x-r.x,y=u.y-r.y,x=Math.sqrt(m*m+y*y);return gh,":first-child");return u.attr("class","anchor").attr("style",Nt(s)),X(t,u),t.intersect=function(f){return $.info("Circle intersect",t,o,f),W.circle(t,o,f)},a}d(bd,"anchor");function io(e,t,r,i,n,a,o){const l=(e+r)/2,c=(t+i)/2,h=Math.atan2(i-t,r-e),u=(r-e)/2,f=(i-t)/2,p=u/n,g=f/a,m=Math.sqrt(p**2+g**2);if(m>1)throw new Error("The given radii are too small to create an arc between the points.");const y=Math.sqrt(1-m**2),x=l+y*a*Math.sin(h)*(o?-1:1),b=c-y*n*Math.cos(h)*(o?-1:1),_=Math.atan2((t-b)/a,(e-x)/n);let k=Math.atan2((i-b)/a,(r-x)/n)-_;o&&k<0&&(k+=2*Math.PI),!o&&k>0&&(k-=2*Math.PI);const E=[];for(let A=0;A<20;A++){const O=A/19,N=_+O*k,R=x+n*Math.cos(N),B=b+a*Math.sin(N);E.push({x:R,y:B})}return E}d(io,"generateArcPoints");async function _d(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=a.width+t.padding+20,s=a.height+t.padding,l=s/2,c=l/(2.5+s/50),{cssStyles:h}=t,u=[{x:o/2,y:-s/2},{x:-o/2,y:-s/2},...io(-o/2,-s/2,-o/2,s/2,c,l,!1),{x:o/2,y:s/2},...io(o/2,s/2,o/2,-s/2,c,l,!0)],f=j.svg(n),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=ot(u),m=f.path(g,p),y=n.insert(()=>m,":first-child");return y.attr("class","basic label-container"),h&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",h),i&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",i),y.attr("transform",`translate(${c/2}, 0)`),X(t,y),t.intersect=function(x){return W.polygon(t,u,x)},n}d(_d,"bowTieRect");function Re(e,t,r,i){return e.insert("polygon",":first-child").attr("points",i.map(function(n){return n.x+","+n.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}d(Re,"insertPolygonShape");async function Cd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=a.height+t.padding,s=12,l=a.width+t.padding+s,c=0,h=l,u=-o,f=0,p=[{x:c+s,y:u},{x:h,y:u},{x:h,y:f},{x:c,y:f},{x:c,y:u+s},{x:c+s,y:u}];let g;const{cssStyles:m}=t;if(t.look==="handDrawn"){const y=j.svg(n),x=U(t,{}),b=ot(p),_=y.path(b,x);g=n.insert(()=>_,":first-child").attr("transform",`translate(${-l/2}, ${o/2})`),m&&g.attr("style",m)}else g=Re(n,l,o,p);return i&&g.attr("style",i),X(t,g),t.intersect=function(y){return W.polygon(t,p,y)},n}d(Cd,"card");function wd(e,t){const{nodeStyles:r}=Z(t);t.label="";const i=e.insert("g").attr("class",it(t)).attr("id",t.domId??t.id),{cssStyles:n}=t,a=Math.max(28,t.width??0),o=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],s=j.svg(i),l=U(t,{});t.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");const c=ot(o),h=s.path(c,l),u=i.insert(()=>h,":first-child");return n&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",n),r&&t.look!=="handDrawn"&&u.selectAll("path").attr("style",r),t.width=28,t.height=28,t.intersect=function(f){return W.polygon(t,o,f)},i}d(wd,"choice");async function vd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,halfPadding:o}=await rt(e,t,it(t)),s=a.width/2+o;let l;const{cssStyles:c}=t;if(t.look==="handDrawn"){const h=j.svg(n),u=U(t,{}),f=h.circle(0,0,s*2,u);l=n.insert(()=>f,":first-child"),l.attr("class","basic label-container").attr("style",Nt(c))}else l=n.insert("circle",":first-child").attr("class","basic label-container").attr("style",i).attr("r",s).attr("cx",0).attr("cy",0);return X(t,l),t.intersect=function(h){return $.info("Circle intersect",t,s,h),W.circle(t,s,h)},n}d(vd,"circle");function kd(e){const t=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=e*2,n={x:i/2*t,y:i/2*r},a={x:-(i/2)*t,y:i/2*r},o={x:-(i/2)*t,y:-(i/2)*r},s={x:i/2*t,y:-(i/2)*r};return`M ${a.x},${a.y} L ${s.x},${s.y} + M ${n.x},${n.y} L ${o.x},${o.y}`}d(kd,"createLine");function Sd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r,t.label="";const n=e.insert("g").attr("class",it(t)).attr("id",t.domId??t.id),a=Math.max(30,(t==null?void 0:t.width)??0),{cssStyles:o}=t,s=j.svg(n),l=U(t,{});t.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");const c=s.circle(0,0,a*2,l),h=kd(a),u=s.path(h,l),f=n.insert(()=>c,":first-child");return f.insert(()=>u),o&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",o),i&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",i),X(t,f),t.intersect=function(p){return $.info("crossedCircle intersect",t,{radius:a,point:p}),W.circle(t,a,p)},n}d(Sd,"crossedCircle");function Ae(e,t,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,h=(a*Math.PI/180-s)/(i-1);for(let u=0;u_,":first-child").attr("stroke-opacity",0),v.insert(()=>x,":first-child"),v.attr("class","text"),h&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",h),i&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",i),v.attr("transform",`translate(${c}, 0)`),o.attr("transform",`translate(${-s/2+c-(a.x-(a.left??0))},${-l/2+(t.padding??0)/2-(a.y-(a.top??0))})`),X(t,v),t.intersect=function(k){return W.polygon(t,f,k)},n}d(Td,"curlyBraceLeft");function Le(e,t,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,h=(a*Math.PI/180-s)/(i-1);for(let u=0;u_,":first-child").attr("stroke-opacity",0),v.insert(()=>x,":first-child"),v.attr("class","text"),h&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",h),i&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",i),v.attr("transform",`translate(${-c}, 0)`),o.attr("transform",`translate(${-s/2+(t.padding??0)/2-(a.x-(a.left??0))},${-l/2+(t.padding??0)/2-(a.y-(a.top??0))})`),X(t,v),t.intersect=function(k){return W.polygon(t,f,k)},n}d(Ad,"curlyBraceRight");function Tt(e,t,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,h=(a*Math.PI/180-s)/(i-1);for(let u=0;uA,":first-child").attr("stroke-opacity",0),O.insert(()=>b,":first-child"),O.insert(()=>k,":first-child"),O.attr("class","text"),h&&t.look!=="handDrawn"&&O.selectAll("path").attr("style",h),i&&t.look!=="handDrawn"&&O.selectAll("path").attr("style",i),O.attr("transform",`translate(${c-c/4}, 0)`),o.attr("transform",`translate(${-s/2+(t.padding??0)/2-(a.x-(a.left??0))},${-l/2+(t.padding??0)/2-(a.y-(a.top??0))})`),X(t,O),t.intersect=function(N){return W.polygon(t,p,N)},n}d(Ld,"curlyBraces");async function Bd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=80,s=20,l=Math.max(o,(a.width+(t.padding??0)*2)*1.25,(t==null?void 0:t.width)??0),c=Math.max(s,a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),h=c/2,{cssStyles:u}=t,f=j.svg(n),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=l,m=c,y=g-h,x=m/4,b=[{x:y,y:0},{x,y:0},{x:0,y:m/2},{x,y:m},{x:y,y:m},...ol(-y,-m/2,h,50,270,90)],_=ot(b),v=f.path(_,p),k=n.insert(()=>v,":first-child");return k.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&k.selectChildren("path").attr("style",u),i&&t.look!=="handDrawn"&&k.selectChildren("path").attr("style",i),k.attr("transform",`translate(${-l/2}, ${-c/2})`),X(t,k),t.intersect=function(E){return W.polygon(t,b,E)},n}d(Bd,"curvedTrapezoid");var Zk=d((e,t,r,i,n,a)=>[`M${e},${t+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`].join(" "),"createCylinderPathD"),Kk=d((e,t,r,i,n,a)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`].join(" "),"createOuterCylinderPathD"),Qk=d((e,t,r,i,n,a)=>[`M${e-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Md(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+t.padding,t.width??0),l=s/2,c=l/(2.5+s/50),h=Math.max(a.height+c+t.padding,t.height??0);let u;const{cssStyles:f}=t;if(t.look==="handDrawn"){const p=j.svg(n),g=Kk(0,0,s,h,l,c),m=Qk(0,c,s,h,l,c),y=p.path(g,U(t,{})),x=p.path(m,U(t,{fill:"none"}));u=n.insert(()=>x,":first-child"),u=n.insert(()=>y,":first-child"),u.attr("class","basic label-container"),f&&u.attr("style",f)}else{const p=Zk(0,0,s,h,l,c);u=n.insert("path",":first-child").attr("d",p).attr("class","basic label-container").attr("style",Nt(f)).attr("style",i)}return u.attr("label-offset-y",c),u.attr("transform",`translate(${-s/2}, ${-(h/2+c)})`),X(t,u),o.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(t.padding??0)/1.5-(a.y-(a.top??0))})`),t.intersect=function(p){const g=W.rect(t,p),m=g.x-(t.x??0);if(l!=0&&(Math.abs(m)<(t.width??0)/2||Math.abs(m)==(t.width??0)/2&&Math.abs(g.y-(t.y??0))>(t.height??0)/2-c)){let y=c*c*(1-m*m/(l*l));y>0&&(y=Math.sqrt(y)),y=c-y,p.y-(t.y??0)>0&&(y=-y),g.y+=y}return g},n}d(Md,"cylinder");async function Ed(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=a.width+t.padding,l=a.height+t.padding,c=l*.2,h=-s/2,u=-l/2-c/2,{cssStyles:f}=t,p=j.svg(n),g=U(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const m=[{x:h,y:u+c},{x:-h,y:u+c},{x:-h,y:-u},{x:h,y:-u},{x:h,y:u},{x:-h,y:u},{x:-h,y:u+c}],y=p.polygon(m.map(b=>[b.x,b.y]),g),x=n.insert(()=>y,":first-child");return x.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",f),i&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),o.attr("transform",`translate(${h+(t.padding??0)/2-(a.x-(a.left??0))}, ${u+c+(t.padding??0)/2-(a.y-(a.top??0))})`),X(t,x),t.intersect=function(b){return W.rect(t,b)},n}d(Ed,"dividedRectangle");async function Fd(e,t){var f,p;const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,halfPadding:o}=await rt(e,t,it(t)),l=a.width/2+o+5,c=a.width/2+o;let h;const{cssStyles:u}=t;if(t.look==="handDrawn"){const g=j.svg(n),m=U(t,{roughness:.2,strokeWidth:2.5}),y=U(t,{roughness:.2,strokeWidth:1.5}),x=g.circle(0,0,l*2,m),b=g.circle(0,0,c*2,y);h=n.insert("g",":first-child"),h.attr("class",Nt(t.cssClasses)).attr("style",Nt(u)),(f=h.node())==null||f.appendChild(x),(p=h.node())==null||p.appendChild(b)}else{h=n.insert("g",":first-child");const g=h.insert("circle",":first-child"),m=h.insert("circle");h.attr("class","basic label-container").attr("style",i),g.attr("class","outer-circle").attr("style",i).attr("r",l).attr("cx",0).attr("cy",0),m.attr("class","inner-circle").attr("style",i).attr("r",c).attr("cx",0).attr("cy",0)}return X(t,h),t.intersect=function(g){return $.info("DoubleCircle intersect",t,l,g),W.circle(t,l,g)},n}d(Fd,"doublecircle");function $d(e,t,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:n}=Z(t);t.label="",t.labelStyle=i;const a=e.insert("g").attr("class",it(t)).attr("id",t.domId??t.id),o=7,{cssStyles:s}=t,l=j.svg(a),{nodeBorder:c}=r,h=U(t,{fillStyle:"solid"});t.look!=="handDrawn"&&(h.roughness=0);const u=l.circle(0,0,o*2,h),f=a.insert(()=>u,":first-child");return f.selectAll("path").attr("style",`fill: ${c} !important;`),s&&s.length>0&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",s),n&&t.look!=="handDrawn"&&f.selectAll("path").attr("style",n),X(t,f),t.intersect=function(p){return $.info("filledCircle intersect",t,{radius:o,point:p}),W.circle(t,o,p)},a}d($d,"filledCircle");async function Dd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=a.width+(t.padding??0),l=s+a.height,c=s+a.height,h=[{x:0,y:-l},{x:c,y:-l},{x:c/2,y:0}],{cssStyles:u}=t,f=j.svg(n),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=ot(h),m=f.path(g,p),y=n.insert(()=>m,":first-child").attr("transform",`translate(${-l/2}, ${l/2})`);return u&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",u),i&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",i),t.width=s,t.height=l,X(t,y),o.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-l/2+(t.padding??0)/2+(a.y-(a.top??0))})`),t.intersect=function(x){return $.info("Triangle intersect",t,h,x),W.polygon(t,h,x)},n}d(Dd,"flippedTriangle");function Rd(e,t,{dir:r,config:{state:i,themeVariables:n}}){const{nodeStyles:a}=Z(t);t.label="";const o=e.insert("g").attr("class",it(t)).attr("id",t.domId??t.id),{cssStyles:s}=t;let l=Math.max(70,(t==null?void 0:t.width)??0),c=Math.max(10,(t==null?void 0:t.height)??0);r==="LR"&&(l=Math.max(10,(t==null?void 0:t.width)??0),c=Math.max(70,(t==null?void 0:t.height)??0));const h=-1*l/2,u=-1*c/2,f=j.svg(o),p=U(t,{stroke:n.lineColor,fill:n.lineColor});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=f.rectangle(h,u,l,c,p),m=o.insert(()=>g,":first-child");s&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",s),a&&t.look!=="handDrawn"&&m.selectAll("path").attr("style",a),X(t,m);const y=(i==null?void 0:i.padding)??0;return t.width&&t.height&&(t.width+=y/2||0,t.height+=y/2||0),t.intersect=function(x){return W.rect(t,x)},o}d(Rd,"forkJoin");async function Od(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const n=80,a=50,{shapeSvg:o,bbox:s}=await rt(e,t,it(t)),l=Math.max(n,s.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),c=Math.max(a,s.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),h=c/2,{cssStyles:u}=t,f=j.svg(o),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=[{x:-l/2,y:-c/2},{x:l/2-h,y:-c/2},...ol(-l/2+h,0,h,50,90,270),{x:l/2-h,y:c/2},{x:-l/2,y:c/2}],m=ot(g),y=f.path(m,p),x=o.insert(()=>y,":first-child");return x.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",u),i&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",i),X(t,x),t.intersect=function(b){return $.info("Pill intersect",t,{radius:h,point:b}),W.polygon(t,g,b)},o}d(Od,"halfRoundedRectangle");var Jk=d((e,t,r,i,n)=>[`M${e+n},${t}`,`L${e+r-n},${t}`,`L${e+r},${t-i/2}`,`L${e+r-n},${t-i}`,`L${e+n},${t-i}`,`L${e},${t-i/2}`,"Z"].join(" "),"createHexagonPathD");async function Id(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=4,s=a.height+t.padding,l=s/o,c=a.width+2*l+t.padding,h=[{x:l,y:0},{x:c-l,y:0},{x:c,y:-s/2},{x:c-l,y:-s},{x:l,y:-s},{x:0,y:-s/2}];let u;const{cssStyles:f}=t;if(t.look==="handDrawn"){const p=j.svg(n),g=U(t,{}),m=Jk(0,0,c,s,l),y=p.path(m,g);u=n.insert(()=>y,":first-child").attr("transform",`translate(${-c/2}, ${s/2})`),f&&u.attr("style",f)}else u=Re(n,c,s,h);return i&&u.attr("style",i),t.width=c,t.height=s,X(t,u),t.intersect=function(p){return W.polygon(t,h,p)},n}d(Id,"hexagon");async function Pd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.label="",t.labelStyle=r;const{shapeSvg:n}=await rt(e,t,it(t)),a=Math.max(30,(t==null?void 0:t.width)??0),o=Math.max(30,(t==null?void 0:t.height)??0),{cssStyles:s}=t,l=j.svg(n),c=U(t,{});t.look!=="handDrawn"&&(c.roughness=0,c.fillStyle="solid");const h=[{x:0,y:0},{x:a,y:0},{x:0,y:o},{x:a,y:o}],u=ot(h),f=l.path(u,c),p=n.insert(()=>f,":first-child");return p.attr("class","basic label-container"),s&&t.look!=="handDrawn"&&p.selectChildren("path").attr("style",s),i&&t.look!=="handDrawn"&&p.selectChildren("path").attr("style",i),p.attr("transform",`translate(${-a/2}, ${-o/2})`),X(t,p),t.intersect=function(g){return $.info("Pill intersect",t,{points:h}),W.polygon(t,h,g)},n}d(Pd,"hourglass");async function Nd(e,t,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:n}=Z(t);t.labelStyle=n;const a=t.assetHeight??48,o=t.assetWidth??48,s=Math.max(a,o),l=i==null?void 0:i.wrappingWidth;t.width=Math.max(s,l??0);const{shapeSvg:c,bbox:h,label:u}=await rt(e,t,"icon-shape default"),f=t.pos==="t",p=s,g=s,{nodeBorder:m}=r,{stylesMap:y}=ei(t),x=-g/2,b=-p/2,_=t.label?8:0,v=j.svg(c),k=U(t,{stroke:"none",fill:"none"});t.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");const E=v.rectangle(x,b,g,p,k),A=Math.max(g,h.width),O=p+h.height+_,N=v.rectangle(-A/2,-O/2,A,O,{...k,fill:"transparent",stroke:"none"}),R=c.insert(()=>E,":first-child"),B=c.insert(()=>N);if(t.icon){const q=c.append("g");q.html(`${await Ca(t.icon,{height:s,width:s,fallbackPrefix:""})}`);const I=q.node().getBBox(),M=I.width,L=I.height,S=I.x,F=I.y;q.attr("transform",`translate(${-M/2-S},${f?h.height/2+_/2-L/2-F:-h.height/2-_/2-L/2-F})`),q.attr("style",`color: ${y.get("stroke")??m};`)}return u.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${f?-O/2:O/2-h.height})`),R.attr("transform",`translate(0,${f?h.height/2+_/2:-h.height/2-_/2})`),X(t,B),t.intersect=function(q){if($.info("iconSquare intersect",t,q),!t.label)return W.rect(t,q);const I=t.x??0,M=t.y??0,L=t.height??0;let S=[];return f?S=[{x:I-h.width/2,y:M-L/2},{x:I+h.width/2,y:M-L/2},{x:I+h.width/2,y:M-L/2+h.height+_},{x:I+g/2,y:M-L/2+h.height+_},{x:I+g/2,y:M+L/2},{x:I-g/2,y:M+L/2},{x:I-g/2,y:M-L/2+h.height+_},{x:I-h.width/2,y:M-L/2+h.height+_}]:S=[{x:I-g/2,y:M-L/2},{x:I+g/2,y:M-L/2},{x:I+g/2,y:M-L/2+p},{x:I+h.width/2,y:M-L/2+p},{x:I+h.width/2/2,y:M+L/2},{x:I-h.width/2,y:M+L/2},{x:I-h.width/2,y:M-L/2+p},{x:I-g/2,y:M-L/2+p}],W.polygon(t,S,q)},c}d(Nd,"icon");async function zd(e,t,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:n}=Z(t);t.labelStyle=n;const a=t.assetHeight??48,o=t.assetWidth??48,s=Math.max(a,o),l=i==null?void 0:i.wrappingWidth;t.width=Math.max(s,l??0);const{shapeSvg:c,bbox:h,label:u}=await rt(e,t,"icon-shape default"),f=20,p=t.label?8:0,g=t.pos==="t",{nodeBorder:m,mainBkg:y}=r,{stylesMap:x}=ei(t),b=j.svg(c),_=U(t,{});t.look!=="handDrawn"&&(_.roughness=0,_.fillStyle="solid");const v=x.get("fill");_.stroke=v??y;const k=c.append("g");t.icon&&k.html(`${await Ca(t.icon,{height:s,width:s,fallbackPrefix:""})}`);const E=k.node().getBBox(),A=E.width,O=E.height,N=E.x,R=E.y,B=Math.max(A,O)*Math.SQRT2+f*2,q=b.circle(0,0,B,_),I=Math.max(B,h.width),M=B+h.height+p,L=b.rectangle(-I/2,-M/2,I,M,{..._,fill:"transparent",stroke:"none"}),S=c.insert(()=>q,":first-child"),F=c.insert(()=>L);return k.attr("transform",`translate(${-A/2-N},${g?h.height/2+p/2-O/2-R:-h.height/2-p/2-O/2-R})`),k.attr("style",`color: ${x.get("stroke")??m};`),u.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${g?-M/2:M/2-h.height})`),S.attr("transform",`translate(0,${g?h.height/2+p/2:-h.height/2-p/2})`),X(t,F),t.intersect=function(T){return $.info("iconSquare intersect",t,T),W.rect(t,T)},c}d(zd,"iconCircle");async function qd(e,t,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:n}=Z(t);t.labelStyle=n;const a=t.assetHeight??48,o=t.assetWidth??48,s=Math.max(a,o),l=i==null?void 0:i.wrappingWidth;t.width=Math.max(s,l??0);const{shapeSvg:c,bbox:h,halfPadding:u,label:f}=await rt(e,t,"icon-shape default"),p=t.pos==="t",g=s+u*2,m=s+u*2,{nodeBorder:y,mainBkg:x}=r,{stylesMap:b}=ei(t),_=-m/2,v=-g/2,k=t.label?8:0,E=j.svg(c),A=U(t,{});t.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");const O=b.get("fill");A.stroke=O??x;const N=E.path(De(_,v,m,g,5),A),R=Math.max(m,h.width),B=g+h.height+k,q=E.rectangle(-R/2,-B/2,R,B,{...A,fill:"transparent",stroke:"none"}),I=c.insert(()=>N,":first-child").attr("class","icon-shape2"),M=c.insert(()=>q);if(t.icon){const L=c.append("g");L.html(`${await Ca(t.icon,{height:s,width:s,fallbackPrefix:""})}`);const S=L.node().getBBox(),F=S.width,T=S.height,z=S.x,Y=S.y;L.attr("transform",`translate(${-F/2-z},${p?h.height/2+k/2-T/2-Y:-h.height/2-k/2-T/2-Y})`),L.attr("style",`color: ${b.get("stroke")??y};`)}return f.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${p?-B/2:B/2-h.height})`),I.attr("transform",`translate(0,${p?h.height/2+k/2:-h.height/2-k/2})`),X(t,M),t.intersect=function(L){if($.info("iconSquare intersect",t,L),!t.label)return W.rect(t,L);const S=t.x??0,F=t.y??0,T=t.height??0;let z=[];return p?z=[{x:S-h.width/2,y:F-T/2},{x:S+h.width/2,y:F-T/2},{x:S+h.width/2,y:F-T/2+h.height+k},{x:S+m/2,y:F-T/2+h.height+k},{x:S+m/2,y:F+T/2},{x:S-m/2,y:F+T/2},{x:S-m/2,y:F-T/2+h.height+k},{x:S-h.width/2,y:F-T/2+h.height+k}]:z=[{x:S-m/2,y:F-T/2},{x:S+m/2,y:F-T/2},{x:S+m/2,y:F-T/2+g},{x:S+h.width/2,y:F-T/2+g},{x:S+h.width/2/2,y:F+T/2},{x:S-h.width/2,y:F+T/2},{x:S-h.width/2,y:F-T/2+g},{x:S-m/2,y:F-T/2+g}],W.polygon(t,z,L)},c}d(qd,"iconRounded");async function Wd(e,t,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:n}=Z(t);t.labelStyle=n;const a=t.assetHeight??48,o=t.assetWidth??48,s=Math.max(a,o),l=i==null?void 0:i.wrappingWidth;t.width=Math.max(s,l??0);const{shapeSvg:c,bbox:h,halfPadding:u,label:f}=await rt(e,t,"icon-shape default"),p=t.pos==="t",g=s+u*2,m=s+u*2,{nodeBorder:y,mainBkg:x}=r,{stylesMap:b}=ei(t),_=-m/2,v=-g/2,k=t.label?8:0,E=j.svg(c),A=U(t,{});t.look!=="handDrawn"&&(A.roughness=0,A.fillStyle="solid");const O=b.get("fill");A.stroke=O??x;const N=E.path(De(_,v,m,g,.1),A),R=Math.max(m,h.width),B=g+h.height+k,q=E.rectangle(-R/2,-B/2,R,B,{...A,fill:"transparent",stroke:"none"}),I=c.insert(()=>N,":first-child"),M=c.insert(()=>q);if(t.icon){const L=c.append("g");L.html(`${await Ca(t.icon,{height:s,width:s,fallbackPrefix:""})}`);const S=L.node().getBBox(),F=S.width,T=S.height,z=S.x,Y=S.y;L.attr("transform",`translate(${-F/2-z},${p?h.height/2+k/2-T/2-Y:-h.height/2-k/2-T/2-Y})`),L.attr("style",`color: ${b.get("stroke")??y};`)}return f.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${p?-B/2:B/2-h.height})`),I.attr("transform",`translate(0,${p?h.height/2+k/2:-h.height/2-k/2})`),X(t,M),t.intersect=function(L){if($.info("iconSquare intersect",t,L),!t.label)return W.rect(t,L);const S=t.x??0,F=t.y??0,T=t.height??0;let z=[];return p?z=[{x:S-h.width/2,y:F-T/2},{x:S+h.width/2,y:F-T/2},{x:S+h.width/2,y:F-T/2+h.height+k},{x:S+m/2,y:F-T/2+h.height+k},{x:S+m/2,y:F+T/2},{x:S-m/2,y:F+T/2},{x:S-m/2,y:F-T/2+h.height+k},{x:S-h.width/2,y:F-T/2+h.height+k}]:z=[{x:S-m/2,y:F-T/2},{x:S+m/2,y:F-T/2},{x:S+m/2,y:F-T/2+g},{x:S+h.width/2,y:F-T/2+g},{x:S+h.width/2/2,y:F+T/2},{x:S-h.width/2,y:F+T/2},{x:S-h.width/2,y:F-T/2+g},{x:S-m/2,y:F-T/2+g}],W.polygon(t,z,L)},c}d(Wd,"iconSquare");async function Hd(e,t,{config:{flowchart:r}}){const i=new Image;i.src=(t==null?void 0:t.img)??"",await i.decode();const n=Number(i.naturalWidth.toString().replace("px","")),a=Number(i.naturalHeight.toString().replace("px",""));t.imageAspectRatio=n/a;const{labelStyles:o}=Z(t);t.labelStyle=o;const s=r==null?void 0:r.wrappingWidth;t.defaultWidth=r==null?void 0:r.wrappingWidth;const l=Math.max(t.label?s??0:0,(t==null?void 0:t.assetWidth)??n),c=t.constraint==="on"&&t!=null&&t.assetHeight?t.assetHeight*t.imageAspectRatio:l,h=t.constraint==="on"?c/t.imageAspectRatio:(t==null?void 0:t.assetHeight)??a;t.width=Math.max(c,s??0);const{shapeSvg:u,bbox:f,label:p}=await rt(e,t,"image-shape default"),g=t.pos==="t",m=-c/2,y=-h/2,x=t.label?8:0,b=j.svg(u),_=U(t,{});t.look!=="handDrawn"&&(_.roughness=0,_.fillStyle="solid");const v=b.rectangle(m,y,c,h,_),k=Math.max(c,f.width),E=h+f.height+x,A=b.rectangle(-k/2,-E/2,k,E,{..._,fill:"none",stroke:"none"}),O=u.insert(()=>v,":first-child"),N=u.insert(()=>A);if(t.img){const R=u.append("image");R.attr("href",t.img),R.attr("width",c),R.attr("height",h),R.attr("preserveAspectRatio","none"),R.attr("transform",`translate(${-c/2},${g?E/2-h:-E/2})`)}return p.attr("transform",`translate(${-f.width/2-(f.x-(f.left??0))},${g?-h/2-f.height/2-x/2:h/2-f.height/2+x/2})`),O.attr("transform",`translate(0,${g?f.height/2+x/2:-f.height/2-x/2})`),X(t,N),t.intersect=function(R){if($.info("iconSquare intersect",t,R),!t.label)return W.rect(t,R);const B=t.x??0,q=t.y??0,I=t.height??0;let M=[];return g?M=[{x:B-f.width/2,y:q-I/2},{x:B+f.width/2,y:q-I/2},{x:B+f.width/2,y:q-I/2+f.height+x},{x:B+c/2,y:q-I/2+f.height+x},{x:B+c/2,y:q+I/2},{x:B-c/2,y:q+I/2},{x:B-c/2,y:q-I/2+f.height+x},{x:B-f.width/2,y:q-I/2+f.height+x}]:M=[{x:B-c/2,y:q-I/2},{x:B+c/2,y:q-I/2},{x:B+c/2,y:q-I/2+h},{x:B+f.width/2,y:q-I/2+h},{x:B+f.width/2/2,y:q+I/2},{x:B-f.width/2,y:q+I/2},{x:B-f.width/2,y:q-I/2+h},{x:B-c/2,y:q-I/2+h}],W.polygon(t,M,R)},u}d(Hd,"imageSquare");async function jd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),s=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),l=[{x:0,y:0},{x:o,y:0},{x:o+3*s/6,y:-s},{x:-3*s/6,y:-s}];let c;const{cssStyles:h}=t;if(t.look==="handDrawn"){const u=j.svg(n),f=U(t,{}),p=ot(l),g=u.path(p,f);c=n.insert(()=>g,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),h&&c.attr("style",h)}else c=Re(n,o,s,l);return i&&c.attr("style",i),t.width=o,t.height=s,X(t,c),t.intersect=function(u){return W.polygon(t,l,u)},n}d(jd,"inv_trapezoid");async function Ia(e,t,r){const{labelStyles:i,nodeStyles:n}=Z(t);t.labelStyle=i;const{shapeSvg:a,bbox:o}=await rt(e,t,it(t)),s=Math.max(o.width+r.labelPaddingX*2,(t==null?void 0:t.width)||0),l=Math.max(o.height+r.labelPaddingY*2,(t==null?void 0:t.height)||0),c=-s/2,h=-l/2;let u,{rx:f,ry:p}=t;const{cssStyles:g}=t;if(r!=null&&r.rx&&r.ry&&(f=r.rx,p=r.ry),t.look==="handDrawn"){const m=j.svg(a),y=U(t,{}),x=f||p?m.path(De(c,h,s,l,f||0),y):m.rectangle(c,h,s,l,y);u=a.insert(()=>x,":first-child"),u.attr("class","basic label-container").attr("style",Nt(g))}else u=a.insert("rect",":first-child"),u.attr("class","basic label-container").attr("style",n).attr("rx",Nt(f)).attr("ry",Nt(p)).attr("x",c).attr("y",h).attr("width",s).attr("height",l);return X(t,u),t.intersect=function(m){return W.rect(t,m)},a}d(Ia,"drawRect");async function Ud(e,t){const{shapeSvg:r,bbox:i,label:n}=await rt(e,t,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),n.attr("transform",`translate(${-(i.width/2)-(i.x-(i.left??0))}, ${-(i.height/2)-(i.y-(i.top??0))})`),X(t,a),t.intersect=function(l){return W.rect(t,l)},r}d(Ud,"labelRect");async function Yd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=Math.max(a.width+(t.padding??0),(t==null?void 0:t.width)??0),s=Math.max(a.height+(t.padding??0),(t==null?void 0:t.height)??0),l=[{x:0,y:0},{x:o+3*s/6,y:0},{x:o,y:-s},{x:-(3*s)/6,y:-s}];let c;const{cssStyles:h}=t;if(t.look==="handDrawn"){const u=j.svg(n),f=U(t,{}),p=ot(l),g=u.path(p,f);c=n.insert(()=>g,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),h&&c.attr("style",h)}else c=Re(n,o,s,l);return i&&c.attr("style",i),t.width=o,t.height=s,X(t,c),t.intersect=function(u){return W.polygon(t,l,u)},n}d(Yd,"lean_left");async function Gd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=Math.max(a.width+(t.padding??0),(t==null?void 0:t.width)??0),s=Math.max(a.height+(t.padding??0),(t==null?void 0:t.height)??0),l=[{x:-3*s/6,y:0},{x:o,y:0},{x:o+3*s/6,y:-s},{x:0,y:-s}];let c;const{cssStyles:h}=t;if(t.look==="handDrawn"){const u=j.svg(n),f=U(t,{}),p=ot(l),g=u.path(p,f);c=n.insert(()=>g,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),h&&c.attr("style",h)}else c=Re(n,o,s,l);return i&&c.attr("style",i),t.width=o,t.height=s,X(t,c),t.intersect=function(u){return W.polygon(t,l,u)},n}d(Gd,"lean_right");function Vd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.label="",t.labelStyle=r;const n=e.insert("g").attr("class",it(t)).attr("id",t.domId??t.id),{cssStyles:a}=t,o=Math.max(35,(t==null?void 0:t.width)??0),s=Math.max(35,(t==null?void 0:t.height)??0),l=7,c=[{x:o,y:0},{x:0,y:s+l/2},{x:o-2*l,y:s+l/2},{x:0,y:2*s},{x:o,y:s-l/2},{x:2*l,y:s-l/2}],h=j.svg(n),u=U(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");const f=ot(c),p=h.path(f,u),g=n.insert(()=>p,":first-child");return a&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",a),i&&t.look!=="handDrawn"&&g.selectAll("path").attr("style",i),g.attr("transform",`translate(-${o/2},${-s})`),X(t,g),t.intersect=function(m){return $.info("lightningBolt intersect",t,m),W.polygon(t,c,m)},n}d(Vd,"lightningBolt");var tS=d((e,t,r,i,n,a,o)=>[`M${e},${t+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`,`M${e},${t+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),eS=d((e,t,r,i,n,a,o)=>[`M${e},${t+a}`,`M${e+r},${t+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,`l0,${-i}`,`M${e},${t+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),rS=d((e,t,r,i,n,a)=>[`M${e-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");async function Xd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0),t.width??0),l=s/2,c=l/(2.5+s/50),h=Math.max(a.height+c+(t.padding??0),t.height??0),u=h*.1;let f;const{cssStyles:p}=t;if(t.look==="handDrawn"){const g=j.svg(n),m=eS(0,0,s,h,l,c,u),y=rS(0,c,s,h,l,c),x=U(t,{}),b=g.path(m,x),_=g.path(y,x);n.insert(()=>_,":first-child").attr("class","line"),f=n.insert(()=>b,":first-child"),f.attr("class","basic label-container"),p&&f.attr("style",p)}else{const g=tS(0,0,s,h,l,c,u);f=n.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Nt(p)).attr("style",i)}return f.attr("label-offset-y",c),f.attr("transform",`translate(${-s/2}, ${-(h/2+c)})`),X(t,f),o.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+c-(a.y-(a.top??0))})`),t.intersect=function(g){const m=W.rect(t,g),y=m.x-(t.x??0);if(l!=0&&(Math.abs(y)<(t.width??0)/2||Math.abs(y)==(t.width??0)/2&&Math.abs(m.y-(t.y??0))>(t.height??0)/2-c)){let x=c*c*(1-y*y/(l*l));x>0&&(x=Math.sqrt(x)),x=c-x,g.y-(t.y??0)>0&&(x=-x),m.y+=x}return m},n}d(Xd,"linedCylinder");async function Zd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=l/4,h=l+c,{cssStyles:u}=t,f=j.svg(n),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=[{x:-s/2-s/2*.1,y:-h/2},{x:-s/2-s/2*.1,y:h/2},...Ye(-s/2-s/2*.1,h/2,s/2+s/2*.1,h/2,c,.8),{x:s/2+s/2*.1,y:-h/2},{x:-s/2-s/2*.1,y:-h/2},{x:-s/2,y:-h/2},{x:-s/2,y:h/2*1.1},{x:-s/2,y:-h/2}],m=f.polygon(g.map(x=>[x.x,x.y]),p),y=n.insert(()=>m,":first-child");return y.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",u),i&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",i),y.attr("transform",`translate(0,${-c/2})`),o.attr("transform",`translate(${-s/2+(t.padding??0)+s/2*.1/2-(a.x-(a.left??0))},${-l/2+(t.padding??0)-c/2-(a.y-(a.top??0))})`),X(t,y),t.intersect=function(x){return W.polygon(t,g,x)},n}d(Zd,"linedWaveEdgedRect");async function Kd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=5,h=-s/2,u=-l/2,{cssStyles:f}=t,p=j.svg(n),g=U(t,{}),m=[{x:h-c,y:u+c},{x:h-c,y:u+l+c},{x:h+s-c,y:u+l+c},{x:h+s-c,y:u+l},{x:h+s,y:u+l},{x:h+s,y:u+l-c},{x:h+s+c,y:u+l-c},{x:h+s+c,y:u-c},{x:h+c,y:u-c},{x:h+c,y:u},{x:h,y:u},{x:h,y:u+c}],y=[{x:h,y:u+c},{x:h+s-c,y:u+c},{x:h+s-c,y:u+l},{x:h+s,y:u+l},{x:h+s,y:u},{x:h,y:u}];t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const x=ot(m),b=p.path(x,g),_=ot(y),v=p.path(_,{...g,fill:"none"}),k=n.insert(()=>v,":first-child");return k.insert(()=>b,":first-child"),k.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",f),i&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",i),o.attr("transform",`translate(${-(a.width/2)-c-(a.x-(a.left??0))}, ${-(a.height/2)+c-(a.y-(a.top??0))})`),X(t,k),t.intersect=function(E){return W.polygon(t,m,E)},n}d(Kd,"multiRect");async function Qd(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=l/4,h=l+c,u=-s/2,f=-h/2,p=5,{cssStyles:g}=t,m=Ye(u-p,f+h+p,u+s-p,f+h+p,c,.8),y=m==null?void 0:m[m.length-1],x=[{x:u-p,y:f+p},{x:u-p,y:f+h+p},...m,{x:u+s-p,y:y.y-p},{x:u+s,y:y.y-p},{x:u+s,y:y.y-2*p},{x:u+s+p,y:y.y-2*p},{x:u+s+p,y:f-p},{x:u+p,y:f-p},{x:u+p,y:f},{x:u,y:f},{x:u,y:f+p}],b=[{x:u,y:f+p},{x:u+s-p,y:f+p},{x:u+s-p,y:y.y-p},{x:u+s,y:y.y-p},{x:u+s,y:f},{x:u,y:f}],_=j.svg(n),v=U(t,{});t.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");const k=ot(x),E=_.path(k,v),A=ot(b),O=_.path(A,v),N=n.insert(()=>E,":first-child");return N.insert(()=>O),N.attr("class","basic label-container"),g&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",g),i&&t.look!=="handDrawn"&&N.selectAll("path").attr("style",i),N.attr("transform",`translate(0,${-c/2})`),o.attr("transform",`translate(${-(a.width/2)-p-(a.x-(a.left??0))}, ${-(a.height/2)+p-c/2-(a.y-(a.top??0))})`),X(t,N),t.intersect=function(R){return W.polygon(t,x,R)},n}d(Qd,"multiWaveEdgedRectangle");async function Jd(e,t,{config:{themeVariables:r}}){var x;const{labelStyles:i,nodeStyles:n}=Z(t);t.labelStyle=i,t.useHtmlLabels||((x=he().flowchart)==null?void 0:x.htmlLabels)!==!1||(t.centerLabel=!0);const{shapeSvg:o,bbox:s}=await rt(e,t,it(t)),l=Math.max(s.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),c=Math.max(s.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),h=-l/2,u=-c/2,{cssStyles:f}=t,p=j.svg(o),g=U(t,{fill:r.noteBkgColor,stroke:r.noteBorderColor});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const m=p.rectangle(h,u,l,c,g),y=o.insert(()=>m,":first-child");return y.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",f),n&&t.look!=="handDrawn"&&y.selectAll("path").attr("style",n),X(t,y),t.intersect=function(b){return W.rect(t,b)},o}d(Jd,"note");var iS=d((e,t,r)=>[`M${e+r/2},${t}`,`L${e+r},${t-r/2}`,`L${e+r/2},${t-r}`,`L${e},${t-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");async function tg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=a.width+t.padding,s=a.height+t.padding,l=o+s,c=[{x:l/2,y:0},{x:l,y:-l/2},{x:l/2,y:-l},{x:0,y:-l/2}];let h;const{cssStyles:u}=t;if(t.look==="handDrawn"){const f=j.svg(n),p=U(t,{}),g=iS(0,0,l),m=f.path(g,p);h=n.insert(()=>m,":first-child").attr("transform",`translate(${-l/2}, ${l/2})`),u&&h.attr("style",u)}else h=Re(n,l,l,c);return i&&h.attr("style",i),X(t,h),t.intersect=function(f){return $.debug(`APA12 Intersect called SPLIT +point:`,f,` +node: +`,t,` +res:`,W.polygon(t,c,f)),W.polygon(t,c,f)},n}d(tg,"question");async function eg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0),(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0),(t==null?void 0:t.height)??0),c=-s/2,h=-l/2,u=h/2,f=[{x:c+u,y:h},{x:c,y:0},{x:c+u,y:-h},{x:-c,y:-h},{x:-c,y:h}],{cssStyles:p}=t,g=j.svg(n),m=U(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");const y=ot(f),x=g.path(y,m),b=n.insert(()=>x,":first-child");return b.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&b.selectAll("path").attr("style",p),i&&t.look!=="handDrawn"&&b.selectAll("path").attr("style",i),b.attr("transform",`translate(${-u/2},0)`),o.attr("transform",`translate(${-u/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),X(t,b),t.intersect=function(_){return W.polygon(t,f,_)},n}d(eg,"rect_left_inv_arrow");async function rg(e,t){var O,N;const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;let n;t.cssClasses?n="node "+t.cssClasses:n="node default";const a=e.insert("g").attr("class",n).attr("id",t.domId||t.id),o=a.insert("g"),s=a.insert("g").attr("class","label").attr("style",i),l=t.description,c=t.label,h=s.node().appendChild(await nr(c,t.labelStyle,!0,!0));let u={width:0,height:0};if(Bt((N=(O=ct())==null?void 0:O.flowchart)==null?void 0:N.htmlLabels)){const R=h.children[0],B=lt(h);u=R.getBoundingClientRect(),B.attr("width",u.width),B.attr("height",u.height)}$.info("Text 2",l);const f=l||[],p=h.getBBox(),g=s.node().appendChild(await nr(f.join?f.join("
    "):f,t.labelStyle,!0,!0)),m=g.children[0],y=lt(g);u=m.getBoundingClientRect(),y.attr("width",u.width),y.attr("height",u.height);const x=(t.padding||0)/2;lt(g).attr("transform","translate( "+(u.width>p.width?0:(p.width-u.width)/2)+", "+(p.height+x+5)+")"),lt(h).attr("transform","translate( "+(u.width($.debug("Rough node insert CXC",q),I),":first-child"),E=a.insert(()=>($.debug("Rough node insert CXC",q),q),":first-child")}else E=o.insert("rect",":first-child"),A=o.insert("line"),E.attr("class","outer title-state").attr("style",i).attr("x",-u.width/2-x).attr("y",-u.height/2-x).attr("width",u.width+(t.padding||0)).attr("height",u.height+(t.padding||0)),A.attr("class","divider").attr("x1",-u.width/2-x).attr("x2",u.width/2+x).attr("y1",-u.height/2-x+p.height+x).attr("y2",-u.height/2-x+p.height+x);return X(t,E),t.intersect=function(R){return W.rect(t,R)},a}d(rg,"rectWithTitle");async function ig(e,t){const r={rx:5,ry:5,classes:"",labelPaddingX:((t==null?void 0:t.padding)||0)*1,labelPaddingY:((t==null?void 0:t.padding)||0)*1};return Ia(e,t,r)}d(ig,"roundedRect");async function ng(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=(t==null?void 0:t.padding)??0,l=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),c=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),h=-a.width/2-s,u=-a.height/2-s,{cssStyles:f}=t,p=j.svg(n),g=U(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const m=[{x:h,y:u},{x:h+l+8,y:u},{x:h+l+8,y:u+c},{x:h-8,y:u+c},{x:h-8,y:u},{x:h,y:u},{x:h,y:u+c}],y=p.polygon(m.map(b=>[b.x,b.y]),g),x=n.insert(()=>y,":first-child");return x.attr("class","basic label-container").attr("style",Nt(f)),i&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),f&&t.look!=="handDrawn"&&x.selectAll("path").attr("style",i),o.attr("transform",`translate(${-l/2+4+(t.padding??0)-(a.x-(a.left??0))},${-c/2+(t.padding??0)-(a.y-(a.top??0))})`),X(t,x),t.intersect=function(b){return W.rect(t,b)},n}d(ng,"shadedProcess");async function ag(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=-s/2,h=-l/2,{cssStyles:u}=t,f=j.svg(n),p=U(t,{});t.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");const g=[{x:c,y:h},{x:c,y:h+l},{x:c+s,y:h+l},{x:c+s,y:h-l/2}],m=ot(g),y=f.path(m,p),x=n.insert(()=>y,":first-child");return x.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",u),i&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",i),x.attr("transform",`translate(0, ${l/4})`),o.attr("transform",`translate(${-s/2+(t.padding??0)-(a.x-(a.left??0))}, ${-l/4+(t.padding??0)-(a.y-(a.top??0))})`),X(t,x),t.intersect=function(b){return W.polygon(t,g,b)},n}d(ag,"slopedRect");async function sg(e,t){const r={rx:0,ry:0,classes:"",labelPaddingX:((t==null?void 0:t.padding)||0)*2,labelPaddingY:((t==null?void 0:t.padding)||0)*1};return Ia(e,t,r)}d(sg,"squareRect");async function og(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=a.height+t.padding,s=a.width+o/4+t.padding;let l;const{cssStyles:c}=t;if(t.look==="handDrawn"){const h=j.svg(n),u=U(t,{}),f=De(-s/2,-o/2,s,o,o/2),p=h.path(f,u);l=n.insert(()=>p,":first-child"),l.attr("class","basic label-container").attr("style",Nt(c))}else l=n.insert("rect",":first-child"),l.attr("class","basic label-container").attr("style",i).attr("rx",o/2).attr("ry",o/2).attr("x",-s/2).attr("y",-o/2).attr("width",s).attr("height",o);return X(t,l),t.intersect=function(h){return W.rect(t,h)},n}d(og,"stadium");async function lg(e,t){return Ia(e,t,{rx:5,ry:5,classes:"flowchart-node"})}d(lg,"state");function cg(e,t,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:n}=Z(t);t.labelStyle=i;const{cssStyles:a}=t,{lineColor:o,stateBorder:s,nodeBorder:l}=r,c=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),h=j.svg(c),u=U(t,{});t.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");const f=h.circle(0,0,14,{...u,stroke:o,strokeWidth:2}),p=s??l,g=h.circle(0,0,5,{...u,fill:p,stroke:p,strokeWidth:2,fillStyle:"solid"}),m=c.insert(()=>f,":first-child");return m.insert(()=>g),a&&m.selectAll("path").attr("style",a),n&&m.selectAll("path").attr("style",n),X(t,m),t.intersect=function(y){return W.circle(t,7,y)},c}d(cg,"stateEnd");function hg(e,t,{config:{themeVariables:r}}){const{lineColor:i}=r,n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id);let a;if(t.look==="handDrawn"){const s=j.svg(n).circle(0,0,14,Ik(i));a=n.insert(()=>s),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=n.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return X(t,a),t.intersect=function(o){return W.circle(t,7,o)},n}d(hg,"stateStart");async function ug(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=((t==null?void 0:t.padding)||0)/2,s=a.width+t.padding,l=a.height+t.padding,c=-a.width/2-o,h=-a.height/2-o,u=[{x:0,y:0},{x:s,y:0},{x:s,y:-l},{x:0,y:-l},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-l},{x:-8,y:-l},{x:-8,y:0}];if(t.look==="handDrawn"){const f=j.svg(n),p=U(t,{}),g=f.rectangle(c-8,h,s+16,l,p),m=f.line(c,h,c,h+l,p),y=f.line(c+s,h,c+s,h+l,p);n.insert(()=>m,":first-child"),n.insert(()=>y,":first-child");const x=n.insert(()=>g,":first-child"),{cssStyles:b}=t;x.attr("class","basic label-container").attr("style",Nt(b)),X(t,x)}else{const f=Re(n,s,l,u);i&&f.attr("style",i),X(t,f)}return t.intersect=function(f){return W.polygon(t,u,f)},n}d(ug,"subroutine");async function fg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),s=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),l=-o/2,c=-s/2,h=.2*s,u=.2*s,{cssStyles:f}=t,p=j.svg(n),g=U(t,{}),m=[{x:l-h/2,y:c},{x:l+o+h/2,y:c},{x:l+o+h/2,y:c+s},{x:l-h/2,y:c+s}],y=[{x:l+o-h/2,y:c+s},{x:l+o+h/2,y:c+s},{x:l+o+h/2,y:c+s-u}];t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const x=ot(m),b=p.path(x,g),_=ot(y),v=p.path(_,{...g,fillStyle:"solid"}),k=n.insert(()=>v,":first-child");return k.insert(()=>b,":first-child"),k.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",f),i&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",i),X(t,k),t.intersect=function(E){return W.polygon(t,m,E)},n}d(fg,"taggedRect");async function pg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=l/4,h=.2*s,u=.2*l,f=l+c,{cssStyles:p}=t,g=j.svg(n),m=U(t,{});t.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");const y=[{x:-s/2-s/2*.1,y:f/2},...Ye(-s/2-s/2*.1,f/2,s/2+s/2*.1,f/2,c,.8),{x:s/2+s/2*.1,y:-f/2},{x:-s/2-s/2*.1,y:-f/2}],x=-s/2+s/2*.1,b=-f/2-u*.4,_=[{x:x+s-h,y:(b+l)*1.4},{x:x+s,y:b+l-u},{x:x+s,y:(b+l)*.9},...Ye(x+s,(b+l)*1.3,x+s-h,(b+l)*1.5,-l*.03,.5)],v=ot(y),k=g.path(v,m),E=ot(_),A=g.path(E,{...m,fillStyle:"solid"}),O=n.insert(()=>A,":first-child");return O.insert(()=>k,":first-child"),O.attr("class","basic label-container"),p&&t.look!=="handDrawn"&&O.selectAll("path").attr("style",p),i&&t.look!=="handDrawn"&&O.selectAll("path").attr("style",i),O.attr("transform",`translate(0,${-c/2})`),o.attr("transform",`translate(${-s/2+(t.padding??0)-(a.x-(a.left??0))},${-l/2+(t.padding??0)-c/2-(a.y-(a.top??0))})`),X(t,O),t.intersect=function(N){return W.polygon(t,y,N)},n}d(pg,"taggedWaveEdgedRectangle");async function dg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=Math.max(a.width+t.padding,(t==null?void 0:t.width)||0),s=Math.max(a.height+t.padding,(t==null?void 0:t.height)||0),l=-o/2,c=-s/2,h=n.insert("rect",":first-child");return h.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",l).attr("y",c).attr("width",o).attr("height",s),X(t,h),t.intersect=function(u){return W.rect(t,u)},n}d(dg,"text");var nS=d((e,t,r,i,n,a)=>`M${e},${t} + a${n},${a} 0,0,1 0,${-i} + l${r},0 + a${n},${a} 0,0,1 0,${i} + M${r},${-i} + a${n},${a} 0,0,0 0,${i} + l${-r},0`,"createCylinderPathD"),aS=d((e,t,r,i,n,a)=>[`M${e},${t}`,`M${e+r},${t}`,`a${n},${a} 0,0,0 0,${-i}`,`l${-r},0`,`a${n},${a} 0,0,0 0,${i}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),sS=d((e,t,r,i,n,a)=>[`M${e+r/2},${-i/2}`,`a${n},${a} 0,0,0 0,${i}`].join(" "),"createInnerCylinderPathD");async function gg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o,halfPadding:s}=await rt(e,t,it(t)),l=t.look==="neo"?s*2:s,c=a.height+l,h=c/2,u=h/(2.5+c/50),f=a.width+u+l,{cssStyles:p}=t;let g;if(t.look==="handDrawn"){const m=j.svg(n),y=aS(0,0,f,c,u,h),x=sS(0,0,f,c,u,h),b=m.path(y,U(t,{})),_=m.path(x,U(t,{fill:"none"}));g=n.insert(()=>_,":first-child"),g=n.insert(()=>b,":first-child"),g.attr("class","basic label-container"),p&&g.attr("style",p)}else{const m=nS(0,0,f,c,u,h);g=n.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Nt(p)).attr("style",i),g.attr("class","basic label-container"),p&&g.selectAll("path").attr("style",p),i&&g.selectAll("path").attr("style",i)}return g.attr("label-offset-x",u),g.attr("transform",`translate(${-f/2}, ${c/2} )`),o.attr("transform",`translate(${-(a.width/2)-u-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),X(t,g),t.intersect=function(m){const y=W.rect(t,m),x=y.y-(t.y??0);if(h!=0&&(Math.abs(x)<(t.height??0)/2||Math.abs(x)==(t.height??0)/2&&Math.abs(y.x-(t.x??0))>(t.width??0)/2-u)){let b=u*u*(1-x*x/(h*h));b!=0&&(b=Math.sqrt(Math.abs(b))),b=u-b,m.x-(t.x??0)>0&&(b=-b),y.x+=b}return y},n}d(gg,"tiltedCylinder");async function mg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=a.width+t.padding,s=a.height+t.padding,l=[{x:-3*s/6,y:0},{x:o+3*s/6,y:0},{x:o,y:-s},{x:0,y:-s}];let c;const{cssStyles:h}=t;if(t.look==="handDrawn"){const u=j.svg(n),f=U(t,{}),p=ot(l),g=u.path(p,f);c=n.insert(()=>g,":first-child").attr("transform",`translate(${-o/2}, ${s/2})`),h&&c.attr("style",h)}else c=Re(n,o,s,l);return i&&c.attr("style",i),t.width=o,t.height=s,X(t,c),t.intersect=function(u){return W.polygon(t,l,u)},n}d(mg,"trapezoid");async function yg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=60,s=20,l=Math.max(o,a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),c=Math.max(s,a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),{cssStyles:h}=t,u=j.svg(n),f=U(t,{});t.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");const p=[{x:-l/2*.8,y:-c/2},{x:l/2*.8,y:-c/2},{x:l/2,y:-c/2*.6},{x:l/2,y:c/2},{x:-l/2,y:c/2},{x:-l/2,y:-c/2*.6}],g=ot(p),m=u.path(g,f),y=n.insert(()=>m,":first-child");return y.attr("class","basic label-container"),h&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",h),i&&t.look!=="handDrawn"&&y.selectChildren("path").attr("style",i),X(t,y),t.intersect=function(x){return W.polygon(t,p,x)},n}d(yg,"trapezoidalPentagon");async function xg(e,t){var b;const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Bt((b=ct().flowchart)==null?void 0:b.htmlLabels),l=a.width+(t.padding??0),c=l+a.height,h=l+a.height,u=[{x:0,y:0},{x:h,y:0},{x:h/2,y:-c}],{cssStyles:f}=t,p=j.svg(n),g=U(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const m=ot(u),y=p.path(m,g),x=n.insert(()=>y,":first-child").attr("transform",`translate(${-c/2}, ${c/2})`);return f&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",f),i&&t.look!=="handDrawn"&&x.selectChildren("path").attr("style",i),t.width=l,t.height=c,X(t,x),o.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${c/2-(a.height+(t.padding??0)/(s?2:1)-(a.y-(a.top??0)))})`),t.intersect=function(_){return $.info("Triangle intersect",t,u,_),W.polygon(t,u,_)},n}d(xg,"triangle");async function bg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=l/8,h=l+c,{cssStyles:u}=t,p=70-s,g=p>0?p/2:0,m=j.svg(n),y=U(t,{});t.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");const x=[{x:-s/2-g,y:h/2},...Ye(-s/2-g,h/2,s/2+g,h/2,c,.8),{x:s/2+g,y:-h/2},{x:-s/2-g,y:-h/2}],b=ot(x),_=m.path(b,y),v=n.insert(()=>_,":first-child");return v.attr("class","basic label-container"),u&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",u),i&&t.look!=="handDrawn"&&v.selectAll("path").attr("style",i),v.attr("transform",`translate(0,${-c/2})`),o.attr("transform",`translate(${-s/2+(t.padding??0)-(a.x-(a.left??0))},${-l/2+(t.padding??0)-c-(a.y-(a.top??0))})`),X(t,v),t.intersect=function(k){return W.polygon(t,x,k)},n}d(bg,"waveEdgedRectangle");async function _g(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a}=await rt(e,t,it(t)),o=100,s=50,l=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),c=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),h=l/c;let u=l,f=c;u>f*h?f=u/h:u=f*h,u=Math.max(u,o),f=Math.max(f,s);const p=Math.min(f*.2,f/4),g=f+p*2,{cssStyles:m}=t,y=j.svg(n),x=U(t,{});t.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-u/2,y:g/2},...Ye(-u/2,g/2,u/2,g/2,p,1),{x:u/2,y:-g/2},...Ye(u/2,-g/2,-u/2,-g/2,p,-1)],_=ot(b),v=y.path(_,x),k=n.insert(()=>v,":first-child");return k.attr("class","basic label-container"),m&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",m),i&&t.look!=="handDrawn"&&k.selectAll("path").attr("style",i),X(t,k),t.intersect=function(E){return W.polygon(t,b,E)},n}d(_g,"waveRectangle");async function Cg(e,t){const{labelStyles:r,nodeStyles:i}=Z(t);t.labelStyle=r;const{shapeSvg:n,bbox:a,label:o}=await rt(e,t,it(t)),s=Math.max(a.width+(t.padding??0)*2,(t==null?void 0:t.width)??0),l=Math.max(a.height+(t.padding??0)*2,(t==null?void 0:t.height)??0),c=5,h=-s/2,u=-l/2,{cssStyles:f}=t,p=j.svg(n),g=U(t,{}),m=[{x:h-c,y:u-c},{x:h-c,y:u+l},{x:h+s,y:u+l},{x:h+s,y:u-c}],y=`M${h-c},${u-c} L${h+s},${u-c} L${h+s},${u+l} L${h-c},${u+l} L${h-c},${u-c} + M${h-c},${u} L${h+s},${u} + M${h},${u-c} L${h},${u+l}`;t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const x=p.path(y,g),b=n.insert(()=>x,":first-child");return b.attr("transform",`translate(${c/2}, ${c/2})`),b.attr("class","basic label-container"),f&&t.look!=="handDrawn"&&b.selectAll("path").attr("style",f),i&&t.look!=="handDrawn"&&b.selectAll("path").attr("style",i),o.attr("transform",`translate(${-(a.width/2)+c/2-(a.x-(a.left??0))}, ${-(a.height/2)+c/2-(a.y-(a.top??0))})`),X(t,b),t.intersect=function(_){return W.polygon(t,m,_)},n}d(Cg,"windowPane");async function wg(e,t,r,i,n=r.class.padding??12){const a=i?0:3,o=e.insert("g").attr("class",it(t)).attr("id",t.domId||t.id);let s=null,l=null,c=null,h=null,u=0,f=0,p=0;if(s=o.insert("g").attr("class","annotation-group text"),t.annotations.length>0){const b=t.annotations[0];await vi(s,{text:`«${b}»`},0),u=s.node().getBBox().height}l=o.insert("g").attr("class","label-group text"),await vi(l,t,0,["font-weight: bolder"]);const g=l.node().getBBox();f=g.height,c=o.insert("g").attr("class","members-group text");let m=0;for(const b of t.members){const _=await vi(c,b,m,[b.parseClassifier()]);m+=_+a}p=c.node().getBBox().height,p<=0&&(p=n/2),h=o.insert("g").attr("class","methods-group text");let y=0;for(const b of t.methods){const _=await vi(h,b,y,[b.parseClassifier()]);y+=_+a}let x=o.node().getBBox();if(s!==null){const b=s.node().getBBox();s.attr("transform",`translate(${-b.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${u})`),x=o.node().getBBox(),c.attr("transform",`translate(0, ${u+f+n*2})`),x=o.node().getBBox(),h.attr("transform",`translate(0, ${u+f+(p?p+n*4:n*2)})`),x=o.node().getBBox(),{shapeSvg:o,bbox:x}}d(wg,"textHelper");async function vi(e,t,r,i=[]){const n=e.insert("g").attr("class","label").attr("style",i.join("; ")),a=he();let o="useHtmlLabels"in t?t.useHtmlLabels:Bt(a.htmlLabels)??!0,s="";"text"in t?s=t.text:s=t.label,!o&&s.startsWith("\\")&&(s=s.substring(1)),qr(s)&&(o=!0);const l=await Jr(n,Ph(Qr(s)),{width:Yr(s,a)+50,classes:"markdown-node-label",useHtmlLabels:o},a);let c,h=1;if(o){const u=l.children[0],f=lt(l);h=u.innerHTML.split("
    ").length,u.innerHTML.includes("")&&(h+=u.innerHTML.split("").length-1);const p=u.getElementsByTagName("img");if(p){const g=s.replace(/]*>/g,"").trim()==="";await Promise.all([...p].map(m=>new Promise(y=>{function x(){var b;if(m.style.display="flex",m.style.flexDirection="column",g){const _=((b=a.fontSize)==null?void 0:b.toString())??window.getComputedStyle(document.body).fontSize,k=parseInt(_,10)*5+"px";m.style.minWidth=k,m.style.maxWidth=k}else m.style.width="100%";y(m)}d(x,"setupImage"),setTimeout(()=>{m.complete&&x()}),m.addEventListener("error",x),m.addEventListener("load",x)})))}c=u.getBoundingClientRect(),f.attr("width",c.width),f.attr("height",c.height)}else{i.includes("font-weight: bolder")&<(l).selectAll("tspan").attr("font-weight",""),h=l.children.length;const u=l.children[0];(l.textContent===""||l.textContent.includes(">"))&&(u.textContent=s[0]+s.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),s[1]===" "&&(u.textContent=u.textContent[0]+" "+u.textContent.substring(1))),u.textContent==="undefined"&&(u.textContent=""),c=l.getBBox()}return n.attr("transform","translate(0,"+(-c.height/(2*h)+r)+")"),c.height}d(vi,"addText");async function vg(e,t){var N,R;const r=ct(),i=r.class.padding??12,n=i,a=t.useHtmlLabels??Bt(r.htmlLabels)??!0,o=t;o.annotations=o.annotations??[],o.members=o.members??[],o.methods=o.methods??[];const{shapeSvg:s,bbox:l}=await wg(e,t,r,a,n),{labelStyles:c,nodeStyles:h}=Z(t);t.labelStyle=c,t.cssStyles=o.styles||"";const u=((N=o.styles)==null?void 0:N.join(";"))||h||"";t.cssStyles||(t.cssStyles=u.replaceAll("!important","").split(";"));const f=o.members.length===0&&o.methods.length===0&&!((R=r.class)!=null&&R.hideEmptyMembersBox),p=j.svg(s),g=U(t,{});t.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");const m=l.width;let y=l.height;o.members.length===0&&o.methods.length===0?y+=n:o.members.length>0&&o.methods.length===0&&(y+=n*2);const x=-m/2,b=-y/2,_=p.rectangle(x-i,b-i-(f?i:o.members.length===0&&o.methods.length===0?-i/2:0),m+2*i,y+2*i+(f?i*2:o.members.length===0&&o.methods.length===0?-i:0),g),v=s.insert(()=>_,":first-child");v.attr("class","basic label-container");const k=v.node().getBBox();s.selectAll(".text").each((B,q,I)=>{var z;const M=lt(I[q]),L=M.attr("transform");let S=0;if(L){const J=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(L);J&&(S=parseFloat(J[2]))}let F=S+b+i-(f?i:o.members.length===0&&o.methods.length===0?-i/2:0);a||(F-=4);let T=x;(M.attr("class").includes("label-group")||M.attr("class").includes("annotation-group"))&&(T=-((z=M.node())==null?void 0:z.getBBox().width)/2||0,s.selectAll("text").each(function(Y,J,pt){window.getComputedStyle(pt[J]).textAnchor==="middle"&&(T=0)})),M.attr("transform",`translate(${T}, ${F})`)});const E=s.select(".annotation-group").node().getBBox().height-(f?i/2:0)||0,A=s.select(".label-group").node().getBBox().height-(f?i/2:0)||0,O=s.select(".members-group").node().getBBox().height-(f?i/2:0)||0;if(o.members.length>0||o.methods.length>0||f){const B=p.line(k.x,E+A+b+i,k.x+k.width,E+A+b+i,g);s.insert(()=>B).attr("class","divider").attr("style",u)}if(f||o.members.length>0||o.methods.length>0){const B=p.line(k.x,E+A+O+b+n*2+i,k.x+k.width,E+A+O+b+i+n*2,g);s.insert(()=>B).attr("class","divider").attr("style",u)}if(o.look!=="handDrawn"&&s.selectAll("path").attr("style",u),v.select(":nth-child(2)").attr("style",u),s.selectAll(".divider").select("path").attr("style",u),t.labelStyle?s.selectAll("span").attr("style",t.labelStyle):s.selectAll("span").attr("style",u),!a){const B=RegExp(/color\s*:\s*([^;]*)/),q=B.exec(u);if(q){const I=q[0].replace("color","fill");s.selectAll("tspan").attr("style",I)}else if(c){const I=B.exec(c);if(I){const M=I[0].replace("color","fill");s.selectAll("tspan").attr("style",M)}}}return X(t,v),t.intersect=function(B){return W.rect(t,B)},s}d(vg,"classBox");var oS=d(e=>{switch(e){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 kg(e,t,{config:r}){var q,I;const{labelStyles:i,nodeStyles:n}=Z(t);t.labelStyle=i||"";const a=10,o=t.width;t.width=(t.width??200)-10;const{shapeSvg:s,bbox:l,label:c}=await rt(e,t,it(t)),h=t.padding||10;let u="",f;"ticket"in t&&t.ticket&&((q=r==null?void 0:r.kanban)!=null&&q.ticketBaseUrl)&&(u=(I=r==null?void 0:r.kanban)==null?void 0:I.ticketBaseUrl.replace("#TICKET#",t.ticket),f=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",u).attr("target","_blank"));const p={useHtmlLabels:t.useHtmlLabels,labelStyle:t.labelStyle||"",width:t.width,img:t.img,padding:t.padding||8,centerLabel:!1};let g,m;f?{label:g,bbox:m}=await ps(f,"ticket"in t&&t.ticket||"",p):{label:g,bbox:m}=await ps(s,"ticket"in t&&t.ticket||"",p);const{label:y,bbox:x}=await ps(s,"assigned"in t&&t.assigned||"",p);t.width=o;const b=10,_=(t==null?void 0:t.width)||0,v=Math.max(m.height,x.height)/2,k=Math.max(l.height+b*2,(t==null?void 0:t.height)||0)+v,E=-_/2,A=-k/2;c.attr("transform","translate("+(h-_/2)+", "+(-v-l.height/2)+")"),g.attr("transform","translate("+(h-_/2)+", "+(-v+l.height/2)+")"),y.attr("transform","translate("+(h+_/2-x.width-2*a)+", "+(-v+l.height/2)+")");let O;const{rx:N,ry:R}=t,{cssStyles:B}=t;if(t.look==="handDrawn"){const M=j.svg(s),L=U(t,{}),S=N||R?M.path(De(E,A,_,k,N||0),L):M.rectangle(E,A,_,k,L);O=s.insert(()=>S,":first-child"),O.attr("class","basic label-container").attr("style",B||null)}else{O=s.insert("rect",":first-child"),O.attr("class","basic label-container __APA__").attr("style",n).attr("rx",N??5).attr("ry",R??5).attr("x",E).attr("y",A).attr("width",_).attr("height",k);const M="priority"in t&&t.priority;if(M){const L=s.append("line"),S=E+2,F=A+Math.floor((N??0)/2),T=A+k-Math.floor((N??0)/2);L.attr("x1",S).attr("y1",F).attr("x2",S).attr("y2",T).attr("stroke-width","4").attr("stroke",oS(M))}}return X(t,O),t.height=k,t.intersect=function(M){return W.rect(t,M)},s}d(kg,"kanbanItem");var lS=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:sg},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:ig},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:og},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:ug},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Md},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:vd},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:tg},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:Id},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:Gd},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:Yd},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:mg},{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:jd},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Fd},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:dg},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Cd},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:ng},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:hg},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:cg},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:Rd},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Pd},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Td},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:Ad},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:Ld},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Vd},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:bg},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Od},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:gg},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Xd},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:Bd},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:Ed},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:xg},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:Cg},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:$d},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:yg},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:Dd},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:ag},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Qd},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:Kd},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:_d},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:Sd},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:pg},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:fg},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:_g},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:eg},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Zd}],cS=d(()=>{const t=[...Object.entries({state:lg,choice:wd,note:Jd,rectWithTitle:rg,labelRect:Ud,iconSquare:Wd,iconCircle:zd,icon:Nd,iconRounded:qd,imageSquare:Hd,anchor:bd,kanbanItem:kg,classBox:vg}),...lS.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(n=>[n,r.handler]))];return Object.fromEntries(t)},"generateShapeMap"),Sg=cS();function hS(e){return e in Sg}d(hS,"isValidShape");var Pa=new Map;async function Tg(e,t,r){let i,n;t.shape==="rect"&&(t.rx&&t.ry?t.shape="roundedRect":t.shape="squareRect");const a=t.shape?Sg[t.shape]:void 0;if(!a)throw new Error(`No such shape: ${t.shape}. Please check your syntax.`);if(t.link){let o;r.config.securityLevel==="sandbox"?o="_top":t.linkTarget&&(o=t.linkTarget||"_blank"),i=e.insert("svg:a").attr("xlink:href",t.link).attr("target",o??null),n=await a(i,t,r)}else n=await a(e,t,r),i=n;return t.tooltip&&n.attr("title",t.tooltip),Pa.set(t.id,i),t.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}d(Tg,"insertNode");var fB=d((e,t)=>{Pa.set(t.id,e)},"setNodeElem"),pB=d(()=>{Pa.clear()},"clear"),dB=d(e=>{const t=Pa.get(e.id);$.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");const r=8,i=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+i-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),i},"positionNode"),te={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};function ki(e,t){if(e===void 0||t===void 0)return{angle:0,deltaX:0,deltaY:0};e=yt(e),t=yt(t);const[r,i]=[e.x,e.y],[n,a]=[t.x,t.y],o=n-r,s=a-i;return{angle:Math.atan(s/o),deltaX:o,deltaY:s}}d(ki,"calculateDeltaAndAngle");var yt=d(e=>Array.isArray(e)?{x:e[0],y:e[1]}:e,"pointTransformer"),uS=d(e=>({x:d(function(t,r,i){let n=0;const a=yt(i[0]).x=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(te,e.arrowTypeEnd)){const{angle:p,deltaX:g}=ki(i[i.length-1],i[i.length-2]);n=te[e.arrowTypeEnd]*Math.cos(p)*(g>=0?1:-1)}const o=Math.abs(yt(t).x-yt(i[i.length-1]).x),s=Math.abs(yt(t).y-yt(i[i.length-1]).y),l=Math.abs(yt(t).x-yt(i[0]).x),c=Math.abs(yt(t).y-yt(i[0]).y),h=te[e.arrowTypeStart],u=te[e.arrowTypeEnd],f=1;if(o0&&s0&&c=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(te,e.arrowTypeEnd)){const{angle:p,deltaY:g}=ki(i[i.length-1],i[i.length-2]);n=te[e.arrowTypeEnd]*Math.abs(Math.sin(p))*(g>=0?1:-1)}const o=Math.abs(yt(t).y-yt(i[i.length-1]).y),s=Math.abs(yt(t).x-yt(i[i.length-1]).x),l=Math.abs(yt(t).y-yt(i[0]).y),c=Math.abs(yt(t).x-yt(i[0]).x),h=te[e.arrowTypeStart],u=te[e.arrowTypeEnd],f=1;if(o0&&s0&&c{t.arrowTypeStart&&Vc(e,"start",t.arrowTypeStart,r,i,n),t.arrowTypeEnd&&Vc(e,"end",t.arrowTypeEnd,r,i,n)},"addEdgeMarkers"),pS={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Vc=d((e,t,r,i,n,a)=>{const o=pS[r];if(!o){$.warn(`Unknown arrow type: ${r}`);return}const s=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${i}#${n}_${a}-${o}${s})`)},"addEdgeMarker"),fa=new Map,At=new Map,gB=d(()=>{fa.clear(),At.clear()},"clear"),xi=d(e=>e?e.reduce((r,i)=>r+";"+i,""):"","getLabelStyles"),dS=d(async(e,t)=>{let r=Bt(ct().flowchart.htmlLabels);const i=await Jr(e,t.label,{style:xi(t.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});$.info("abc82",t,t.labelType);const n=e.insert("g").attr("class","edgeLabel"),a=n.insert("g").attr("class","label");a.node().appendChild(i);let o=i.getBBox();if(r){const l=i.children[0],c=lt(i);o=l.getBoundingClientRect(),c.attr("width",o.width),c.attr("height",o.height)}a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),fa.set(t.id,n),t.width=o.width,t.height=o.height;let s;if(t.startLabelLeft){const l=await nr(t.startLabelLeft,xi(t.labelStyle)),c=e.insert("g").attr("class","edgeTerminals"),h=c.insert("g").attr("class","inner");s=h.node().appendChild(l);const u=l.getBBox();h.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),At.get(t.id)||At.set(t.id,{}),At.get(t.id).startLeft=c,Si(s,t.startLabelLeft)}if(t.startLabelRight){const l=await nr(t.startLabelRight,xi(t.labelStyle)),c=e.insert("g").attr("class","edgeTerminals"),h=c.insert("g").attr("class","inner");s=c.node().appendChild(l),h.node().appendChild(l);const u=l.getBBox();h.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),At.get(t.id)||At.set(t.id,{}),At.get(t.id).startRight=c,Si(s,t.startLabelRight)}if(t.endLabelLeft){const l=await nr(t.endLabelLeft,xi(t.labelStyle)),c=e.insert("g").attr("class","edgeTerminals"),h=c.insert("g").attr("class","inner");s=h.node().appendChild(l);const u=l.getBBox();h.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),c.node().appendChild(l),At.get(t.id)||At.set(t.id,{}),At.get(t.id).endLeft=c,Si(s,t.endLabelLeft)}if(t.endLabelRight){const l=await nr(t.endLabelRight,xi(t.labelStyle)),c=e.insert("g").attr("class","edgeTerminals"),h=c.insert("g").attr("class","inner");s=h.node().appendChild(l);const u=l.getBBox();h.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),c.node().appendChild(l),At.get(t.id)||At.set(t.id,{}),At.get(t.id).endRight=c,Si(s,t.endLabelRight)}return i},"insertEdgeLabel");function Si(e,t){ct().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(Si,"setTerminalWidth");var gS=d((e,t)=>{$.debug("Moving label abc88 ",e.id,e.label,fa.get(e.id),t);let r=t.updatedPath?t.updatedPath:t.originalPath;const i=ct(),{subGraphTitleTotalMargin:n}=Ao(i);if(e.label){const a=fa.get(e.id);let o=e.x,s=e.y;if(r){const l=ge.calcLabelPosition(r);$.debug("Moving label "+e.label+" from (",o,",",s,") to (",l.x,",",l.y,") abc88"),t.updatedPath&&(o=l.x,s=l.y)}a.attr("transform",`translate(${o}, ${s+n/2})`)}if(e.startLabelLeft){const a=At.get(e.id).startLeft;let o=e.x,s=e.y;if(r){const l=ge.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);o=l.x,s=l.y}a.attr("transform",`translate(${o}, ${s})`)}if(e.startLabelRight){const a=At.get(e.id).startRight;let o=e.x,s=e.y;if(r){const l=ge.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);o=l.x,s=l.y}a.attr("transform",`translate(${o}, ${s})`)}if(e.endLabelLeft){const a=At.get(e.id).endLeft;let o=e.x,s=e.y;if(r){const l=ge.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);o=l.x,s=l.y}a.attr("transform",`translate(${o}, ${s})`)}if(e.endLabelRight){const a=At.get(e.id).endRight;let o=e.x,s=e.y;if(r){const l=ge.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);o=l.x,s=l.y}a.attr("transform",`translate(${o}, ${s})`)}},"positionEdgeLabel"),mS=d((e,t)=>{const r=e.x,i=e.y,n=Math.abs(t.x-r),a=Math.abs(t.y-i),o=e.width/2,s=e.height/2;return n>=o||a>=s},"outsideNode"),yS=d((e,t,r)=>{$.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);const i=e.x,n=e.y,a=Math.abs(i-r.x),o=e.width/2;let s=r.xMath.abs(i-t.x)*l){let u=r.y{$.warn("abc88 cutPathAtIntersect",e,t);let r=[],i=e[0],n=!1;return e.forEach(a=>{if($.info("abc88 checking point",a,t),!mS(t,a)&&!n){const o=yS(t,i,a);$.debug("abc88 inside",a,i,o),$.debug("abc88 intersection",o,t);let s=!1;r.forEach(l=>{s=s||l.x===o.x&&l.y===o.y}),r.some(l=>l.x===o.x&&l.y===o.y)?$.warn("abc88 no intersect",o,r):r.push(o),n=!0}else $.warn("abc88 outside",a,i),i=a,n||r.push(a)}),$.debug("returning points",r),r},"cutPathAtIntersect");function Ag(e){const t=[],r=[];for(let i=1;i5&&Math.abs(a.y-n.y)>5||n.y===a.y&&a.x===o.x&&Math.abs(a.x-n.x)>5&&Math.abs(a.y-o.y)>5)&&(t.push(a),r.push(i))}return{cornerPoints:t,cornerPointPositions:r}}d(Ag,"extractCornerPoints");var Zc=d(function(e,t,r){const i=t.x-e.x,n=t.y-e.y,a=Math.sqrt(i*i+n*n),o=r/a;return{x:t.x-o*i,y:t.y-o*n}},"findAdjacentPoint"),xS=d(function(e){const{cornerPointPositions:t}=Ag(e),r=[];for(let i=0;i10&&Math.abs(a.y-n.y)>=10){$.debug("Corner point fixing",Math.abs(a.x-n.x),Math.abs(a.y-n.y));const p=5;o.x===s.x?f={x:c<0?s.x-p+u:s.x+p-u,y:h<0?s.y-u:s.y+u}:f={x:c<0?s.x-u:s.x+u,y:h<0?s.y-p+u:s.y+p-u}}else $.debug("Corner point skipping fixing",Math.abs(a.x-n.x),Math.abs(a.y-n.y));r.push(f,l)}else r.push(e[i]);return r},"fixCorners"),bS=d(function(e,t,r,i,n,a,o){const{handDrawnSeed:s}=ct();let l=t.points,c=!1;const h=n;var u=a;u.intersect&&h.intersect&&(l=l.slice(1,t.points.length-1),l.unshift(h.intersect(l[0])),$.debug("Last point APA12",t.start,"-->",t.end,l[l.length-1],u,u.intersect(l[l.length-1])),l.push(u.intersect(l[l.length-1]))),t.toCluster&&($.info("to cluster abc88",r.get(t.toCluster)),l=Xc(t.points,r.get(t.toCluster).node),c=!0),t.fromCluster&&($.debug("from cluster abc88",r.get(t.fromCluster),JSON.stringify(l,null,2)),l=Xc(l.reverse(),r.get(t.fromCluster).node).reverse(),c=!0);let f=l.filter(A=>!Number.isNaN(A.y));f=xS(f);let p=ep;t.curve&&(p=t.curve);const{x:g,y:m}=uS(t),y=T2().x(g).y(m).curve(p);let x;switch(t.thickness){case"normal":x="edge-thickness-normal";break;case"thick":x="edge-thickness-thick";break;case"invisible":x="edge-thickness-invisible";break;default:x="edge-thickness-normal"}switch(t.pattern){case"solid":x+=" edge-pattern-solid";break;case"dotted":x+=" edge-pattern-dotted";break;case"dashed":x+=" edge-pattern-dashed";break;default:x+=" edge-pattern-solid"}let b,_=y(f);const v=Array.isArray(t.style)?t.style:[t.style];if(t.look==="handDrawn"){const A=j.svg(e);Object.assign([],f);const O=A.path(_,{roughness:.3,seed:s});x+=" transition",b=lt(O).select("path").attr("id",t.id).attr("class"," "+x+(t.classes?" "+t.classes:"")).attr("style",v?v.reduce((R,B)=>R+";"+B,""):"");let N=b.attr("d");b.attr("d",N),e.node().appendChild(b.node())}else b=e.append("path").attr("d",_).attr("id",t.id).attr("class"," "+x+(t.classes?" "+t.classes:"")).attr("style",v?v.reduce((A,O)=>A+";"+O,""):"");let k="";(ct().flowchart.arrowMarkerAbsolute||ct().state.arrowMarkerAbsolute)&&(k=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,k=k.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),$.info("arrowTypeStart",t.arrowTypeStart),$.info("arrowTypeEnd",t.arrowTypeEnd),fS(b,t,k,o,i);let E={};return c&&(E.updatedPath=l),E.originalPath=t.points,E},"insertEdge"),_S=d((e,t,r,i)=>{t.forEach(n=>{MS[n](e,r,i)})},"insertMarkers"),CS=d((e,t,r)=>{$.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).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"),wS=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).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"),vS=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).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"),kS=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).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"),SS=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).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),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).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"),TS=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).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"),AS=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).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"),LS=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).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"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).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"),BS=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-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"),MS={extension:CS,composition:wS,aggregation:vS,dependency:kS,lollipop:SS,point:TS,circle:AS,cross:LS,barb:BS},ES=_S,FS={common:Xr,getConfig:he,insertCluster:Uk,insertEdge:bS,insertEdgeLabel:dS,insertMarkers:ES,insertNode:Tg,interpolateToCurve:Uo,labelHelper:rt,log:$,positionEdgeLabel:gS},Hi={},Lg=d(e=>{for(const t of e)Hi[t.name]=t},"registerLayoutLoaders"),$S=d(()=>{Lg([{name:"dagre",loader:d(async()=>await ft(()=>import("./chunks/dagre-4EVJKHTY.oyYM-B3a.js"),__vite__mapDeps([0,1,2,3,4,5,6,7])),"loader")}])},"registerDefaultLayoutLoaders");$S();var mB=d(async(e,t)=>{if(!(e.layoutAlgorithm in Hi))throw new Error(`Unknown layout algorithm: ${e.layoutAlgorithm}`);const r=Hi[e.layoutAlgorithm];return(await r.loader()).render(e,t,FS,{algorithm:r.algorithm})},"render"),yB=d((e="",{fallback:t="dagre"}={})=>{if(e in Hi)return e;if(t in Hi)return $.warn(`Layout algorithm ${e} is not registered. Using ${t} as fallback.`),t;throw new Error(`Both layout algorithms ${e} and ${t} are not registered.`)},"getRegisteredLayoutAlgorithm"),Kc="11.4.1",DS=d(e=>{var n;const{securityLevel:t}=ct();let r=lt("body");if(t==="sandbox"){const o=((n=lt(`#i${e}`).node())==null?void 0:n.contentDocument)??document;r=lt(o.body)}return r.select(`#${e}`)},"selectSvgElement"),Bg="comm",Mg="rule",Eg="decl",RS="@import",OS="@keyframes",IS="@layer",Fg=Math.abs,ll=String.fromCharCode;function $g(e){return e.trim()}function En(e,t,r){return e.replace(t,r)}function PS(e,t,r){return e.indexOf(t,r)}function ji(e,t){return e.charCodeAt(t)|0}function Gr(e,t,r){return e.slice(t,r)}function de(e){return e.length}function NS(e){return e.length}function _n(e,t){return t.push(e),e}var Na=1,Vr=1,Dg=0,re=0,bt=0,ri="";function cl(e,t,r,i,n,a,o,s){return{value:e,root:t,parent:r,type:i,props:n,children:a,line:Na,column:Vr,length:o,return:"",siblings:s}}function zS(){return bt}function qS(){return bt=re>0?ji(ri,--re):0,Vr--,bt===10&&(Vr=1,Na--),bt}function ce(){return bt=re2||Ui(bt)>3?"":" "}function US(e,t){for(;--t&&ce()&&!(bt<48||bt>102||bt>57&&bt<65||bt>70&&bt<97););return za(e,Fn()+(t<6&&qe()==32&&ce()==32))}function no(e){for(;ce();)switch(bt){case e:return re;case 34:case 39:e!==34&&e!==39&&no(bt);break;case 40:e===41&&no(e);break;case 92:ce();break}return re}function YS(e,t){for(;ce()&&e+bt!==57;)if(e+bt===84&&qe()===47)break;return"/*"+za(t,re-1)+"*"+ll(e===47?e:ce())}function GS(e){for(;!Ui(qe());)ce();return za(e,re)}function VS(e){return HS($n("",null,null,null,[""],e=WS(e),0,[0],e))}function $n(e,t,r,i,n,a,o,s,l){for(var c=0,h=0,u=o,f=0,p=0,g=0,m=1,y=1,x=1,b=0,_="",v=n,k=a,E=i,A=_;y;)switch(g=b,b=ce()){case 40:if(g!=108&&ji(A,u-1)==58){PS(A+=En(ds(b),"&","&\f"),"&\f",Fg(c?s[c-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:A+=ds(b);break;case 9:case 10:case 13:case 32:A+=jS(g);break;case 92:A+=US(Fn()-1,7);continue;case 47:switch(qe()){case 42:case 47:_n(XS(YS(ce(),Fn()),t,r,l),l),(Ui(g||1)==5||Ui(qe()||1)==5)&&de(A)&&Gr(A,-1,void 0)!==" "&&(A+=" ");break;default:A+="/"}break;case 123*m:s[c++]=de(A)*x;case 125*m:case 59:case 0:switch(b){case 0:case 125:y=0;case 59+h:x==-1&&(A=En(A,/\f/g,"")),p>0&&(de(A)-u||m===0&&g===47)&&_n(p>32?Jc(A+";",i,r,u-1,l):Jc(En(A," ","")+";",i,r,u-2,l),l);break;case 59:A+=";";default:if(_n(E=Qc(A,t,r,c,h,n,s,_,v=[],k=[],u,a),a),b===123)if(h===0)$n(A,t,E,E,v,a,u,s,k);else switch(f===99&&ji(A,3)===110?100:f){case 100:case 108:case 109:case 115:$n(e,E,E,i&&_n(Qc(e,E,E,0,0,n,s,_,n,v=[],u,k),k),n,k,u,s,i?v:k);break;default:$n(A,E,E,E,[""],k,0,s,k)}}c=h=p=0,m=x=1,_=A="",u=o;break;case 58:u=1+de(A),p=g;default:if(m<1){if(b==123)--m;else if(b==125&&m++==0&&qS()==125)continue}switch(A+=ll(b),b*m){case 38:x=h>0?1:(A+="\f",-1);break;case 44:s[c++]=(de(A)-1)*x,x=1;break;case 64:qe()===45&&(A+=ds(ce())),f=qe(),h=u=de(_=A+=GS(Fn())),b++;break;case 45:g===45&&de(A)==2&&(m=0)}}return a}function Qc(e,t,r,i,n,a,o,s,l,c,h,u){for(var f=n-1,p=n===0?a:[""],g=NS(p),m=0,y=0,x=0;m0?p[b]+" "+_:En(_,/&\f/g,p[b])))&&(l[x++]=v);return cl(e,t,r,n===0?Mg:s,l,c,h,u)}function XS(e,t,r,i){return cl(e,t,r,Bg,ll(zS()),Gr(e,2,-2),0,i)}function Jc(e,t,r,i,n){return cl(e,t,r,Eg,Gr(e,0,i),Gr(e,i+1,-1),i,n)}function ao(e,t){for(var r="",i=0;i/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(e),"detector"),fT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/c4Diagram-6F5ED5ID.CnOvngd3.js");return{diagram:t}},__vite__mapDeps([8,9,6,7]));return{id:Rg,diagram:e}},"loader"),pT={id:Rg,detector:uT,loader:fT},dT=pT,Og="flowchart",gT=d((e,t)=>{var r,i;return((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="dagre-wrapper"||((i=t==null?void 0:t.flowchart)==null?void 0:i.defaultRenderer)==="elk"?!1:/^\s*graph/.test(e)},"detector"),mT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js");return{diagram:t}},__vite__mapDeps([10,11,12,6,7]));return{id:Og,diagram:e}},"loader"),yT={id:Og,detector:gT,loader:mT},xT=yT,Ig="flowchart-v2",bT=d((e,t)=>{var r,i,n;return((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="dagre-d3"?!1:(((i=t==null?void 0:t.flowchart)==null?void 0:i.defaultRenderer)==="elk"&&(t.layout="elk"),/^\s*graph/.test(e)&&((n=t==null?void 0:t.flowchart)==null?void 0:n.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(e))},"detector"),_T=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js");return{diagram:t}},__vite__mapDeps([10,11,12,6,7]));return{id:Ig,diagram:e}},"loader"),CT={id:Ig,detector:bT,loader:_T},wT=CT,Pg="er",vT=d(e=>/^\s*erDiagram/.test(e),"detector"),kT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/erDiagram-6RL3IURR.CeQ13aq9.js");return{diagram:t}},__vite__mapDeps([13,1,2,3,4,6,7]));return{id:Pg,diagram:e}},"loader"),ST={id:Pg,detector:vT,loader:kT},TT=ST,Ng="gitGraph",AT=d(e=>/^\s*gitGraph/.test(e),"detector"),LT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js");return{diagram:t}},__vite__mapDeps([14,15,16,17,6,2,4,5,7]));return{id:Ng,diagram:e}},"loader"),BT={id:Ng,detector:AT,loader:LT},MT=BT,zg="gantt",ET=d(e=>/^\s*gantt/.test(e),"detector"),FT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js");return{diagram:t}},__vite__mapDeps([18,19,20,6,7]));return{id:zg,diagram:e}},"loader"),$T={id:zg,detector:ET,loader:FT},DT=$T,qg="info",RT=d(e=>/^\s*info/.test(e),"detector"),OT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js");return{diagram:t}},__vite__mapDeps([21,17,6,2,4,5,7]));return{id:qg,diagram:e}},"loader"),IT={id:qg,detector:RT,loader:OT},Wg="pie",PT=d(e=>/^\s*pie/.test(e),"detector"),NT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js");return{diagram:t}},__vite__mapDeps([22,15,17,6,2,4,5,23,24,20,7]));return{id:Wg,diagram:e}},"loader"),zT={id:Wg,detector:PT,loader:NT},Hg="quadrantChart",qT=d(e=>/^\s*quadrantChart/.test(e),"detector"),WT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js");return{diagram:t}},__vite__mapDeps([25,19,20,6,7]));return{id:Hg,diagram:e}},"loader"),HT={id:Hg,detector:qT,loader:WT},jT=HT,jg="xychart",UT=d(e=>/^\s*xychart-beta/.test(e),"detector"),YT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js");return{diagram:t}},__vite__mapDeps([26,20,24,19,6,7]));return{id:jg,diagram:e}},"loader"),GT={id:jg,detector:UT,loader:YT},VT=GT,Ug="requirement",XT=d(e=>/^\s*requirement(Diagram)?/.test(e),"detector"),ZT=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js");return{diagram:t}},__vite__mapDeps([27,1,2,3,4,6,7]));return{id:Ug,diagram:e}},"loader"),KT={id:Ug,detector:XT,loader:ZT},QT=KT,Yg="sequence",JT=d(e=>/^\s*sequenceDiagram/.test(e),"detector"),tA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js");return{diagram:t}},__vite__mapDeps([28,9,16,6,7]));return{id:Yg,diagram:e}},"loader"),eA={id:Yg,detector:JT,loader:tA},rA=eA,Gg="class",iA=d((e,t)=>{var r;return((r=t==null?void 0:t.class)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(e)},"detector"),nA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/classDiagram-LNE6IOMH.h79GeJ25.js");return{diagram:t}},__vite__mapDeps([29,30,11,6,7]));return{id:Gg,diagram:e}},"loader"),aA={id:Gg,detector:iA,loader:nA},sA=aA,Vg="classDiagram",oA=d((e,t)=>{var r;return/^\s*classDiagram/.test(e)&&((r=t==null?void 0:t.class)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(e)},"detector"),lA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js");return{diagram:t}},__vite__mapDeps([31,30,11,6,7]));return{id:Vg,diagram:e}},"loader"),cA={id:Vg,detector:oA,loader:lA},hA=cA,Xg="state",uA=d((e,t)=>{var r;return((r=t==null?void 0:t.state)==null?void 0:r.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(e)},"detector"),fA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/stateDiagram-MAYHULR4.2fsE_yAm.js");return{diagram:t}},__vite__mapDeps([32,33,11,1,2,3,4,6,7]));return{id:Xg,diagram:e}},"loader"),pA={id:Xg,detector:uA,loader:fA},dA=pA,Zg="stateDiagram",gA=d((e,t)=>{var r;return!!(/^\s*stateDiagram-v2/.test(e)||/^\s*stateDiagram/.test(e)&&((r=t==null?void 0:t.state)==null?void 0:r.defaultRenderer)==="dagre-wrapper")},"detector"),mA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js");return{diagram:t}},__vite__mapDeps([34,33,11,6,7]));return{id:Zg,diagram:e}},"loader"),yA={id:Zg,detector:gA,loader:mA},xA=yA,Kg="journey",bA=d(e=>/^\s*journey/.test(e),"detector"),_A=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js");return{diagram:t}},__vite__mapDeps([35,9,23,6,7]));return{id:Kg,diagram:e}},"loader"),CA={id:Kg,detector:bA,loader:_A},wA=CA,vA=d((e,t,r)=>{$.debug(`rendering svg for syntax error +`);const i=DS(t),n=i.append("g");i.attr("viewBox","0 0 2412 512"),Oh(i,100,512,!0),n.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"),n.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"),n.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"),n.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"),n.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"),n.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"),n.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"),n.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"),Qg={draw:vA},kA=Qg,SA={db:{},renderer:Qg,parser:{parse:d(()=>{},"parse")}},TA=SA,Jg="flowchart-elk",AA=d((e,t={})=>{var r;return/^\s*flowchart-elk/.test(e)||/^\s*flowchart|graph/.test(e)&&((r=t==null?void 0:t.flowchart)==null?void 0:r.defaultRenderer)==="elk"?(t.layout="elk",!0):!1},"detector"),LA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js");return{diagram:t}},__vite__mapDeps([10,11,12,6,7]));return{id:Jg,diagram:e}},"loader"),BA={id:Jg,detector:AA,loader:LA},MA=BA,tm="timeline",EA=d(e=>/^\s*timeline/.test(e),"detector"),FA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js");return{diagram:t}},__vite__mapDeps([36,23,6,7]));return{id:tm,diagram:e}},"loader"),$A={id:tm,detector:EA,loader:FA},DA=$A,em="mindmap",RA=d(e=>/^\s*mindmap/.test(e),"detector"),OA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js");return{diagram:t}},__vite__mapDeps([37,38,6,7]));return{id:em,diagram:e}},"loader"),IA={id:em,detector:RA,loader:OA},PA=IA,rm="kanban",NA=d(e=>/^\s*kanban/.test(e),"detector"),zA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/kanban-definition-QRCXZQQD.OUxfabEb.js");return{diagram:t}},__vite__mapDeps([39,6,7]));return{id:rm,diagram:e}},"loader"),qA={id:rm,detector:NA,loader:zA},WA=qA,im="sankey",HA=d(e=>/^\s*sankey-beta/.test(e),"detector"),jA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js");return{diagram:t}},__vite__mapDeps([40,24,20,6,7]));return{id:im,diagram:e}},"loader"),UA={id:im,detector:HA,loader:jA},YA=UA,nm="packet",GA=d(e=>/^\s*packet-beta/.test(e),"detector"),VA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/diagram-QW4FP2JN.CZvzQOj-.js");return{diagram:t}},__vite__mapDeps([41,15,17,6,2,4,5,7]));return{id:nm,diagram:e}},"loader"),XA={id:nm,detector:GA,loader:VA},am="block",ZA=d(e=>/^\s*block-beta/.test(e),"detector"),KA=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/blockDiagram-ZHA2E4KO.C5lWm1Ia.js");return{diagram:t}},__vite__mapDeps([42,5,2,1,12,6,7]));return{id:am,diagram:e}},"loader"),QA={id:am,detector:ZA,loader:KA},JA=QA,sm="architecture",tL=d(e=>/^\s*architecture/.test(e),"detector"),eL=d(async()=>{const{diagram:e}=await ft(async()=>{const{diagram:t}=await import("./chunks/architectureDiagram-UYN6MBPD.Cmkezhge.js");return{diagram:t}},__vite__mapDeps([43,15,16,17,6,2,4,5,38,7]));return{id:sm,diagram:e}},"loader"),rL={id:sm,detector:tL,loader:eL},iL=rL,sh=!1,qa=d(()=>{sh||(sh=!0,In("error",TA,e=>e.toLowerCase().trim()==="error"),In("---",{db:{clear:d(()=>{},"clear")},styles:{},renderer:{draw:d(()=>{},"draw")},parser:{parse:d(()=>{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:d(()=>null,"init")},e=>e.toLowerCase().trimStart().startsWith("---")),vh(dT,WA,hA,sA,TT,DT,IT,zT,QT,rA,MA,wT,xT,PA,DA,MT,xA,dA,wA,jT,YA,XA,VT,JA,iL))},"addDiagrams"),nL=d(async()=>{$.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(Pr).map(async([r,{detector:i,loader:n}])=>{if(n)try{ws(r)}catch{try{const{diagram:a,id:o}=await n();In(o,a,i)}catch(a){throw $.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Pr[r],a}}}))).filter(r=>r.status==="rejected");if(t.length>0){$.error(`Failed to load ${t.length} external diagrams`);for(const r of t)$.error(r);throw new Error(`Failed to load ${t.length} external diagrams`)}},"loadRegisteredDiagrams"),aL="graphics-document document";function om(e,t){e.attr("role",aL),t!==""&&e.attr("aria-roledescription",t)}d(om,"setA11yDiagramInfo");function lm(e,t,r,i){if(e.insert!==void 0){if(r){const n=`chart-desc-${i}`;e.attr("aria-describedby",n),e.insert("desc",":first-child").attr("id",n).text(r)}if(t){const n=`chart-title-${i}`;e.attr("aria-labelledby",n),e.insert("title",":first-child").attr("id",n).text(t)}}}d(lm,"addSVGa11yTitleDescription");var sr,ho=(sr=class{constructor(t,r,i,n,a){this.type=t,this.text=r,this.db=i,this.parser=n,this.renderer=a}static async fromText(t,r={}){var c,h;const i=he(),n=po(t,i);t=Ov(t)+` +`;try{ws(n)}catch{const u=F0(n);if(!u)throw new wh(`Diagram ${n} not found.`);const{id:f,diagram:p}=await u();In(f,p)}const{db:a,parser:o,renderer:s,init:l}=ws(n);return o.parser&&(o.parser.yy=a),(c=a.clear)==null||c.call(a),l==null||l(i),r.title&&((h=a.setDiagramTitle)==null||h.call(a,r.title)),await o.parse(t),new sr(n,t,a,o,s)}async render(t,r){await this.renderer.draw(this.text,t,r,this)}getParser(){return this.parser}getType(){return this.type}},d(sr,"Diagram"),sr),oh=[],sL=d(()=>{oh.forEach(e=>{e()}),oh=[]},"attachFunctions"),oL=d(e=>e.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function cm(e){const t=e.match(Ch);if(!t)return{text:e,metadata:{}};let r=Ex(t[1],{schema:Mx})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};const i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:e.slice(t[0].length),metadata:i}}d(cm,"extractFrontMatter");var lL=d(e=>e.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(t,r,i)=>"<"+r+i.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),cL=d(e=>{const{text:t,metadata:r}=cm(e),{displayMode:i,title:n,config:a={}}=r;return i&&(a.gantt||(a.gantt={}),a.gantt.displayMode=i),{title:n,config:a,text:t}},"processFrontmatter"),hL=d(e=>{const t=ge.detectInit(e)??{},r=ge.detectDirective(e,"wrap");return Array.isArray(r)?t.wrap=r.some(({type:i})=>i==="wrap"):(r==null?void 0:r.type)==="wrap"&&(t.wrap=!0),{text:vv(e),directive:t}},"processDirectives");function hl(e){const t=lL(e),r=cL(t),i=hL(r.text),n=Zo(r.config,i.directive);return e=oL(i.text),{code:e,title:r.title,config:n}}d(hl,"preprocessDiagram");function hm(e){const t=new TextEncoder().encode(e),r=Array.from(t,i=>String.fromCodePoint(i)).join("");return btoa(r)}d(hm,"toBase64");var uL=5e4,fL="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",pL="sandbox",dL="loose",gL="http://www.w3.org/2000/svg",mL="http://www.w3.org/1999/xlink",yL="http://www.w3.org/1999/xhtml",xL="100%",bL="100%",_L="border:0;margin:0;",CL="margin:0",wL="allow-top-navigation-by-user-activation allow-popups",vL='The "iframe" tag is not supported by your browser.',kL=["foreignobject"],SL=["dominant-baseline"];function ul(e){const t=hl(e);return Rn(),V0(t.config??{}),t}d(ul,"processAndSetConfigs");async function um(e,t){qa();try{const{code:r,config:i}=ul(e);return{diagramType:(await pm(r)).type,config:i}}catch(r){if(t!=null&&t.suppressErrors)return!1;throw r}}d(um,"parse");var lh=d((e,t,r=[])=>` +.${e} ${t} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),TL=d((e,t=new Map)=>{var i;let r="";if(e.themeCSS!==void 0&&(r+=` +${e.themeCSS}`),e.fontFamily!==void 0&&(r+=` +:root { --mermaid-font-family: ${e.fontFamily}}`),e.altFontFamily!==void 0&&(r+=` +:root { --mermaid-alt-font-family: ${e.altFontFamily}}`),t instanceof Map){const s=e.htmlLabels??((i=e.flowchart)==null?void 0:i.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];t.forEach(l=>{ah(l.styles)||s.forEach(c=>{r+=lh(l.id,c,l.styles)}),ah(l.textStyles)||(r+=lh(l.id,"tspan",((l==null?void 0:l.textStyles)||[]).map(c=>c.replace("color","fill"))))})}return r},"createCssStyles"),AL=d((e,t,r,i)=>{const n=TL(e,r),a=py(t,n,e.themeVariables);return ao(VS(`${i}{${a}}`),ZS)},"createUserStyles"),LL=d((e="",t,r)=>{let i=e;return!r&&!t&&(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=Qr(i),i=i.replace(/
    /g,"
    "),i},"cleanUpSvgCode"),BL=d((e="",t)=>{var n,a;const r=(a=(n=t==null?void 0:t.viewBox)==null?void 0:n.baseVal)!=null&&a.height?t.viewBox.baseVal.height+"px":bL,i=hm(`${e}`);return``},"putIntoIFrame"),ch=d((e,t,r,i,n)=>{const a=e.append("div");a.attr("id",r),i&&a.attr("style",i);const o=a.append("svg").attr("id",t).attr("width","100%").attr("xmlns",gL);return n&&o.attr("xmlns:xlink",n),o.append("g"),e},"appendDivSvgG");function uo(e,t){return e.append("iframe").attr("id",t).attr("style","width: 100%; height: 100%;").attr("sandbox","")}d(uo,"sandboxedIframe");var ML=d((e,t,r,i)=>{var n,a,o;(n=e.getElementById(t))==null||n.remove(),(a=e.getElementById(r))==null||a.remove(),(o=e.getElementById(i))==null||o.remove()},"removeExistingElements"),EL=d(async function(e,t,r){var q,I,M,L,S,F;qa();const i=ul(t);t=i.code;const n=he();$.debug(n),t.length>((n==null?void 0:n.maxTextSize)??uL)&&(t=fL);const a="#"+e,o="i"+e,s="#"+o,l="d"+e,c="#"+l,h=d(()=>{const z=lt(f?s:c).node();z&&"remove"in z&&z.remove()},"removeTempElements");let u=lt("body");const f=n.securityLevel===pL,p=n.securityLevel===dL,g=n.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),f){const T=uo(lt(r),o);u=lt(T.nodes()[0].contentDocument.body),u.node().style.margin=0}else u=lt(r);ch(u,e,l,`font-family: ${g}`,mL)}else{if(ML(document,e,l,o),f){const T=uo(lt("body"),o);u=lt(T.nodes()[0].contentDocument.body),u.node().style.margin=0}else u=lt("body");ch(u,e,l)}let m,y;try{m=await ho.fromText(t,{title:i.title})}catch(T){if(n.suppressErrorRendering)throw h(),T;m=await ho.fromText("error"),y=T}const x=u.select(c).node(),b=m.type,_=x.firstChild,v=_.firstChild,k=(I=(q=m.renderer).getClasses)==null?void 0:I.call(q,t,m),E=AL(n,b,k,a),A=document.createElement("style");A.innerHTML=E,_.insertBefore(A,v);try{await m.renderer.draw(t,e,Kc,m)}catch(T){throw n.suppressErrorRendering?h():kA.draw(t,e,Kc),T}const O=u.select(`${c} svg`),N=(L=(M=m.db).getAccTitle)==null?void 0:L.call(M),R=(F=(S=m.db).getAccDescription)==null?void 0:F.call(S);dm(b,O,N,R),u.select(`[id="${e}"]`).selectAll("foreignobject > *").attr("xmlns",yL);let B=u.select(c).node().innerHTML;if($.debug("config.arrowMarkerAbsolute",n.arrowMarkerAbsolute),B=LL(B,f,Bt(n.arrowMarkerAbsolute)),f){const T=u.select(c+" svg").node();B=BL(B,T)}else p||(B=Ir.sanitize(B,{ADD_TAGS:kL,ADD_ATTR:SL,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(sL(),y)throw y;return h(),{diagramType:b,svg:B,bindFunctions:m.db.bindFunctions}},"render");function fm(e={}){var i;const t=Lt({},e);t!=null&&t.fontFamily&&!((i=t.themeVariables)!=null&&i.fontFamily)&&(t.themeVariables||(t.themeVariables={}),t.themeVariables.fontFamily=t.fontFamily),Y0(t),t!=null&&t.theme&&t.theme in Be?t.themeVariables=Be[t.theme].getThemeVariables(t.themeVariables):t&&(t.themeVariables=Be.default.getThemeVariables(t.themeVariables));const r=typeof t=="object"?U0(t):Bh();fo(r.logLevel),qa()}d(fm,"initialize");var pm=d((e,t={})=>{const{code:r}=hl(e);return ho.fromText(r,t)},"getDiagramFromText");function dm(e,t,r,i){om(t,e),lm(t,r,i,t.attr("id"))}d(dm,"addA11yInfo");var fr=Object.freeze({render:EL,parse:um,getDiagramFromText:pm,initialize:fm,getConfig:he,setConfig:Mh,getSiteConfig:Bh,updateSiteConfig:G0,reset:d(()=>{Rn()},"reset"),globalReset:d(()=>{Rn(Nr)},"globalReset"),defaultConfig:Nr});fo(he().logLevel);Rn(he());var FL=d((e,t,r)=>{$.warn(e),Xo(e)?(r&&r(e.str,e.hash),t.push({...e,message:e.str,error:e})):(r&&r(e),e instanceof Error&&t.push({str:e.message,message:e.message,hash:e.name,error:e}))},"handleError"),gm=d(async function(e={querySelector:".mermaid"}){try{await $L(e)}catch(t){if(Xo(t)&&$.error(t.str),Vt.parseError&&Vt.parseError(t),!e.suppressErrors)throw $.error("Use the suppressErrors option to suppress these errors"),t}},"run"),$L=d(async function({postRenderCallback:e,querySelector:t,nodes:r}={querySelector:".mermaid"}){const i=fr.getConfig();$.debug(`${e?"":"No "}Callback function found`);let n;if(r)n=r;else if(t)n=document.querySelectorAll(t);else throw new Error("Nodes and querySelector are both undefined");$.debug(`Found ${n.length} diagrams`),(i==null?void 0:i.startOnLoad)!==void 0&&($.debug("Start On Load: "+(i==null?void 0:i.startOnLoad)),fr.updateSiteConfig({startOnLoad:i==null?void 0:i.startOnLoad}));const a=new ge.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const s=[];for(const l of Array.from(n)){if($.info("Rendering diagram: "+l.id),l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");const c=`mermaid-${a.next()}`;o=l.innerHTML,o=Yp(ge.entityDecode(o)).trim().replace(//gi,"
    ");const h=ge.detectInit(o);h&&$.debug("Detected early reinit: ",h);try{const{svg:u,bindFunctions:f}=await bm(c,o,l);l.innerHTML=u,e&&await e(c),f&&f(l)}catch(u){FL(u,s,Vt.parseError)}}if(s.length>0)throw s[0]},"runThrowsErrors"),mm=d(function(e){fr.initialize(e)},"initialize"),DL=d(async function(e,t,r){$.warn("mermaid.init is deprecated. Please use run instead."),e&&mm(e);const i={postRenderCallback:r,querySelector:".mermaid"};typeof t=="string"?i.querySelector=t:t&&(t instanceof HTMLElement?i.nodes=[t]:i.nodes=t),await gm(i)},"init"),RL=d(async(e,{lazyLoad:t=!0}={})=>{qa(),vh(...e),t===!1&&await nL()},"registerExternalDiagrams"),ym=d(function(){if(Vt.startOnLoad){const{startOnLoad:e}=fr.getConfig();e&&Vt.run().catch(t=>$.error("Mermaid failed to initialize",t))}},"contentLoaded");typeof document<"u"&&window.addEventListener("load",ym,!1);var OL=d(function(e){Vt.parseError=e},"setParseErrorHandler"),pa=[],gs=!1,xm=d(async()=>{if(!gs){for(gs=!0;pa.length>0;){const e=pa.shift();if(e)try{await e()}catch(t){$.error("Error executing queue",t)}}gs=!1}},"executeQueue"),IL=d(async(e,t)=>new Promise((r,i)=>{const n=d(()=>new Promise((a,o)=>{fr.parse(e,t).then(s=>{a(s),r(s)},s=>{var l;$.error("Error parsing",s),(l=Vt.parseError)==null||l.call(Vt,s),o(s),i(s)})}),"performCall");pa.push(n),xm().catch(i)}),"parse"),bm=d((e,t,r)=>new Promise((i,n)=>{const a=d(()=>new Promise((o,s)=>{fr.render(e,t,r).then(l=>{o(l),i(l)},l=>{var c;$.error("Error parsing",l),(c=Vt.parseError)==null||c.call(Vt,l),s(l),n(l)})}),"performCall");pa.push(a),xm().catch(n)}),"render"),Vt={startOnLoad:!0,mermaidAPI:fr,parse:IL,render:bm,init:DL,run:gm,registerExternalDiagrams:RL,registerLayoutLoaders:Lg,initialize:mm,parseError:void 0,contentLoaded:ym,setParseErrorHandler:OL,detectType:po,registerIconPacks:Jx},da=Vt;/*! Check if previously processed *//*! + * Wait for document loaded before starting the execution + */const PL=async e=>{try{da.registerExternalDiagrams&&await da.registerExternalDiagrams(e)}catch(t){console.error(t)}},NL=async(e,t,r)=>{da.initialize(r);const{svg:i}=await da.render(e,t);return i},zL=["innerHTML"],qL={__name:"Mermaid",props:{graph:{type:String,required:!0},id:{type:String,required:!0},class:{type:String,required:!1,default:"mermaid"}},setup(e){const t=Fl({securityLevel:"loose",startOnLoad:!1,externalDiagrams:[]}),{page:r}=hh(),{frontmatter:i}=Fm(r.value),n=i.mermaidTheme||"",a=e,o=Fl(null);let s=null;uh(async()=>{var u;await PL(t.value.externalDiagrams);let c=await ft(()=>import("./chunks/virtual_mermaid-config.DDnGl6nM.js"),[]);c!=null&&c.default&&(t.value=c.default),s=new MutationObserver(async()=>await l()),s.observe(document.documentElement,{attributes:!0}),await l(),((u=//.exec(decodeURIComponent(a.graph)))==null?void 0:u.length)>0&&setTimeout(()=>{let f=document.getElementsByTagName("img"),p=Array.from(f);p.length&&Promise.all(p.filter(g=>!g.complete).map(g=>new Promise(m=>{g.onload=g.onerror=m}))).then(async()=>{await l()})},100)}),$m(()=>s.disconnect());const l=async()=>{const c=document.documentElement.classList.contains("dark");let h={...t.value};n&&(h.theme=n),c&&(h.theme="dark");let u=await NL(a.id,decodeURIComponent(a.graph),h);const f=Math.random().toString(36).substring(7);o.value=`${u} ${f}`};return(c,h)=>(Dm(),Rm("div",{innerHTML:o.value,class:Om(a.class)},null,10,zL))}};function _m(e){if(e.extends){const t=_m(e.extends);return{...t,...e,async enhanceApp(r){t.enhanceApp&&await t.enhanceApp(r),e.enhanceApp&&await e.enhanceApp(r)}}}return e}const Lr=_m(Jm),WL=Gm({name:"VitePressApp",setup(){const{site:e,lang:t,dir:r}=hh();return uh(()=>{Vm(()=>{document.documentElement.lang=t.value,document.documentElement.dir=r.value})}),e.value.router.prefetchLinks&&Xm(),Zm(),Km(),Lr.setup&&Lr.setup(),()=>Qm(Lr.Layout)}});async function HL(){globalThis.__VITEPRESS__=!0;const e=UL(),t=jL();t.provide(Pm,e);const r=Nm(e.route);return t.provide(zm,r),t.component("Mermaid",qL),t.component("Content",qm),t.component("ClientOnly",Wm),Object.defineProperties(t.config.globalProperties,{$frontmatter:{get(){return r.frontmatter.value}},$params:{get(){return r.page.value.params}}}),Lr.enhanceApp&&await Lr.enhanceApp({app:t,router:e,siteData:Hm}),{app:t,router:e,data:r}}function jL(){return jm(WL)}function UL(){let e=ms,t;return Um(r=>{let i=Ym(r),n=null;return i&&(e&&(t=i),(e||t===i)&&(i=i.replace(/\.js$/,".lean.js")),n=import(i)),ms&&(e=!1),n},Lr.NotFound)}ms&&HL().then(({app:e,router:t,data:r})=>{t.go().then(()=>{Im(t.route,r.site),e.mount("#app")})});export{iB as $,mB as A,Ai as B,be as C,Ah as D,Zo as E,he as F,Lv as G,wy as H,DS as I,Mx as J,Kc as K,w2 as L,gc as M,dc as N,oB as O,rB as P,aB as Q,nB as R,tB as S,Oo as T,et as U,sB as V,eB as W,wr as X,cB as Y,lB as Z,d as _,Lt as a,i0 as a$,P0 as a0,T2 as a1,qr as a2,ZL as a3,go as a4,Fa as a5,bv as a6,XL as a7,ep as a8,Av as a9,fB as aA,bS as aB,gS as aC,dS as aD,xk as aE,v2 as aF,t0 as aG,e0 as aH,Qx as aI,Jx as aJ,Ca as aK,pr as aL,mv as aM,vp as aN,Aa as aO,Ea as aP,ia as aQ,Sp as aR,wp as aS,Yw as aT,Eo as aU,Pf as aV,Ut as aW,Zi as aX,X1 as aY,qf as aZ,JL as a_,M0 as aa,Ih as ab,hy as ac,Yi as ad,V as ae,Q as af,Uk as ag,Tg as ah,dB as ai,Ep as aj,Bt as ak,Jr as al,Ao as am,uS as an,rd as ao,Qr as ap,gv as aq,ow as ar,lv as as,qo as at,ah as au,ES as av,pB as aw,gB as ax,uB as ay,X as az,xy as b,Fo as b0,ze as b1,Ni as b2,lc as b3,r_ as b4,dv as b5,ov as b6,VC as b7,Wo as b8,Ww as b9,xv as ba,Qi as bb,Zr as bc,ta as bd,Jw as be,tT as bf,Ki as bg,ra as bh,Gw as bi,mp as bj,KC as bk,QC as bl,Je as bm,Mc as bn,JC as bo,Ho as bp,ZC as bq,rw as br,Kr as bs,Ge as bt,Sc as bu,jo as bv,xp as bw,lo as bx,yv as by,Ma as bz,yy as c,HL as createApp,ct as d,Xr as e,$p as f,my as g,Yr as h,or as i,lt as j,Oh as k,$ as l,kf as m,Gi as n,KL as o,QL as p,by as q,_y as r,gy as s,Ex as t,hS as u,ge as v,Ev as w,dy as x,hB as y,yB as z}; diff --git a/assets/branch_strategy_develop.drawio.BB9doEUP.png b/assets/branch_strategy_develop.drawio.BB9doEUP.png new file mode 100644 index 0000000000000000000000000000000000000000..81b0dc88e95784ddf2b5fb3b873b34386497356b GIT binary patch literal 15914 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 literal 0 HcmV?d00001 diff --git a/assets/branch_strategy_hotfix.drawio.RF4mmQSP.png b/assets/branch_strategy_hotfix.drawio.RF4mmQSP.png new file mode 100644 index 0000000000000000000000000000000000000000..37b4cccbe319858d83c401bed4cf0974d3ab67cb GIT binary patch literal 24731 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

    F(Dg{)lgo$P3bY1r!Ka zYh>0=IGUU424&N^r;g%g(~GJ8GYl$t02$>a%R_-~Ns@w%7*b%b1=6PUZI#@CbNKHT z1lX-Af6mLm^Rr2lA`I#_hJWY}&sH^iGdf-m;`CUEN)#`3(sv62=G!M=XUm3KllFXY zg9omOTjkrS!cbmmp}ffc89b;k=~rQD;N9!sfsBCl&HQ>_o{?cdY{(=jQSLdgz&U@;6!Dk7@${xTpGY>v^lvC z=|TWK{1_cvlNQ*rw`~UbJTTKy;+l=pW2sKWd?)dC%zwturWh#VEeE_^!l?udyipyf z^;K8QUFiRe!Fg{8Zy4sVRx=qW%xA7Pa6GZNg1q$S!y;D zj7Ne9h#s7R>?Q&9SpTyMM1=R!|D^&-n6NJjW551++AXVTP5AQt%Hn5|^hQZrhty!r zMd0Wqa4SWS8c^N`e*ak;qC4t&zzIbl%L;gRbQ(R}rotX|7<(Ot6wyPT8xg-^MJZw2 z&3~$_@q#+=#$0$Bm_CL9!iNI2cWfECzxxAY8#58qL&Be+8uF1SPVA+?*}Ju3&9bAr z(| zN04J>6x>cWPKFD%<8~?xVll1qRoYf6>Ye2BrHV;;)=O;|{Y3+hU-kB{KQaUY1UfFDeX-dnZD;S;x_5C~f*TI~vV%qe z_E`S>M3<#MDe$zcfL>)0_1kMf#rz5iK^s){-pjO8fjr?NW?k+8Sm?_x{Y%9k#1QgX z9~Q)&64_TRKH4*j#nUb|V#cgHg1NXpLHLHJ$5GlI)&P{-umflp5vJ~N1S}1|La|Tw zMdy!_@3Rrv&;?6X9Hd!47FHR%J<_{c#Z8|5`7UJIuVEwA&;ajP4X>-cd;LrD({q-l zWG%`2Or2HI@qQ`8U(cgY1kPF?aV8wZkG~>eEa_9VXgC-8cVR1eoG@%AaFZgzGNQ<4 z6EdQH)B~c#TEod)9QBh6vb3u>qyV|Y8wMO?Wy4wS6}pY{Db$R4$s4+YbFX{ z&)&r(Z+gbLAn~?6YTJ~{Yw|}__K1`Moh1-=Dp)n1KA5}YPkg>qL3W-@e=~yX8v4{mKLR!JS!UM-zvAjFaTg>>8FB)uL*^#j3r8(Q3L?KQo&sFy zpO17>_}orcmB{=(jGnoH)%-i=essG{zA|+*#e1*2uBxRx`lk>zfE4)7X|)

    kVY@ zSj0v4t%ZGLmccY>eMZk~ppsKjy3GaoRz#(nckHX~CNFojDAZDNKtGA;Ty9#3$nrS@ ztsIfm+a*;XO7durh;w$?hX?Mh>+ukdHl*uLCgfg$f+4To7K?fgeC~U4%L7TwjPc*> zsrZ7NJzc#Wd?xIC{@alJqjKl@np4iv+3_uOBYST2s<{u$B7W1ka!90=Hp8Ei@g0pT zqTB;10ELM%nRv#I6yJzaqamG;tVtHLN4!Y}+TZk}s0oE`hNiPUbCwJ literal 0 HcmV?d00001 diff --git a/assets/branch_strategy_multi_version.drawio.BALCIJus.png b/assets/branch_strategy_multi_version.drawio.BALCIJus.png new file mode 100644 index 0000000000000000000000000000000000000000..47e46d3fe9d2e7a6ee9d0eb9bef2d23496667a81 GIT binary patch literal 28850 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%0AfBQtT{agcV^`|O6S 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 lFY@e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,a8 as tt,a9 as Rt,aa as At,q as $e,ab as Mt,d as Lt,D as xe,ac as st,ad as Dt,ae as zt,s as Pt,af as jt,v as Me,P as he,O as _e,ag as Vt,ah as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,ai as qt,aj as Gt,ak as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,al as Qt,a2 as at,am as Yt,an as Zt,ao as Xt,ap as es,_ as ts}from"./framework.BDUoXecB.js";import{u as ss,c as ns}from"./theme.DQlX5-hY.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.GM261gjZ.js"),[])};/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*! +* focus-trap 7.6.2 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,s=Array(e);t0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:s}=this._options,n=Object.assign(Object.assign({},s),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of r){const m=c.length||1,f={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(f,this._storedFields.get(o)),(n.filter==null||n.filter(f))&&i.push(f)}return e===ue.wildcard&&n.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return at(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return at(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Vt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),qt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Gt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:nt(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:nt(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-68e678c9"]]);export{Fn as default}; diff --git a/assets/chunks/arc.D0VzCNCr.js b/assets/chunks/arc.D0VzCNCr.js new file mode 100644 index 00000000..fdf511bd --- /dev/null +++ b/assets/chunks/arc.D0VzCNCr.js @@ -0,0 +1 @@ +import{L as ln,M as un,N as y,O as tn,P as X,Q as O,R as _,S as an,T as rn,V as $,W as o,X as N,Y as sn,Z as on,$ as fn}from"../app.BCWCbnje.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,D,S,v,R,Q,u){var E=D-l,i=S-h,n=Q-v,d=u-R,a=d*E-n*i;if(!(a*ar*r+W*W&&(L=w,M=p),{cx:L,cy:M,x01:-n,y01:-d,x11:L*(v/T-1),y11:M*(v/T-1)}}function hn(){var l=cn,h=yn,D=N(0),S=null,v=gn,R=dn,Q=mn,u=null,E=ln(i);function i(){var n,d,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=R.apply(this,arguments)-un,V=an(c-f),t=c>f;if(u||(u=n=E()),sy))u.moveTo(0,0);else if(V>tn-y)u.moveTo(s*X(f),s*O(f)),u.arc(0,0,s,f,c,!t),a>y&&(u.moveTo(a*X(c),a*O(c)),u.arc(0,0,a,c,f,t));else{var m=f,g=c,A=f,T=c,P=V,I=V,L=Q.apply(this,arguments)/2,M=L>y&&(S?+S.apply(this,arguments):$(a*a+s*s)),w=_(an(s-a)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(M>y){var W=sn(M/a*O(L)),j=sn(M/s*O(L));(P-=W*2)>y?(W*=t?1:-1,A+=W,T-=W):(P=0,A=T=(f+c)/2),(I-=j*2)>y?(j*=t?1:-1,m+=j,g-=j):(I=0,m=g=(f+c)/2)}var Y=s*X(m),Z=s*O(m),z=a*X(T),B=a*O(T);if(w>y){var C=s*X(g),F=s*O(g),H=a*X(A),J=a*O(A),q;if(Vy?x>y?(e=G(H,J,Y,Z,s,x,t),r=G(C,F,z,B,s,x,t),u.moveTo(e.cx+e.x01,e.cy+e.y01),xy)||!(P>y)?u.lineTo(z,B):p>y?(e=G(z,B,C,F,a,-p,t),r=G(Y,Z,H,J,a,-p,t),u.lineTo(e.cx+e.x01,e.cy+e.y01),ph?(this.rect.x-=(this.labelWidth-h)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(h+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(o+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>o?(this.rect.y-=(this.labelHeight-o)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(o+this.labelHeight))}}},a.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==s.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},a.prototype.transform=function(t){var h=this.rect.x;h>r.WORLD_BOUNDARY?h=r.WORLD_BOUNDARY:h<-r.WORLD_BOUNDARY&&(h=-r.WORLD_BOUNDARY);var o=this.rect.y;o>r.WORLD_BOUNDARY?o=r.WORLD_BOUNDARY:o<-r.WORLD_BOUNDARY&&(o=-r.WORLD_BOUNDARY);var c=new f(h,o),l=t.inverseTransformPoint(c);this.setLocation(l.x,l.y)},a.prototype.getLeft=function(){return this.rect.x},a.prototype.getRight=function(){return this.rect.x+this.rect.width},a.prototype.getTop=function(){return this.rect.y},a.prototype.getBottom=function(){return this.rect.y+this.rect.height},a.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},A.exports=a},function(A,G,N){var g=N(0);function s(){}for(var i in g)s[i]=g[i];s.MAX_ITERATIONS=2500,s.DEFAULT_EDGE_LENGTH=50,s.DEFAULT_SPRING_STRENGTH=.45,s.DEFAULT_REPULSION_STRENGTH=4500,s.DEFAULT_GRAVITY_STRENGTH=.4,s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,s.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,s.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,s.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,s.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,s.COOLING_ADAPTATION_FACTOR=.33,s.ADAPTATION_LOWER_NODE_LIMIT=1e3,s.ADAPTATION_UPPER_NODE_LIMIT=5e3,s.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,s.MAX_NODE_DISPLACEMENT=s.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,s.MIN_REPULSION_DIST=s.DEFAULT_EDGE_LENGTH/10,s.CONVERGENCE_CHECK_PERIOD=100,s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,s.MIN_EDGE_LENGTH=1,s.GRID_CALCULATION_CHECK_PERIOD=10,A.exports=s},function(A,G,N){function g(s,i){s==null&&i==null?(this.x=0,this.y=0):(this.x=s,this.y=i)}g.prototype.getX=function(){return this.x},g.prototype.getY=function(){return this.y},g.prototype.setX=function(s){this.x=s},g.prototype.setY=function(s){this.y=s},g.prototype.getDifference=function(s){return new DimensionD(this.x-s.x,this.y-s.y)},g.prototype.getCopy=function(){return new g(this.x,this.y)},g.prototype.translate=function(s){return this.x+=s.width,this.y+=s.height,this},A.exports=g},function(A,G,N){var g=N(2),s=N(10),i=N(0),r=N(7),e=N(3),f=N(1),a=N(13),y=N(12),t=N(11);function h(c,l,T){g.call(this,T),this.estimatedSize=s.MIN_VALUE,this.margin=i.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=c,l!=null&&l instanceof r?this.graphManager=l:l!=null&&l instanceof Layout&&(this.graphManager=l.graphManager)}h.prototype=Object.create(g.prototype);for(var o in g)h[o]=g[o];h.prototype.getNodes=function(){return this.nodes},h.prototype.getEdges=function(){return this.edges},h.prototype.getGraphManager=function(){return this.graphManager},h.prototype.getParent=function(){return this.parent},h.prototype.getLeft=function(){return this.left},h.prototype.getRight=function(){return this.right},h.prototype.getTop=function(){return this.top},h.prototype.getBottom=function(){return this.bottom},h.prototype.isConnected=function(){return this.isConnected},h.prototype.add=function(c,l,T){if(l==null&&T==null){var u=c;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(u)>-1)throw"Node already in graph!";return u.owner=this,this.getNodes().push(u),u}else{var d=c;if(!(this.getNodes().indexOf(l)>-1&&this.getNodes().indexOf(T)>-1))throw"Source or target not in graph!";if(!(l.owner==T.owner&&l.owner==this))throw"Both owners must be this graph!";return l.owner!=T.owner?null:(d.source=l,d.target=T,d.isInterGraph=!1,this.getEdges().push(d),l.edges.push(d),T!=l&&T.edges.push(d),d)}},h.prototype.remove=function(c){var l=c;if(c instanceof e){if(l==null)throw"Node is null!";if(!(l.owner!=null&&l.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var T=l.edges.slice(),u,d=T.length,L=0;L-1&&P>-1))throw"Source and/or target doesn't know this edge!";u.source.edges.splice(M,1),u.target!=u.source&&u.target.edges.splice(P,1);var F=u.source.owner.getEdges().indexOf(u);if(F==-1)throw"Not in owner's edge list!";u.source.owner.getEdges().splice(F,1)}},h.prototype.updateLeftTop=function(){for(var c=s.MAX_VALUE,l=s.MAX_VALUE,T,u,d,L=this.getNodes(),F=L.length,M=0;MT&&(c=T),l>u&&(l=u)}return c==s.MAX_VALUE?null:(L[0].getParent().paddingLeft!=null?d=L[0].getParent().paddingLeft:d=this.margin,this.left=l-d,this.top=c-d,new y(this.left,this.top))},h.prototype.updateBounds=function(c){for(var l=s.MAX_VALUE,T=-s.MAX_VALUE,u=s.MAX_VALUE,d=-s.MAX_VALUE,L,F,M,P,J,V=this.nodes,Q=V.length,D=0;DL&&(l=L),TM&&(u=M),dL&&(l=L),TM&&(u=M),d=this.nodes.length){var Q=0;T.forEach(function(D){D.owner==c&&Q++}),Q==this.nodes.length&&(this.isConnected=!0)}},A.exports=h},function(A,G,N){var g,s=N(1);function i(r){g=N(6),this.layout=r,this.graphs=[],this.edges=[]}i.prototype.addRoot=function(){var r=this.layout.newGraph(),e=this.layout.newNode(null),f=this.add(r,e);return this.setRootGraph(f),this.rootGraph},i.prototype.add=function(r,e,f,a,y){if(f==null&&a==null&&y==null){if(r==null)throw"Graph is null!";if(e==null)throw"Parent node is null!";if(this.graphs.indexOf(r)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(r),r.parent!=null)throw"Already has a parent!";if(e.child!=null)throw"Already has a child!";return r.parent=e,e.child=r,r}else{y=f,a=e,f=r;var t=a.getOwner(),h=y.getOwner();if(!(t!=null&&t.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(h!=null&&h.getGraphManager()==this))throw"Target not in this graph mgr!";if(t==h)return f.isInterGraph=!1,t.add(f,a,y);if(f.isInterGraph=!0,f.source=a,f.target=y,this.edges.indexOf(f)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(f),!(f.source!=null&&f.target!=null))throw"Edge source and/or target is null!";if(!(f.source.edges.indexOf(f)==-1&&f.target.edges.indexOf(f)==-1))throw"Edge already in source and/or target incidency list!";return f.source.edges.push(f),f.target.edges.push(f),f}},i.prototype.remove=function(r){if(r instanceof g){var e=r;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(e==this.rootGraph||e.parent!=null&&e.parent.graphManager==this))throw"Invalid parent node!";var f=[];f=f.concat(e.getEdges());for(var a,y=f.length,t=0;t=r.getRight()?e[0]+=Math.min(r.getX()-i.getX(),i.getRight()-r.getRight()):r.getX()<=i.getX()&&r.getRight()>=i.getRight()&&(e[0]+=Math.min(i.getX()-r.getX(),r.getRight()-i.getRight())),i.getY()<=r.getY()&&i.getBottom()>=r.getBottom()?e[1]+=Math.min(r.getY()-i.getY(),i.getBottom()-r.getBottom()):r.getY()<=i.getY()&&r.getBottom()>=i.getBottom()&&(e[1]+=Math.min(i.getY()-r.getY(),r.getBottom()-i.getBottom()));var y=Math.abs((r.getCenterY()-i.getCenterY())/(r.getCenterX()-i.getCenterX()));r.getCenterY()===i.getCenterY()&&r.getCenterX()===i.getCenterX()&&(y=1);var t=y*e[0],h=e[1]/y;e[0]t)return e[0]=f,e[1]=o,e[2]=y,e[3]=V,!1;if(ay)return e[0]=h,e[1]=a,e[2]=P,e[3]=t,!1;if(fy?(e[0]=l,e[1]=T,n=!0):(e[0]=c,e[1]=o,n=!0):v===p&&(f>y?(e[0]=h,e[1]=o,n=!0):(e[0]=u,e[1]=T,n=!0)),-E===p?y>f?(e[2]=J,e[3]=V,m=!0):(e[2]=P,e[3]=M,m=!0):E===p&&(y>f?(e[2]=F,e[3]=M,m=!0):(e[2]=Q,e[3]=V,m=!0)),n&&m)return!1;if(f>y?a>t?(I=this.getCardinalDirection(v,p,4),w=this.getCardinalDirection(E,p,2)):(I=this.getCardinalDirection(-v,p,3),w=this.getCardinalDirection(-E,p,1)):a>t?(I=this.getCardinalDirection(-v,p,1),w=this.getCardinalDirection(-E,p,3)):(I=this.getCardinalDirection(v,p,2),w=this.getCardinalDirection(E,p,4)),!n)switch(I){case 1:H=o,R=f+-L/p,e[0]=R,e[1]=H;break;case 2:R=u,H=a+d*p,e[0]=R,e[1]=H;break;case 3:H=T,R=f+L/p,e[0]=R,e[1]=H;break;case 4:R=l,H=a+-d*p,e[0]=R,e[1]=H;break}if(!m)switch(w){case 1:k=M,x=y+-rt/p,e[2]=x,e[3]=k;break;case 2:x=Q,k=t+D*p,e[2]=x,e[3]=k;break;case 3:k=V,x=y+rt/p,e[2]=x,e[3]=k;break;case 4:x=J,k=t+-D*p,e[2]=x,e[3]=k;break}}return!1},s.getCardinalDirection=function(i,r,e){return i>r?e:1+e%4},s.getIntersection=function(i,r,e,f){if(f==null)return this.getIntersection2(i,r,e);var a=i.x,y=i.y,t=r.x,h=r.y,o=e.x,c=e.y,l=f.x,T=f.y,u=void 0,d=void 0,L=void 0,F=void 0,M=void 0,P=void 0,J=void 0,V=void 0,Q=void 0;return L=h-y,M=a-t,J=t*y-a*h,F=T-c,P=o-l,V=l*c-o*T,Q=L*P-F*M,Q===0?null:(u=(M*V-P*J)/Q,d=(F*J-L*V)/Q,new g(u,d))},s.angleOfVector=function(i,r,e,f){var a=void 0;return i!==e?(a=Math.atan((f-r)/(e-i)),e=0){var T=(-o+Math.sqrt(o*o-4*h*c))/(2*h),u=(-o-Math.sqrt(o*o-4*h*c))/(2*h),d=null;return T>=0&&T<=1?[T]:u>=0&&u<=1?[u]:d}else return null},s.HALF_PI=.5*Math.PI,s.ONE_AND_HALF_PI=1.5*Math.PI,s.TWO_PI=2*Math.PI,s.THREE_PI=3*Math.PI,A.exports=s},function(A,G,N){function g(){}g.sign=function(s){return s>0?1:s<0?-1:0},g.floor=function(s){return s<0?Math.ceil(s):Math.floor(s)},g.ceil=function(s){return s<0?Math.floor(s):Math.ceil(s)},A.exports=g},function(A,G,N){function g(){}g.MAX_VALUE=2147483647,g.MIN_VALUE=-2147483648,A.exports=g},function(A,G,N){var g=function(){function a(y,t){for(var h=0;h"u"?"undefined":g(i);return i==null||r!="object"&&r!="function"},A.exports=s},function(A,G,N){function g(o){if(Array.isArray(o)){for(var c=0,l=Array(o.length);c0&&c;){for(L.push(M[0]);L.length>0&&c;){var P=L[0];L.splice(0,1),d.add(P);for(var J=P.getEdges(),u=0;u-1&&M.splice(rt,1)}d=new Set,F=new Map}}return o},h.prototype.createDummyNodesForBendpoints=function(o){for(var c=[],l=o.source,T=this.graphManager.calcLowestCommonAncestor(o.source,o.target),u=0;u0){for(var T=this.edgeToDummyNodes.get(l),u=0;u=0&&c.splice(V,1);var Q=F.getNeighborsList();Q.forEach(function(n){if(l.indexOf(n)<0){var m=T.get(n),v=m-1;v==1&&P.push(n),T.set(n,v)}})}l=l.concat(P),(c.length==1||c.length==2)&&(u=!0,d=c[0])}return d},h.prototype.setGraphManager=function(o){this.graphManager=o},A.exports=h},function(A,G,N){function g(){}g.seed=1,g.x=0,g.nextDouble=function(){return g.x=Math.sin(g.seed++)*1e4,g.x-Math.floor(g.x)},A.exports=g},function(A,G,N){var g=N(5);function s(i,r){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}s.prototype.getWorldOrgX=function(){return this.lworldOrgX},s.prototype.setWorldOrgX=function(i){this.lworldOrgX=i},s.prototype.getWorldOrgY=function(){return this.lworldOrgY},s.prototype.setWorldOrgY=function(i){this.lworldOrgY=i},s.prototype.getWorldExtX=function(){return this.lworldExtX},s.prototype.setWorldExtX=function(i){this.lworldExtX=i},s.prototype.getWorldExtY=function(){return this.lworldExtY},s.prototype.setWorldExtY=function(i){this.lworldExtY=i},s.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},s.prototype.setDeviceOrgX=function(i){this.ldeviceOrgX=i},s.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},s.prototype.setDeviceOrgY=function(i){this.ldeviceOrgY=i},s.prototype.getDeviceExtX=function(){return this.ldeviceExtX},s.prototype.setDeviceExtX=function(i){this.ldeviceExtX=i},s.prototype.getDeviceExtY=function(){return this.ldeviceExtY},s.prototype.setDeviceExtY=function(i){this.ldeviceExtY=i},s.prototype.transformX=function(i){var r=0,e=this.lworldExtX;return e!=0&&(r=this.ldeviceOrgX+(i-this.lworldOrgX)*this.ldeviceExtX/e),r},s.prototype.transformY=function(i){var r=0,e=this.lworldExtY;return e!=0&&(r=this.ldeviceOrgY+(i-this.lworldOrgY)*this.ldeviceExtY/e),r},s.prototype.inverseTransformX=function(i){var r=0,e=this.ldeviceExtX;return e!=0&&(r=this.lworldOrgX+(i-this.ldeviceOrgX)*this.lworldExtX/e),r},s.prototype.inverseTransformY=function(i){var r=0,e=this.ldeviceExtY;return e!=0&&(r=this.lworldOrgY+(i-this.ldeviceOrgY)*this.lworldExtY/e),r},s.prototype.inverseTransformPoint=function(i){var r=new g(this.inverseTransformX(i.x),this.inverseTransformY(i.y));return r},A.exports=s},function(A,G,N){function g(t){if(Array.isArray(t)){for(var h=0,o=Array(t.length);hi.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*i.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-i.ADAPTATION_LOWER_NODE_LIMIT)/(i.ADAPTATION_UPPER_NODE_LIMIT-i.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-i.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=i.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>i.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(i.COOLING_ADAPTATION_FACTOR,1-(t-i.ADAPTATION_LOWER_NODE_LIMIT)/(i.ADAPTATION_UPPER_NODE_LIMIT-i.ADAPTATION_LOWER_NODE_LIMIT)*(1-i.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=i.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*i.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},a.prototype.calcSpringForces=function(){for(var t=this.getAllEdges(),h,o=0;o0&&arguments[0]!==void 0?arguments[0]:!0,h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o,c,l,T,u=this.getAllNodes(),d;if(this.useFRGridVariant)for(this.totalIterations%i.GRID_CALCULATION_CHECK_PERIOD==1&&t&&this.updateGrid(),d=new Set,o=0;oL||d>L)&&(t.gravitationForceX=-this.gravityConstant*l,t.gravitationForceY=-this.gravityConstant*T)):(L=h.getEstimatedSize()*this.compoundGravityRangeFactor,(u>L||d>L)&&(t.gravitationForceX=-this.gravityConstant*l*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*T*this.compoundGravityConstant))},a.prototype.isConverged=function(){var t,h=!1;return this.totalIterations>this.maxIterations/3&&(h=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=u.length||L>=u[0].length)){for(var F=0;Fa}}]),e}();A.exports=r},function(A,G,N){function g(){}g.svd=function(s){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=s.length,this.n=s[0].length;var i=Math.min(this.m,this.n);this.s=function(Nt){for(var Mt=[];Nt-- >0;)Mt.push(0);return Mt}(Math.min(this.m+1,this.n)),this.U=function(Nt){var Mt=function Zt(Gt){if(Gt.length==0)return 0;for(var $t=[],Ft=0;Ft0;)Mt.push(0);return Mt}(this.n),e=function(Nt){for(var Mt=[];Nt-- >0;)Mt.push(0);return Mt}(this.m),f=!0,a=Math.min(this.m-1,this.n),y=Math.max(0,Math.min(this.n-2,this.m)),t=0;t=0;E--)if(this.s[E]!==0){for(var p=E+1;p=0;W--){if(function(Nt,Mt){return Nt&&Mt}(W0;){var q=void 0,Rt=void 0;for(q=n-2;q>=-1&&q!==-1;q--)if(Math.abs(r[q])<=lt+_*(Math.abs(this.s[q])+Math.abs(this.s[q+1]))){r[q]=0;break}if(q===n-2)Rt=4;else{var Lt=void 0;for(Lt=n-1;Lt>=q&&Lt!==q;Lt--){var vt=(Lt!==n?Math.abs(r[Lt]):0)+(Lt!==q+1?Math.abs(r[Lt-1]):0);if(Math.abs(this.s[Lt])<=lt+_*vt){this.s[Lt]=0;break}}Lt===q?Rt=3:Lt===n-1?Rt=1:(Rt=2,q=Lt)}switch(q++,Rt){case 1:{var it=r[n-2];r[n-2]=0;for(var ut=n-2;ut>=q;ut--){var Tt=g.hypot(this.s[ut],it),At=this.s[ut]/Tt,Dt=it/Tt;this.s[ut]=Tt,ut!==q&&(it=-Dt*r[ut-1],r[ut-1]=At*r[ut-1]);for(var mt=0;mt=this.s[q+1]);){var Ct=this.s[q];if(this.s[q]=this.s[q+1],this.s[q+1]=Ct,qMath.abs(i)?(r=i/s,r=Math.abs(s)*Math.sqrt(1+r*r)):i!=0?(r=s/i,r=Math.abs(i)*Math.sqrt(1+r*r)):r=0,r},A.exports=g},function(A,G,N){var g=function(){function r(e,f){for(var a=0;a2&&arguments[2]!==void 0?arguments[2]:1,y=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,t=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;s(this,r),this.sequence1=e,this.sequence2=f,this.match_score=a,this.mismatch_penalty=y,this.gap_penalty=t,this.iMax=e.length+1,this.jMax=f.length+1,this.grid=new Array(this.iMax);for(var h=0;h=0;e--){var f=this.listeners[e];f.event===i&&f.callback===r&&this.listeners.splice(e,1)}},s.emit=function(i,r){for(var e=0;e{var G={45:(i,r,e)=>{var f={};f.layoutBase=e(551),f.CoSEConstants=e(806),f.CoSEEdge=e(767),f.CoSEGraph=e(880),f.CoSEGraphManager=e(578),f.CoSELayout=e(765),f.CoSENode=e(991),f.ConstraintHandler=e(902),i.exports=f},806:(i,r,e)=>{var f=e(551).FDLayoutConstants;function a(){}for(var y in f)a[y]=f[y];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=f.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,a.ENFORCE_CONSTRAINTS=!0,a.APPLY_LAYOUT=!0,a.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,a.TREE_REDUCTION_ON_INCREMENTAL=!0,a.PURE_INCREMENTAL=a.DEFAULT_INCREMENTAL,i.exports=a},767:(i,r,e)=>{var f=e(551).FDLayoutEdge;function a(t,h,o){f.call(this,t,h,o)}a.prototype=Object.create(f.prototype);for(var y in f)a[y]=f[y];i.exports=a},880:(i,r,e)=>{var f=e(551).LGraph;function a(t,h,o){f.call(this,t,h,o)}a.prototype=Object.create(f.prototype);for(var y in f)a[y]=f[y];i.exports=a},578:(i,r,e)=>{var f=e(551).LGraphManager;function a(t){f.call(this,t)}a.prototype=Object.create(f.prototype);for(var y in f)a[y]=f[y];i.exports=a},765:(i,r,e)=>{var f=e(551).FDLayout,a=e(578),y=e(880),t=e(991),h=e(767),o=e(806),c=e(902),l=e(551).FDLayoutConstants,T=e(551).LayoutConstants,u=e(551).Point,d=e(551).PointD,L=e(551).DimensionD,F=e(551).Layout,M=e(551).Integer,P=e(551).IGeometry,J=e(551).LGraph,V=e(551).Transform,Q=e(551).LinkedList;function D(){f.call(this),this.toBeTiled={},this.constraints={}}D.prototype=Object.create(f.prototype);for(var rt in f)D[rt]=f[rt];D.prototype.newGraphManager=function(){var n=new a(this);return this.graphManager=n,n},D.prototype.newGraph=function(n){return new y(null,this.graphManager,n)},D.prototype.newNode=function(n){return new t(this.graphManager,n)},D.prototype.newEdge=function(n){return new h(null,null,n)},D.prototype.initParameters=function(){f.prototype.initParameters.call(this,arguments),this.isSubLayout||(o.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=o.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=o.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,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)},D.prototype.initSpringEmbedder=function(){f.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/l.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},D.prototype.layout=function(){var n=T.DEFAULT_CREATE_BENDS_AS_NEEDED;return n&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},D.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){if(o.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),v=this.nodesWithGravity.filter(function(I){return m.has(I)});this.graphManager.setAllNodesToApplyGravitation(v)}}else{var n=this.getFlatForest();if(n.length>0)this.positionNodesRadially(n);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var m=new Set(this.getAllNodes()),v=this.nodesWithGravity.filter(function(E){return m.has(E)});this.graphManager.setAllNodesToApplyGravitation(v),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(c.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),o.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},D.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(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 n=new Set(this.getAllNodes()),m=this.nodesWithGravity.filter(function(p){return n.has(p)});this.graphManager.setAllNodesToApplyGravitation(m),this.graphManager.updateBounds(),this.updateGrid(),o.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2: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()),o.PURE_INCREMENTAL?this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var v=!this.isTreeGrowing&&!this.isGrowthFinished,E=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(v,E),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},D.prototype.getPositionsData=function(){for(var n=this.graphManager.getAllNodes(),m={},v=0;v0&&this.updateDisplacements();for(var v=0;v0&&(E.fixedNodeWeight=I)}}if(this.constraints.relativePlacementConstraint){var w=new Map,R=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(O){n.fixedNodesOnHorizontal.add(O),n.fixedNodesOnVertical.add(O)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var H=this.constraints.alignmentConstraint.vertical,v=0;v=2*O.length/3;_--)X=Math.floor(Math.random()*(_+1)),B=O[_],O[_]=O[X],O[X]=B;return O},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(O){if(O.left){var X=w.has(O.left)?w.get(O.left):O.left,B=w.has(O.right)?w.get(O.right):O.right;n.nodesInRelativeHorizontal.includes(X)||(n.nodesInRelativeHorizontal.push(X),n.nodeToRelativeConstraintMapHorizontal.set(X,[]),n.dummyToNodeForVerticalAlignment.has(X)?n.nodeToTempPositionMapHorizontal.set(X,n.idToNodeMap.get(n.dummyToNodeForVerticalAlignment.get(X)[0]).getCenterX()):n.nodeToTempPositionMapHorizontal.set(X,n.idToNodeMap.get(X).getCenterX())),n.nodesInRelativeHorizontal.includes(B)||(n.nodesInRelativeHorizontal.push(B),n.nodeToRelativeConstraintMapHorizontal.set(B,[]),n.dummyToNodeForVerticalAlignment.has(B)?n.nodeToTempPositionMapHorizontal.set(B,n.idToNodeMap.get(n.dummyToNodeForVerticalAlignment.get(B)[0]).getCenterX()):n.nodeToTempPositionMapHorizontal.set(B,n.idToNodeMap.get(B).getCenterX())),n.nodeToRelativeConstraintMapHorizontal.get(X).push({right:B,gap:O.gap}),n.nodeToRelativeConstraintMapHorizontal.get(B).push({left:X,gap:O.gap})}else{var _=R.has(O.top)?R.get(O.top):O.top,lt=R.has(O.bottom)?R.get(O.bottom):O.bottom;n.nodesInRelativeVertical.includes(_)||(n.nodesInRelativeVertical.push(_),n.nodeToRelativeConstraintMapVertical.set(_,[]),n.dummyToNodeForHorizontalAlignment.has(_)?n.nodeToTempPositionMapVertical.set(_,n.idToNodeMap.get(n.dummyToNodeForHorizontalAlignment.get(_)[0]).getCenterY()):n.nodeToTempPositionMapVertical.set(_,n.idToNodeMap.get(_).getCenterY())),n.nodesInRelativeVertical.includes(lt)||(n.nodesInRelativeVertical.push(lt),n.nodeToRelativeConstraintMapVertical.set(lt,[]),n.dummyToNodeForHorizontalAlignment.has(lt)?n.nodeToTempPositionMapVertical.set(lt,n.idToNodeMap.get(n.dummyToNodeForHorizontalAlignment.get(lt)[0]).getCenterY()):n.nodeToTempPositionMapVertical.set(lt,n.idToNodeMap.get(lt).getCenterY())),n.nodeToRelativeConstraintMapVertical.get(_).push({bottom:lt,gap:O.gap}),n.nodeToRelativeConstraintMapVertical.get(lt).push({top:_,gap:O.gap})}});else{var k=new Map,W=new Map;this.constraints.relativePlacementConstraint.forEach(function(O){if(O.left){var X=w.has(O.left)?w.get(O.left):O.left,B=w.has(O.right)?w.get(O.right):O.right;k.has(X)?k.get(X).push(B):k.set(X,[B]),k.has(B)?k.get(B).push(X):k.set(B,[X])}else{var _=R.has(O.top)?R.get(O.top):O.top,lt=R.has(O.bottom)?R.get(O.bottom):O.bottom;W.has(_)?W.get(_).push(lt):W.set(_,[lt]),W.has(lt)?W.get(lt).push(_):W.set(lt,[_])}});var U=function(X,B){var _=[],lt=[],q=new Q,Rt=new Set,Lt=0;return X.forEach(function(vt,it){if(!Rt.has(it)){_[Lt]=[],lt[Lt]=!1;var ut=it;for(q.push(ut),Rt.add(ut),_[Lt].push(ut);q.length!=0;){ut=q.shift(),B.has(ut)&&(lt[Lt]=!0);var Tt=X.get(ut);Tt.forEach(function(At){Rt.has(At)||(q.push(At),Rt.add(At),_[Lt].push(At))})}Lt++}}),{components:_,isFixed:lt}},et=U(k,n.fixedNodesOnHorizontal);this.componentsOnHorizontal=et.components,this.fixedComponentsOnHorizontal=et.isFixed;var z=U(W,n.fixedNodesOnVertical);this.componentsOnVertical=z.components,this.fixedComponentsOnVertical=z.isFixed}}},D.prototype.updateDisplacements=function(){var n=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(z){var O=n.idToNodeMap.get(z.nodeId);O.displacementX=0,O.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var m=this.constraints.alignmentConstraint.vertical,v=0;v1){var R;for(R=0;RE&&(E=Math.floor(w.y)),I=Math.floor(w.x+o.DEFAULT_COMPONENT_SEPERATION)}this.transform(new d(T.WORLD_CENTER_X-w.x/2,T.WORLD_CENTER_Y-w.y/2))},D.radialLayout=function(n,m,v){var E=Math.max(this.maxDiagonalInTree(n),o.DEFAULT_RADIAL_SEPARATION);D.branchRadialLayout(m,null,0,359,0,E);var p=J.calculateBounds(n),I=new V;I.setDeviceOrgX(p.getMinX()),I.setDeviceOrgY(p.getMinY()),I.setWorldOrgX(v.x),I.setWorldOrgY(v.y);for(var w=0;w1;){var B=X[0];X.splice(0,1);var _=W.indexOf(B);_>=0&&W.splice(_,1),z--,U--}m!=null?O=(W.indexOf(X[0])+1)%z:O=0;for(var lt=Math.abs(E-v)/U,q=O;et!=U;q=++q%z){var Rt=W[q].getOtherEnd(n);if(Rt!=m){var Lt=(v+et*lt)%360,vt=(Lt+lt)%360;D.branchRadialLayout(Rt,n,Lt,vt,p+I,I),et++}}},D.maxDiagonalInTree=function(n){for(var m=M.MIN_VALUE,v=0;vm&&(m=p)}return m},D.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},D.prototype.groupZeroDegreeMembers=function(){var n=this,m={};this.memberGroups={},this.idToDummyNode={};for(var v=[],E=this.graphManager.getAllNodes(),p=0;p"u"&&(m[R]=[]),m[R]=m[R].concat(I)}Object.keys(m).forEach(function(H){if(m[H].length>1){var x="DummyCompound_"+H;n.memberGroups[x]=m[H];var k=m[H][0].getParent(),W=new t(n.graphManager);W.id=x,W.paddingLeft=k.paddingLeft||0,W.paddingRight=k.paddingRight||0,W.paddingBottom=k.paddingBottom||0,W.paddingTop=k.paddingTop||0,n.idToDummyNode[x]=W;var U=n.getGraphManager().add(n.newGraph(),W),et=k.getChild();et.add(W);for(var z=0;zp?(E.rect.x-=(E.labelWidth-p)/2,E.setWidth(E.labelWidth),E.labelMarginLeft=(E.labelWidth-p)/2):E.labelPosHorizontal=="right"&&E.setWidth(p+E.labelWidth)),E.labelHeight&&(E.labelPosVertical=="top"?(E.rect.y-=E.labelHeight,E.setHeight(I+E.labelHeight),E.labelMarginTop=E.labelHeight):E.labelPosVertical=="center"&&E.labelHeight>I?(E.rect.y-=(E.labelHeight-I)/2,E.setHeight(E.labelHeight),E.labelMarginTop=(E.labelHeight-I)/2):E.labelPosVertical=="bottom"&&E.setHeight(I+E.labelHeight))}})},D.prototype.repopulateCompounds=function(){for(var n=this.compoundOrder.length-1;n>=0;n--){var m=this.compoundOrder[n],v=m.id,E=m.paddingLeft,p=m.paddingTop,I=m.labelMarginLeft,w=m.labelMarginTop;this.adjustLocations(this.tiledMemberPack[v],m.rect.x,m.rect.y,E,p,I,w)}},D.prototype.repopulateZeroDegreeMembers=function(){var n=this,m=this.tiledZeroDegreePack;Object.keys(m).forEach(function(v){var E=n.idToDummyNode[v],p=E.paddingLeft,I=E.paddingTop,w=E.labelMarginLeft,R=E.labelMarginTop;n.adjustLocations(m[v],E.rect.x,E.rect.y,p,I,w,R)})},D.prototype.getToBeTiled=function(n){var m=n.id;if(this.toBeTiled[m]!=null)return this.toBeTiled[m];var v=n.getChild();if(v==null)return this.toBeTiled[m]=!1,!1;for(var E=v.getNodes(),p=0;p0)return this.toBeTiled[m]=!1,!1;if(I.getChild()==null){this.toBeTiled[I.id]=!1;continue}if(!this.getToBeTiled(I))return this.toBeTiled[m]=!1,!1}return this.toBeTiled[m]=!0,!0},D.prototype.getNodeDegree=function(n){n.id;for(var m=n.getEdges(),v=0,E=0;Ek&&(k=U.rect.height)}v+=k+n.verticalPadding}},D.prototype.tileCompoundMembers=function(n,m){var v=this;this.tiledMemberPack=[],Object.keys(n).forEach(function(E){var p=m[E];if(v.tiledMemberPack[E]=v.tileNodes(n[E],p.paddingLeft+p.paddingRight),p.rect.width=v.tiledMemberPack[E].width,p.rect.height=v.tiledMemberPack[E].height,p.setCenter(v.tiledMemberPack[E].centerX,v.tiledMemberPack[E].centerY),p.labelMarginLeft=0,p.labelMarginTop=0,o.NODE_DIMENSIONS_INCLUDE_LABELS){var I=p.rect.width,w=p.rect.height;p.labelWidth&&(p.labelPosHorizontal=="left"?(p.rect.x-=p.labelWidth,p.setWidth(I+p.labelWidth),p.labelMarginLeft=p.labelWidth):p.labelPosHorizontal=="center"&&p.labelWidth>I?(p.rect.x-=(p.labelWidth-I)/2,p.setWidth(p.labelWidth),p.labelMarginLeft=(p.labelWidth-I)/2):p.labelPosHorizontal=="right"&&p.setWidth(I+p.labelWidth)),p.labelHeight&&(p.labelPosVertical=="top"?(p.rect.y-=p.labelHeight,p.setHeight(w+p.labelHeight),p.labelMarginTop=p.labelHeight):p.labelPosVertical=="center"&&p.labelHeight>w?(p.rect.y-=(p.labelHeight-w)/2,p.setHeight(p.labelHeight),p.labelMarginTop=(p.labelHeight-w)/2):p.labelPosVertical=="bottom"&&p.setHeight(w+p.labelHeight))}})},D.prototype.tileNodes=function(n,m){var v=this.tileNodesByFavoringDim(n,m,!0),E=this.tileNodesByFavoringDim(n,m,!1),p=this.getOrgRatio(v),I=this.getOrgRatio(E),w;return IR&&(R=z.getWidth())});var H=I/p,x=w/p,k=Math.pow(v-E,2)+4*(H+E)*(x+v)*p,W=(E-v+Math.sqrt(k))/(2*(H+E)),U;m?(U=Math.ceil(W),U==W&&U++):U=Math.floor(W);var et=U*(H+E)-E;return R>et&&(et=R),et+=E*2,et},D.prototype.tileNodesByFavoringDim=function(n,m,v){var E=o.TILING_PADDING_VERTICAL,p=o.TILING_PADDING_HORIZONTAL,I=o.TILING_COMPARE_BY,w={rows:[],rowWidth:[],rowHeight:[],width:0,height:m,verticalPadding:E,horizontalPadding:p,centerX:0,centerY:0};I&&(w.idealRowWidth=this.calcIdealRowWidth(n,v));var R=function(O){return O.rect.width*O.rect.height},H=function(O,X){return R(X)-R(O)};n.sort(function(z,O){var X=H;return w.idealRowWidth?(X=I,X(z.id,O.id)):X(z,O)});for(var x=0,k=0,W=0;W0&&(w+=n.horizontalPadding),n.rowWidth[v]=w,n.width0&&(R+=n.verticalPadding);var H=0;R>n.rowHeight[v]&&(H=n.rowHeight[v],n.rowHeight[v]=R,H=n.rowHeight[v]-H),n.height+=H,n.rows[v].push(m)},D.prototype.getShortestRowIndex=function(n){for(var m=-1,v=Number.MAX_VALUE,E=0;Ev&&(m=E,v=n.rowWidth[E]);return m},D.prototype.canAddHorizontal=function(n,m,v){if(n.idealRowWidth){var E=n.rows.length-1,p=n.rowWidth[E];return p+m+n.horizontalPadding<=n.idealRowWidth}var I=this.getShortestRowIndex(n);if(I<0)return!0;var w=n.rowWidth[I];if(w+n.horizontalPadding+m<=n.width)return!0;var R=0;n.rowHeight[I]0&&(R=v+n.verticalPadding-n.rowHeight[I]);var H;n.width-w>=m+n.horizontalPadding?H=(n.height+R)/(w+m+n.horizontalPadding):H=(n.height+R)/n.width,R=v+n.verticalPadding;var x;return n.widthI&&m!=v){E.splice(-1,1),n.rows[v].push(p),n.rowWidth[m]=n.rowWidth[m]-I,n.rowWidth[v]=n.rowWidth[v]+I,n.width=n.rowWidth[instance.getLongestRowIndex(n)];for(var w=Number.MIN_VALUE,R=0;Rw&&(w=E[R].height);m>0&&(w+=n.verticalPadding);var H=n.rowHeight[m]+n.rowHeight[v];n.rowHeight[m]=w,n.rowHeight[v]0)for(var et=p;et<=I;et++)U[0]+=this.grid[et][w-1].length+this.grid[et][w].length-1;if(I0)for(var et=w;et<=R;et++)U[3]+=this.grid[p-1][et].length+this.grid[p][et].length-1;for(var z=M.MAX_VALUE,O,X,B=0;B{var f=e(551).FDLayoutNode,a=e(551).IMath;function y(h,o,c,l){f.call(this,h,o,c,l)}y.prototype=Object.create(f.prototype);for(var t in f)y[t]=f[t];y.prototype.calculateDisplacement=function(){var h=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=h.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=h.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=h.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=h.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>h.coolingFactor*h.maxNodeDisplacement&&(this.displacementX=h.coolingFactor*h.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>h.coolingFactor*h.maxNodeDisplacement&&(this.displacementY=h.coolingFactor*h.maxNodeDisplacement*a.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},y.prototype.propogateDisplacementToChildren=function(h,o){for(var c=this.getChild().getNodes(),l,T=0;T{function f(c){if(Array.isArray(c)){for(var l=0,T=Array(c.length);l0){var Ct=0;st.forEach(function(ht){$=="horizontal"?(tt.set(ht,u.has(ht)?d[u.get(ht)]:Z.get(ht)),Ct+=tt.get(ht)):(tt.set(ht,u.has(ht)?L[u.get(ht)]:Z.get(ht)),Ct+=tt.get(ht))}),Ct=Ct/st.length,ft.forEach(function(ht){K.has(ht)||tt.set(ht,Ct)})}else{var ct=0;ft.forEach(function(ht){$=="horizontal"?ct+=u.has(ht)?d[u.get(ht)]:Z.get(ht):ct+=u.has(ht)?L[u.get(ht)]:Z.get(ht)}),ct=ct/ft.length,ft.forEach(function(ht){tt.set(ht,ct)})}});for(var wt=function(){var st=dt.shift(),Ct=b.get(st);Ct.forEach(function(ct){if(tt.get(ct.id)ht&&(ht=qt),_tWt&&(Wt=_t)}}catch(ie){Mt=!0,Zt=ie}finally{try{!Nt&&Gt.return&&Gt.return()}finally{if(Mt)throw Zt}}var ce=(Ct+ht)/2-(ct+Wt)/2,Kt=!0,te=!1,ee=void 0;try{for(var jt=ft[Symbol.iterator](),se;!(Kt=(se=jt.next()).done);Kt=!0){var re=se.value;tt.set(re,tt.get(re)+ce)}}catch(ie){te=!0,ee=ie}finally{try{!Kt&&jt.return&&jt.return()}finally{if(te)throw ee}}})}return tt},rt=function(b){var $=0,K=0,Z=0,at=0;if(b.forEach(function(j){j.left?d[u.get(j.left)]-d[u.get(j.right)]>=0?$++:K++:L[u.get(j.top)]-L[u.get(j.bottom)]>=0?Z++:at++}),$>K&&Z>at)for(var gt=0;gtK)for(var ot=0;otat)for(var tt=0;tt1)l.fixedNodeConstraint.forEach(function(S,b){E[b]=[S.position.x,S.position.y],p[b]=[d[u.get(S.nodeId)],L[u.get(S.nodeId)]]}),I=!0;else if(l.alignmentConstraint)(function(){var S=0;if(l.alignmentConstraint.vertical){for(var b=l.alignmentConstraint.vertical,$=function(tt){var j=new Set;b[tt].forEach(function(yt){j.add(yt)});var dt=new Set([].concat(f(j)).filter(function(yt){return R.has(yt)})),wt=void 0;dt.size>0?wt=d[u.get(dt.values().next().value)]:wt=Q(j).x,b[tt].forEach(function(yt){E[S]=[wt,L[u.get(yt)]],p[S]=[d[u.get(yt)],L[u.get(yt)]],S++})},K=0;K0?wt=d[u.get(dt.values().next().value)]:wt=Q(j).y,Z[tt].forEach(function(yt){E[S]=[d[u.get(yt)],wt],p[S]=[d[u.get(yt)],L[u.get(yt)]],S++})},gt=0;gtW&&(W=k[et].length,U=et);if(W0){var mt={x:0,y:0};l.fixedNodeConstraint.forEach(function(S,b){var $={x:d[u.get(S.nodeId)],y:L[u.get(S.nodeId)]},K=S.position,Z=V(K,$);mt.x+=Z.x,mt.y+=Z.y}),mt.x/=l.fixedNodeConstraint.length,mt.y/=l.fixedNodeConstraint.length,d.forEach(function(S,b){d[b]+=mt.x}),L.forEach(function(S,b){L[b]+=mt.y}),l.fixedNodeConstraint.forEach(function(S){d[u.get(S.nodeId)]=S.position.x,L[u.get(S.nodeId)]=S.position.y})}if(l.alignmentConstraint){if(l.alignmentConstraint.vertical)for(var xt=l.alignmentConstraint.vertical,St=function(b){var $=new Set;xt[b].forEach(function(at){$.add(at)});var K=new Set([].concat(f($)).filter(function(at){return R.has(at)})),Z=void 0;K.size>0?Z=d[u.get(K.values().next().value)]:Z=Q($).x,$.forEach(function(at){R.has(at)||(d[u.get(at)]=Z)})},Vt=0;Vt0?Z=L[u.get(K.values().next().value)]:Z=Q($).y,$.forEach(function(at){R.has(at)||(L[u.get(at)]=Z)})},bt=0;bt{i.exports=A}},N={};function g(i){var r=N[i];if(r!==void 0)return r.exports;var e=N[i]={exports:{}};return G[i](e,e.exports,g),e.exports}var s=g(45);return s})()})}(pe)),pe.exports}(function(C,Y){(function(G,N){C.exports=N(cr())})(Te,function(A){return(()=>{var G={658:i=>{i.exports=Object.assign!=null?Object.assign.bind(Object):function(r){for(var e=arguments.length,f=Array(e>1?e-1:0),a=1;a{var f=function(){function t(h,o){var c=[],l=!0,T=!1,u=void 0;try{for(var d=h[Symbol.iterator](),L;!(l=(L=d.next()).done)&&(c.push(L.value),!(o&&c.length===o));l=!0);}catch(F){T=!0,u=F}finally{try{!l&&d.return&&d.return()}finally{if(T)throw u}}return c}return function(h,o){if(Array.isArray(h))return h;if(Symbol.iterator in Object(h))return t(h,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=e(140).layoutBase.LinkedList,y={};y.getTopMostNodes=function(t){for(var h={},o=0;o0&&I.merge(x)});for(var w=0;w1){L=u[0],F=L.connectedEdges().length,u.forEach(function(p){p.connectedEdges().length0&&c.set("dummy"+(c.size+1),J),V},y.relocateComponent=function(t,h,o){if(!o.fixedNodeConstraint){var c=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,T=Number.POSITIVE_INFINITY,u=Number.NEGATIVE_INFINITY;if(o.quality=="draft"){var d=!0,L=!1,F=void 0;try{for(var M=h.nodeIndexes[Symbol.iterator](),P;!(d=(P=M.next()).done);d=!0){var J=P.value,V=f(J,2),Q=V[0],D=V[1],rt=o.cy.getElementById(Q);if(rt){var n=rt.boundingBox(),m=h.xCoords[D]-n.w/2,v=h.xCoords[D]+n.w/2,E=h.yCoords[D]-n.h/2,p=h.yCoords[D]+n.h/2;ml&&(l=v),Eu&&(u=p)}}}catch(x){L=!0,F=x}finally{try{!d&&M.return&&M.return()}finally{if(L)throw F}}var I=t.x-(l+c)/2,w=t.y-(u+T)/2;h.xCoords=h.xCoords.map(function(x){return x+I}),h.yCoords=h.yCoords.map(function(x){return x+w})}else{Object.keys(h).forEach(function(x){var k=h[x],W=k.getRect().x,U=k.getRect().x+k.getRect().width,et=k.getRect().y,z=k.getRect().y+k.getRect().height;Wl&&(l=U),etu&&(u=z)});var R=t.x-(l+c)/2,H=t.y-(u+T)/2;Object.keys(h).forEach(function(x){var k=h[x];k.setCenter(k.getCenterX()+R,k.getCenterY()+H)})}}},y.calcBoundingBox=function(t,h,o,c){for(var l=Number.MAX_SAFE_INTEGER,T=Number.MIN_SAFE_INTEGER,u=Number.MAX_SAFE_INTEGER,d=Number.MIN_SAFE_INTEGER,L=void 0,F=void 0,M=void 0,P=void 0,J=t.descendants().not(":parent"),V=J.length,Q=0;QL&&(l=L),TM&&(u=M),d{var f=e(548),a=e(140).CoSELayout,y=e(140).CoSENode,t=e(140).layoutBase.PointD,h=e(140).layoutBase.DimensionD,o=e(140).layoutBase.LayoutConstants,c=e(140).layoutBase.FDLayoutConstants,l=e(140).CoSEConstants,T=function(d,L){var F=d.cy,M=d.eles,P=M.nodes(),J=M.edges(),V=void 0,Q=void 0,D=void 0,rt={};d.randomize&&(V=L.nodeIndexes,Q=L.xCoords,D=L.yCoords);var n=function(x){return typeof x=="function"},m=function(x,k){return n(x)?x(k):x},v=f.calcParentsWithoutChildren(F,M),E=function H(x,k,W,U){for(var et=k.length,z=0;z0){var q=void 0;q=W.getGraphManager().add(W.newGraph(),B),H(q,X,W,U)}}},p=function(x,k,W){for(var U=0,et=0,z=0;z0?l.DEFAULT_EDGE_LENGTH=c.DEFAULT_EDGE_LENGTH=U/et:n(d.idealEdgeLength)?l.DEFAULT_EDGE_LENGTH=c.DEFAULT_EDGE_LENGTH=50:l.DEFAULT_EDGE_LENGTH=c.DEFAULT_EDGE_LENGTH=d.idealEdgeLength,l.MIN_REPULSION_DIST=c.MIN_REPULSION_DIST=c.DEFAULT_EDGE_LENGTH/10,l.DEFAULT_RADIAL_SEPARATION=c.DEFAULT_EDGE_LENGTH)},I=function(x,k){k.fixedNodeConstraint&&(x.constraints.fixedNodeConstraint=k.fixedNodeConstraint),k.alignmentConstraint&&(x.constraints.alignmentConstraint=k.alignmentConstraint),k.relativePlacementConstraint&&(x.constraints.relativePlacementConstraint=k.relativePlacementConstraint)};d.nestingFactor!=null&&(l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=c.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=d.nestingFactor),d.gravity!=null&&(l.DEFAULT_GRAVITY_STRENGTH=c.DEFAULT_GRAVITY_STRENGTH=d.gravity),d.numIter!=null&&(l.MAX_ITERATIONS=c.MAX_ITERATIONS=d.numIter),d.gravityRange!=null&&(l.DEFAULT_GRAVITY_RANGE_FACTOR=c.DEFAULT_GRAVITY_RANGE_FACTOR=d.gravityRange),d.gravityCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=c.DEFAULT_COMPOUND_GRAVITY_STRENGTH=d.gravityCompound),d.gravityRangeCompound!=null&&(l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=c.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=d.gravityRangeCompound),d.initialEnergyOnIncremental!=null&&(l.DEFAULT_COOLING_FACTOR_INCREMENTAL=c.DEFAULT_COOLING_FACTOR_INCREMENTAL=d.initialEnergyOnIncremental),d.tilingCompareBy!=null&&(l.TILING_COMPARE_BY=d.tilingCompareBy),d.quality=="proof"?o.QUALITY=2:o.QUALITY=0,l.NODE_DIMENSIONS_INCLUDE_LABELS=c.NODE_DIMENSIONS_INCLUDE_LABELS=o.NODE_DIMENSIONS_INCLUDE_LABELS=d.nodeDimensionsIncludeLabels,l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=o.DEFAULT_INCREMENTAL=!d.randomize,l.ANIMATE=c.ANIMATE=o.ANIMATE=d.animate,l.TILE=d.tile,l.TILING_PADDING_VERTICAL=typeof d.tilingPaddingVertical=="function"?d.tilingPaddingVertical.call():d.tilingPaddingVertical,l.TILING_PADDING_HORIZONTAL=typeof d.tilingPaddingHorizontal=="function"?d.tilingPaddingHorizontal.call():d.tilingPaddingHorizontal,l.DEFAULT_INCREMENTAL=c.DEFAULT_INCREMENTAL=o.DEFAULT_INCREMENTAL=!0,l.PURE_INCREMENTAL=!d.randomize,o.DEFAULT_UNIFORM_LEAF_NODE_SIZES=d.uniformNodeDimensions,d.step=="transformed"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!1),d.step=="enforced"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!1),d.step=="cose"&&(l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!1,l.APPLY_LAYOUT=!0),d.step=="all"&&(d.randomize?l.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:l.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,l.ENFORCE_CONSTRAINTS=!0,l.APPLY_LAYOUT=!0),d.fixedNodeConstraint||d.alignmentConstraint||d.relativePlacementConstraint?l.TREE_REDUCTION_ON_INCREMENTAL=!1:l.TREE_REDUCTION_ON_INCREMENTAL=!0;var w=new a,R=w.newGraphManager();return E(R.addRoot(),f.getTopMostNodes(P),w,d),p(w,R,J),I(w,d),w.runLayout(),rt};i.exports={coseLayout:T}},212:(i,r,e)=>{var f=function(){function d(L,F){for(var M=0;M0)if(v){var I=t.getTopMostNodes(M.eles.nodes());if(D=t.connectComponents(P,M.eles,I),D.forEach(function(vt){var it=vt.boundingBox();rt.push({x:it.x1+it.w/2,y:it.y1+it.h/2})}),M.randomize&&D.forEach(function(vt){M.eles=vt,V.push(o(M))}),M.quality=="default"||M.quality=="proof"){var w=P.collection();if(M.tile){var R=new Map,H=[],x=[],k=0,W={nodeIndexes:R,xCoords:H,yCoords:x},U=[];if(D.forEach(function(vt,it){vt.edges().length==0&&(vt.nodes().forEach(function(ut,Tt){w.merge(vt.nodes()[Tt]),ut.isParent()||(W.nodeIndexes.set(vt.nodes()[Tt].id(),k++),W.xCoords.push(vt.nodes()[0].position().x),W.yCoords.push(vt.nodes()[0].position().y))}),U.push(it))}),w.length>1){var et=w.boundingBox();rt.push({x:et.x1+et.w/2,y:et.y1+et.h/2}),D.push(w),V.push(W);for(var z=U.length-1;z>=0;z--)D.splice(U[z],1),V.splice(U[z],1),rt.splice(U[z],1)}}D.forEach(function(vt,it){M.eles=vt,Q.push(l(M,V[it])),t.relocateComponent(rt[it],Q[it],M)})}else D.forEach(function(vt,it){t.relocateComponent(rt[it],V[it],M)});var O=new Set;if(D.length>1){var X=[],B=J.filter(function(vt){return vt.css("display")=="none"});D.forEach(function(vt,it){var ut=void 0;if(M.quality=="draft"&&(ut=V[it].nodeIndexes),vt.nodes().not(B).length>0){var Tt={};Tt.edges=[],Tt.nodes=[];var At=void 0;vt.nodes().not(B).forEach(function(Dt){if(M.quality=="draft")if(!Dt.isParent())At=ut.get(Dt.id()),Tt.nodes.push({x:V[it].xCoords[At]-Dt.boundingbox().w/2,y:V[it].yCoords[At]-Dt.boundingbox().h/2,width:Dt.boundingbox().w,height:Dt.boundingbox().h});else{var mt=t.calcBoundingBox(Dt,V[it].xCoords,V[it].yCoords,ut);Tt.nodes.push({x:mt.topLeftX,y:mt.topLeftY,width:mt.width,height:mt.height})}else Q[it][Dt.id()]&&Tt.nodes.push({x:Q[it][Dt.id()].getLeft(),y:Q[it][Dt.id()].getTop(),width:Q[it][Dt.id()].getWidth(),height:Q[it][Dt.id()].getHeight()})}),vt.edges().forEach(function(Dt){var mt=Dt.source(),xt=Dt.target();if(mt.css("display")!="none"&&xt.css("display")!="none")if(M.quality=="draft"){var St=ut.get(mt.id()),Vt=ut.get(xt.id()),Xt=[],Ut=[];if(mt.isParent()){var bt=t.calcBoundingBox(mt,V[it].xCoords,V[it].yCoords,ut);Xt.push(bt.topLeftX+bt.width/2),Xt.push(bt.topLeftY+bt.height/2)}else Xt.push(V[it].xCoords[St]),Xt.push(V[it].yCoords[St]);if(xt.isParent()){var Ht=t.calcBoundingBox(xt,V[it].xCoords,V[it].yCoords,ut);Ut.push(Ht.topLeftX+Ht.width/2),Ut.push(Ht.topLeftY+Ht.height/2)}else Ut.push(V[it].xCoords[Vt]),Ut.push(V[it].yCoords[Vt]);Tt.edges.push({startX:Xt[0],startY:Xt[1],endX:Ut[0],endY:Ut[1]})}else Q[it][mt.id()]&&Q[it][xt.id()]&&Tt.edges.push({startX:Q[it][mt.id()].getCenterX(),startY:Q[it][mt.id()].getCenterY(),endX:Q[it][xt.id()].getCenterX(),endY:Q[it][xt.id()].getCenterY()})}),Tt.nodes.length>0&&(X.push(Tt),O.add(it))}});var _=m.packComponents(X,M.randomize).shifts;if(M.quality=="draft")V.forEach(function(vt,it){var ut=vt.xCoords.map(function(At){return At+_[it].dx}),Tt=vt.yCoords.map(function(At){return At+_[it].dy});vt.xCoords=ut,vt.yCoords=Tt});else{var lt=0;O.forEach(function(vt){Object.keys(Q[vt]).forEach(function(it){var ut=Q[vt][it];ut.setCenter(ut.getCenterX()+_[lt].dx,ut.getCenterY()+_[lt].dy)}),lt++})}}}else{var E=M.eles.boundingBox();if(rt.push({x:E.x1+E.w/2,y:E.y1+E.h/2}),M.randomize){var p=o(M);V.push(p)}M.quality=="default"||M.quality=="proof"?(Q.push(l(M,V[0])),t.relocateComponent(rt[0],Q[0],M)):t.relocateComponent(rt[0],V[0],M)}var q=function(it,ut){if(M.quality=="default"||M.quality=="proof"){typeof it=="number"&&(it=ut);var Tt=void 0,At=void 0,Dt=it.data("id");return Q.forEach(function(xt){Dt in xt&&(Tt={x:xt[Dt].getRect().getCenterX(),y:xt[Dt].getRect().getCenterY()},At=xt[Dt])}),M.nodeDimensionsIncludeLabels&&(At.labelWidth&&(At.labelPosHorizontal=="left"?Tt.x+=At.labelWidth/2:At.labelPosHorizontal=="right"&&(Tt.x-=At.labelWidth/2)),At.labelHeight&&(At.labelPosVertical=="top"?Tt.y+=At.labelHeight/2:At.labelPosVertical=="bottom"&&(Tt.y-=At.labelHeight/2))),Tt==null&&(Tt={x:it.position("x"),y:it.position("y")}),{x:Tt.x,y:Tt.y}}else{var mt=void 0;return V.forEach(function(xt){var St=xt.nodeIndexes.get(it.id());St!=null&&(mt={x:xt.xCoords[St],y:xt.yCoords[St]})}),mt==null&&(mt={x:it.position("x"),y:it.position("y")}),{x:mt.x,y:mt.y}}};if(M.quality=="default"||M.quality=="proof"||M.randomize){var Rt=t.calcParentsWithoutChildren(P,J),Lt=J.filter(function(vt){return vt.css("display")=="none"});M.eles=J.not(Lt),J.nodes().not(":parent").not(Lt).layoutPositions(F,M,q),Rt.length>0&&Rt.forEach(function(vt){vt.position(q(vt))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),d}();i.exports=u},657:(i,r,e)=>{var f=e(548),a=e(140).layoutBase.Matrix,y=e(140).layoutBase.SVD,t=function(o){var c=o.cy,l=o.eles,T=l.nodes(),u=l.nodes(":parent"),d=new Map,L=new Map,F=new Map,M=[],P=[],J=[],V=[],Q=[],D=[],rt=[],n=[],m=void 0,v=1e8,E=1e-9,p=o.piTol,I=o.samplingType,w=o.nodeSeparation,R=void 0,H=function(){for(var b=0,$=0,K=!1;$=at;){ot=Z[at++];for(var It=M[ot],ft=0;ftdt&&(dt=Q[Ct],wt=Ct)}return wt},k=function(b){var $=void 0;if(b){$=Math.floor(Math.random()*m);for(var Z=0;Z=1)break;j=tt}for(var yt=0;yt=1)break;j=tt}for(var ft=0;ft0&&($.isParent()?M[b].push(F.get($.id())):M[b].push($.id()))})});var Lt=function(b){var $=L.get(b),K=void 0;d.get(b).forEach(function(Z){c.getElementById(Z).isParent()?K=F.get(Z):K=Z,M[$].push(K),M[L.get(K)].push(b)})},vt=!0,it=!1,ut=void 0;try{for(var Tt=d.keys()[Symbol.iterator](),At;!(vt=(At=Tt.next()).done);vt=!0){var Dt=At.value;Lt(Dt)}}catch(S){it=!0,ut=S}finally{try{!vt&&Tt.return&&Tt.return()}finally{if(it)throw ut}}m=L.size;var mt=void 0;if(m>2){R=m{var f=e(212),a=function(t){t&&t("layout","fcose",f)};typeof cytoscape<"u"&&a(cytoscape),i.exports=a},140:i=>{i.exports=A}},N={};function g(i){var r=N[i];if(r!==void 0)return r.exports;var e=N[i]={exports:{}};return G[i](e,e.exports,g),e.exports}var s=g(579);return s})()})})(be);var gr=be.exports;const ur=ke(gr);var xe={L:"left",R:"right",T:"top",B:"bottom"},Ie={L:nt(C=>`${C},${C/2} 0,${C} 0,0`,"L"),R:nt(C=>`0,${C/2} ${C},0 ${C},${C}`,"R"),T:nt(C=>`0,0 ${C},0 ${C/2},${C}`,"T"),B:nt(C=>`${C/2},0 ${C},${C} 0,${C}`,"B")},he={L:nt((C,Y)=>C-Y+2,"L"),R:nt((C,Y)=>C-2,"R"),T:nt((C,Y)=>C-Y+2,"T"),B:nt((C,Y)=>C-2,"B")},dr=nt(function(C){return zt(C)?C==="L"?"R":"L":C==="T"?"B":"T"},"getOppositeArchitectureDirection"),Re=nt(function(C){const Y=C;return Y==="L"||Y==="R"||Y==="T"||Y==="B"},"isArchitectureDirection"),zt=nt(function(C){const Y=C;return Y==="L"||Y==="R"},"isArchitectureDirectionX"),Qt=nt(function(C){const Y=C;return Y==="T"||Y==="B"},"isArchitectureDirectionY"),Pe=nt(function(C,Y){const A=zt(C)&&Qt(Y),G=Qt(C)&&zt(Y);return A||G},"isArchitectureDirectionXY"),vr=nt(function(C){const Y=C[0],A=C[1],G=zt(Y)&&Qt(A),N=Qt(Y)&&zt(A);return G||N},"isArchitecturePairXY"),pr=nt(function(C){return C!=="LL"&&C!=="RR"&&C!=="TT"&&C!=="BB"},"isValidArchitectureDirectionPair"),me=nt(function(C,Y){const A=`${C}${Y}`;return pr(A)?A:void 0},"getArchitectureDirectionPair"),yr=nt(function([C,Y],A){const G=A[0],N=A[1];return zt(G)?Qt(N)?[C+(G==="L"?-1:1),Y+(N==="T"?1:-1)]:[C+(G==="L"?-1:1),Y]:zt(N)?[C+(N==="L"?1:-1),Y+(G==="T"?1:-1)]:[C,Y+(G==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),Er=nt(function(C){return C==="LT"||C==="TL"?[1,1]:C==="BL"||C==="LB"?[1,-1]:C==="BR"||C==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),mr=nt(function(C){return C.type==="service"},"isArchitectureService"),Tr=nt(function(C){return C.type==="junction"},"isArchitectureJunction"),Ge=nt(C=>C.data(),"edgeData"),ne=nt(C=>C.data(),"nodeData"),Ue=qe.architecture,pt=new hr(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:Ue,dataStructures:void 0,elements:{}})),Nr=nt(()=>{pt.reset(),ar()},"clear"),Lr=nt(function({id:C,icon:Y,in:A,title:G,iconText:N}){if(pt.records.registeredIds[C]!==void 0)throw new Error(`The service id [${C}] is already in use by another ${pt.records.registeredIds[C]}`);if(A!==void 0){if(C===A)throw new Error(`The service [${C}] cannot be placed within itself`);if(pt.records.registeredIds[A]===void 0)throw new Error(`The service [${C}]'s parent does not exist. Please make sure the parent is created before this service`);if(pt.records.registeredIds[A]==="node")throw new Error(`The service [${C}]'s parent is not a group`)}pt.records.registeredIds[C]="node",pt.records.nodes[C]={id:C,type:"service",icon:Y,iconText:N,title:G,edges:[],in:A}},"addService"),Cr=nt(()=>Object.values(pt.records.nodes).filter(mr),"getServices"),Mr=nt(function({id:C,in:Y}){pt.records.registeredIds[C]="node",pt.records.nodes[C]={id:C,type:"junction",edges:[],in:Y}},"addJunction"),Ar=nt(()=>Object.values(pt.records.nodes).filter(Tr),"getJunctions"),wr=nt(()=>Object.values(pt.records.nodes),"getNodes"),Or=nt(C=>pt.records.nodes[C],"getNode"),Dr=nt(function({id:C,icon:Y,in:A,title:G}){if(pt.records.registeredIds[C]!==void 0)throw new Error(`The group id [${C}] is already in use by another ${pt.records.registeredIds[C]}`);if(A!==void 0){if(C===A)throw new Error(`The group [${C}] cannot be placed within itself`);if(pt.records.registeredIds[A]===void 0)throw new Error(`The group [${C}]'s parent does not exist. Please make sure the parent is created before this group`);if(pt.records.registeredIds[A]==="node")throw new Error(`The group [${C}]'s parent is not a group`)}pt.records.registeredIds[C]="group",pt.records.groups[C]={id:C,icon:Y,title:G,in:A}},"addGroup"),xr=nt(()=>Object.values(pt.records.groups),"getGroups"),Ir=nt(function({lhsId:C,rhsId:Y,lhsDir:A,rhsDir:G,lhsInto:N,rhsInto:g,lhsGroup:s,rhsGroup:i,title:r}){if(!Re(A))throw new Error(`Invalid direction given for left hand side of edge ${C}--${Y}. Expected (L,R,T,B) got ${A}`);if(!Re(G))throw new Error(`Invalid direction given for right hand side of edge ${C}--${Y}. Expected (L,R,T,B) got ${G}`);if(pt.records.nodes[C]===void 0&&pt.records.groups[C]===void 0)throw new Error(`The left-hand id [${C}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(pt.records.nodes[Y]===void 0&&pt.records.groups[C]===void 0)throw new Error(`The right-hand id [${Y}] does not yet exist. Please create the service/group before declaring an edge to it.`);const e=pt.records.nodes[C].in,f=pt.records.nodes[Y].in;if(s&&e&&f&&e==f)throw new Error(`The left-hand id [${C}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(i&&e&&f&&e==f)throw new Error(`The right-hand id [${Y}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const a={lhsId:C,lhsDir:A,lhsInto:N,lhsGroup:s,rhsId:Y,rhsDir:G,rhsInto:g,rhsGroup:i,title:r};pt.records.edges.push(a),pt.records.nodes[C]&&pt.records.nodes[Y]&&(pt.records.nodes[C].edges.push(pt.records.edges[pt.records.edges.length-1]),pt.records.nodes[Y].edges.push(pt.records.edges[pt.records.edges.length-1]))},"addEdge"),Rr=nt(()=>pt.records.edges,"getEdges"),Sr=nt(()=>{if(pt.records.dataStructures===void 0){const C=Object.entries(pt.records.nodes).reduce((s,[i,r])=>(s[i]=r.edges.reduce((e,f)=>{if(f.lhsId===i){const a=me(f.lhsDir,f.rhsDir);a&&(e[a]=f.rhsId)}else{const a=me(f.rhsDir,f.lhsDir);a&&(e[a]=f.lhsId)}return e},{}),s),{}),Y=Object.keys(C)[0],A={[Y]:1},G=Object.keys(C).reduce((s,i)=>i===Y?s:{...s,[i]:1},{}),N=nt(s=>{const i={[s]:[0,0]},r=[s];for(;r.length>0;){const e=r.shift();if(e){A[e]=1,delete G[e];const f=C[e],[a,y]=i[e];Object.entries(f).forEach(([t,h])=>{A[h]||(i[h]=yr([a,y],t),r.push(h))})}}return i},"BFS"),g=[N(Y)];for(;Object.keys(G).length>0;)g.push(N(Object.keys(G)[0]));pt.records.dataStructures={adjList:C,spatialMaps:g}}return pt.records.dataStructures},"getDataStructures"),Fr=nt((C,Y)=>{pt.records.elements[C]=Y},"setElementForId"),br=nt(C=>pt.records.elements[C],"getElementById"),le={clear:Nr,setDiagramTitle:Ke,getDiagramTitle:je,setAccTitle:_e,getAccTitle:tr,setAccDescription:er,getAccDescription:rr,addService:Lr,getServices:Cr,addJunction:Mr,getJunctions:Ar,getNodes:wr,getNode:Or,addGroup:Dr,getGroups:xr,addEdge:Ir,getEdges:Rr,setElementForId:Fr,getElementById:br,getDataStructures:Sr};function Pt(C){const Y=fe().architecture;return Y!=null&&Y[C]?Y[C]:Ue[C]}nt(Pt,"getConfigField");var Pr=nt((C,Y)=>{sr(C,Y),C.groups.map(Y.addGroup),C.services.map(A=>Y.addService({...A,type:"service"})),C.junctions.map(A=>Y.addJunction({...A,type:"junction"})),C.edges.map(Y.addEdge)},"populateDb"),Gr={parse:nt(async C=>{const Y=await lr("architecture",C);Se.debug(Y),Pr(Y,le)},"parse")},Ur=nt(C=>` + .edge { + stroke-width: ${C.archEdgeWidth}; + stroke: ${C.archEdgeColor}; + fill: none; + } + + .arrow { + fill: ${C.archEdgeArrowColor}; + } + + .node-bkg { + fill: none; + stroke: ${C.archGroupBorderColor}; + stroke-width: ${C.archGroupBorderWidth}; + stroke-dasharray: 8; + } + .node-icon-text { + display: flex; + align-items: center; + } + + .node-icon-text > div { + color: #fff; + margin: 1px; + height: fit-content; + text-align: center; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + } +`,"getStyles"),Yr=Ur,ae=nt(C=>`${C}`,"wrapIcon"),oe={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:ae('')},server:{body:ae('')},disk:{body:ae('')},internet:{body:ae('')},cloud:{body:ae('')},unknown:Je,blank:{body:ae("")}}},Xr=nt(async function(C,Y){const A=Pt("padding"),G=Pt("iconSize"),N=G/2,g=G/6,s=g/2;await Promise.all(Y.edges().map(async i=>{var P,J;const{source:r,sourceDir:e,sourceArrow:f,sourceGroup:a,target:y,targetDir:t,targetArrow:h,targetGroup:o,label:c}=Ge(i);let{x:l,y:T}=i[0].sourceEndpoint();const{x:u,y:d}=i[0].midpoint();let{x:L,y:F}=i[0].targetEndpoint();const M=A+4;if(a&&(zt(e)?l+=e==="L"?-M:M:T+=e==="T"?-M:M+18),o&&(zt(t)?L+=t==="L"?-M:M:F+=t==="T"?-M:M+18),!a&&((P=le.getNode(r))==null?void 0:P.type)==="junction"&&(zt(e)?l+=e==="L"?N:-N:T+=e==="T"?N:-N),!o&&((J=le.getNode(y))==null?void 0:J.type)==="junction"&&(zt(t)?L+=t==="L"?N:-N:F+=t==="T"?N:-N),i[0]._private.rscratch){const V=C.insert("g");if(V.insert("path").attr("d",`M ${l},${T} L ${u},${d} L${L},${F} `).attr("class","edge"),f){const Q=zt(e)?he[e](l,g):l-s,D=Qt(e)?he[e](T,g):T-s;V.insert("polygon").attr("points",Ie[e](g)).attr("transform",`translate(${Q},${D})`).attr("class","arrow")}if(h){const Q=zt(t)?he[t](L,g):L-s,D=Qt(t)?he[t](F,g):F-s;V.insert("polygon").attr("points",Ie[t](g)).attr("transform",`translate(${Q},${D})`).attr("class","arrow")}if(c){const Q=Pe(e,t)?"XY":zt(e)?"X":"Y";let D=0;Q==="X"?D=Math.abs(l-L):Q==="Y"?D=Math.abs(T-F)/1.5:D=Math.abs(l-L)/2;const rt=V.append("g");if(await Ne(rt,c,{useHtmlLabels:!1,width:D,classes:"architecture-service-label"},fe()),rt.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),Q==="X")rt.attr("transform","translate("+u+", "+d+")");else if(Q==="Y")rt.attr("transform","translate("+u+", "+d+") rotate(-90)");else if(Q==="XY"){const n=me(e,t);if(n&&vr(n)){const m=rt.node().getBoundingClientRect(),[v,E]=Er(n);rt.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*v*E*45})`);const p=rt.node().getBoundingClientRect();rt.attr("transform",` + translate(${u}, ${d-m.height/2}) + translate(${v*p.width/2}, ${E*p.height/2}) + rotate(${-1*v*E*45}, 0, ${m.height/2}) + `)}}}}}))},"drawEdges"),Hr=nt(async function(C,Y){const G=Pt("padding")*.75,N=Pt("fontSize"),s=Pt("iconSize")/2;await Promise.all(Y.nodes().map(async i=>{const r=ne(i);if(r.type==="group"){const{h:e,w:f,x1:a,y1:y}=i.boundingBox();C.append("rect").attr("x",a+s).attr("y",y+s).attr("width",f).attr("height",e).attr("class","node-bkg");const t=C.append("g");let h=a,o=y;if(r.icon){const c=t.append("g");c.html(`${await Ee(r.icon,{height:G,width:G,fallbackPrefix:oe.prefix})}`),c.attr("transform","translate("+(h+s+1)+", "+(o+s+1)+")"),h+=G,o+=N/2-1-2}if(r.label){const c=t.append("g");await Ne(c,r.label,{useHtmlLabels:!1,width:f,classes:"architecture-service-label"},fe()),c.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),c.attr("transform","translate("+(h+s+4)+", "+(o+s+2)+")")}}}))},"drawGroups"),Wr=nt(async function(C,Y,A){for(const G of A){const N=Y.append("g"),g=Pt("iconSize");if(G.title){const e=N.append("g");await Ne(e,G.title,{useHtmlLabels:!1,width:g*1.5,classes:"architecture-service-label"},fe()),e.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),e.attr("transform","translate("+g/2+", "+g+")")}const s=N.append("g");if(G.icon)s.html(`${await Ee(G.icon,{height:g,width:g,fallbackPrefix:oe.prefix})}`);else if(G.iconText){s.html(`${await Ee("blank",{height:g,width:g,fallbackPrefix:oe.prefix})}`);const a=s.append("g").append("foreignObject").attr("width",g).attr("height",g).append("div").attr("class","node-icon-text").attr("style",`height: ${g}px;`).append("div").html(G.iconText),y=parseInt(window.getComputedStyle(a.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;a.attr("style",`-webkit-line-clamp: ${Math.floor((g-2)/y)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+G.id).attr("d",`M0 ${g} v${-g} q0,-5 5,-5 h${g} q5,0 5,5 v${g} H0 Z`);N.attr("class","architecture-service");const{width:i,height:r}=N._groups[0][0].getBBox();G.width=i,G.height=r,C.setElementForId(G.id,N)}return 0},"drawServices"),Vr=nt(function(C,Y,A){A.forEach(G=>{const N=Y.append("g"),g=Pt("iconSize");N.append("g").append("rect").attr("id","node-"+G.id).attr("fill-opacity","0").attr("width",g).attr("height",g),N.attr("class","architecture-junction");const{width:i,height:r}=N._groups[0][0].getBBox();N.width=i,N.height=r,C.setElementForId(G.id,N)})},"drawJunctions");Qe([{name:oe.prefix,icons:oe}]);Fe.use(ur);function Ye(C,Y){C.forEach(A=>{Y.add({group:"nodes",data:{type:"service",id:A.id,icon:A.icon,label:A.title,parent:A.in,width:Pt("iconSize"),height:Pt("iconSize")},classes:"node-service"})})}nt(Ye,"addServices");function Xe(C,Y){C.forEach(A=>{Y.add({group:"nodes",data:{type:"junction",id:A.id,parent:A.in,width:Pt("iconSize"),height:Pt("iconSize")},classes:"node-junction"})})}nt(Xe,"addJunctions");function He(C,Y){Y.nodes().map(A=>{const G=ne(A);if(G.type==="group")return;G.x=A.position().x,G.y=A.position().y,C.getElementById(G.id).attr("transform","translate("+(G.x||0)+","+(G.y||0)+")")})}nt(He,"positionNodes");function We(C,Y){C.forEach(A=>{Y.add({group:"nodes",data:{type:"group",id:A.id,icon:A.icon,label:A.title,parent:A.in},classes:"node-group"})})}nt(We,"addGroups");function Ve(C,Y){C.forEach(A=>{const{lhsId:G,rhsId:N,lhsInto:g,lhsGroup:s,rhsInto:i,lhsDir:r,rhsDir:e,rhsGroup:f,title:a}=A,y=Pe(A.lhsDir,A.rhsDir)?"segments":"straight",t={id:`${G}-${N}`,label:a,source:G,sourceDir:r,sourceArrow:g,sourceGroup:s,sourceEndpoint:r==="L"?"0 50%":r==="R"?"100% 50%":r==="T"?"50% 0":"50% 100%",target:N,targetDir:e,targetArrow:i,targetGroup:f,targetEndpoint:e==="L"?"0 50%":e==="R"?"100% 50%":e==="T"?"50% 0":"50% 100%"};Y.add({group:"edges",data:t,classes:y})})}nt(Ve,"addEdges");function ze(C){const Y=C.map(N=>{const g={},s={};return Object.entries(N).forEach(([i,[r,e]])=>{g[e]||(g[e]=[]),s[r]||(s[r]=[]),g[e].push(i),s[r].push(i)}),{horiz:Object.values(g).filter(i=>i.length>1),vert:Object.values(s).filter(i=>i.length>1)}}),[A,G]=Y.reduce(([N,g],{horiz:s,vert:i})=>[[...N,...s],[...g,...i]],[[],[]]);return{horizontal:A,vertical:G}}nt(ze,"getAlignments");function Be(C){const Y=[],A=nt(N=>`${N[0]},${N[1]}`,"posToStr"),G=nt(N=>N.split(",").map(g=>parseInt(g)),"strToPos");return C.forEach(N=>{const g=Object.fromEntries(Object.entries(N).map(([e,f])=>[A(f),e])),s=[A([0,0])],i={},r={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){const e=s.shift();if(e){i[e]=1;const f=g[e];if(f){const a=G(e);Object.entries(r).forEach(([y,t])=>{const h=A([a[0]+t[0],a[1]+t[1]]),o=g[h];o&&!i[h]&&(s.push(h),Y.push({[xe[y]]:o,[xe[dr(y)]]:f,gap:1.5*Pt("iconSize")}))})}}}}),Y}nt(Be,"getRelativeConstraints");function $e(C,Y,A,G,{spatialMaps:N}){return new Promise(g=>{const s=ir("body").append("div").attr("id","cy").attr("style","display:none"),i=Fe({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":`${Pt("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:`${Pt("padding")}px`}}]});s.remove(),We(A,i),Ye(C,i),Xe(Y,i),Ve(G,i);const r=ze(N),e=Be(N),f=i.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(a){const[y,t]=a.connectedNodes(),{parent:h}=ne(y),{parent:o}=ne(t);return h===o?1.5*Pt("iconSize"):.5*Pt("iconSize")},edgeElasticity(a){const[y,t]=a.connectedNodes(),{parent:h}=ne(y),{parent:o}=ne(t);return h===o?.45:.001},alignmentConstraint:r,relativePlacementConstraint:e});f.one("layoutstop",()=>{var y;function a(t,h,o,c){let l,T;const{x:u,y:d}=t,{x:L,y:F}=h;T=(c-d+(u-o)*(d-F)/(u-L))/Math.sqrt(1+Math.pow((d-F)/(u-L),2)),l=Math.sqrt(Math.pow(c-d,2)+Math.pow(o-u,2)-Math.pow(T,2));const M=Math.sqrt(Math.pow(L-u,2)+Math.pow(F-d,2));l=l/M;let P=(L-u)*(c-d)-(F-d)*(o-u);switch(!0){case P>=0:P=1;break;case P<0:P=-1;break}let J=(L-u)*(o-u)+(F-d)*(c-d);switch(!0){case J>=0:J=1;break;case J<0:J=-1;break}return T=Math.abs(T)*P,l=l*J,{distances:T,weights:l}}nt(a,"getSegmentWeights"),i.startBatch();for(const t of Object.values(i.edges()))if((y=t.data)!=null&&y.call(t)){const{x:h,y:o}=t.source().position(),{x:c,y:l}=t.target().position();if(h!==c&&o!==l){const T=t.sourceEndpoint(),u=t.targetEndpoint(),{sourceDir:d}=Ge(t),[L,F]=Qt(d)?[T.x,u.y]:[u.x,T.y],{weights:M,distances:P}=a(T,u,L,F);t.style("segment-distances",P),t.style("segment-weights",M)}}i.endBatch(),f.run()}),f.run(),i.ready(a=>{Se.info("Ready",a),g(i)})})}nt($e,"layoutArchitecture");var zr=nt(async(C,Y,A,G)=>{const N=G.db,g=N.getServices(),s=N.getJunctions(),i=N.getGroups(),r=N.getEdges(),e=N.getDataStructures(),f=nr(Y),a=f.append("g");a.attr("class","architecture-edges");const y=f.append("g");y.attr("class","architecture-services");const t=f.append("g");t.attr("class","architecture-groups"),await Wr(N,y,g),Vr(N,y,s);const h=await $e(g,s,i,r,e);await Xr(a,h),await Hr(t,h),He(N,h),or(void 0,f,Pt("padding"),Pt("useMaxWidth"))},"draw"),Br={draw:zr},ei={parser:Gr,db:le,renderer:Br,styles:Yr};export{ei as diagram}; diff --git a/assets/chunks/basePickBy.B1urSlEm.js b/assets/chunks/basePickBy.B1urSlEm.js new file mode 100644 index 00000000..04ff72c1 --- /dev/null +++ b/assets/chunks/basePickBy.B1urSlEm.js @@ -0,0 +1 @@ +import{e as x,c as b,g as m,k as P,h as p,j as w,l as N,m as c,n as I,t as A,o as M}from"./baseUniq.CLqXXsun.js";import{aL as g,aq as E,aM as F,aN as T,aO as _,aP as l,aQ as $,aR as B,aS as S,aT as y}from"../app.BCWCbnje.js";var L=/\s/;function R(n){for(var r=n.length;r--&&L.test(n.charAt(r)););return r}var q=/^\s+/;function G(n){return n&&n.slice(0,R(n)+1).replace(q,"")}var o=NaN,H=/^[-+]0x[0-9a-f]+$/i,z=/^0b[01]+$/i,C=/^0o[0-7]+$/i,K=parseInt;function Q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=G(n);var t=z.test(n);return t||C.test(n)?K(n.slice(2),t?2:8):H.test(n)?o:+n}var v=1/0,W=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=Q(n),n===v||n===-v){var r=n<0?-1:1;return r*W}return n===n?n:0}function Y(n){var r=X(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var O=Object.prototype,D=O.hasOwnProperty,dn=E(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&F(r[0],r[1],a)&&(i=1);++t-1?a[f?r[e]:e]:void 0}}var U=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Y(t);return a<0&&(a=U(i+a,0)),p(n,m(r),a)}var hn=J(Z);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=$(n)?N:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n-1}function $(n){return sn(n)?xn(n):mn(n)}var nr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,rr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:rr.test(n)||!nr.test(n)||r!=null&&n in Object(r)}var er=500;function tr(n){var r=Fn(n,function(t){return e.size===er&&e.clear(),t}),e=r.cache;return r}var ir=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ar=/\\(\\)?/g,fr=tr(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(ir,function(e,t,a,i){r.push(a?i.replace(ar,"$1"):t||e)}),r});function sr(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(sr(n))}var ur=1/0;function m(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-ur?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&es))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&Re?new E:void 0;for(i.set(n,r),i.set(r,n);++o=Ot){var b=r?null:wt(n);if(b)return H(b);f=!1,a=Sn,u=new E}else u=r?[]:s;n:for(;++t"u"&&(M.yylloc={});var ut=M.yylloc;c.push(ut);var oe=M.options&&M.options.ranges;typeof J.yy.parseError=="function"?this.parseError=J.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function he(H){u.length=u.length-2*H,S.length=S.length-H,c.length=c.length-H}d(he,"popStack");function Dt(){var H;return H=w.pop()||M.lex()||W,typeof H!="number"&&(H instanceof Array&&(w=H,H=w.pop()),H=g.symbols_[H]||H),H}d(Dt,"lex");for(var Y,Q,U,pt,$={},st,q,Nt,it;;){if(Q=u[u.length-1],this.defaultActions[Q]?U=this.defaultActions[Q]:((Y===null||typeof Y>"u")&&(Y=Dt()),U=_[Q]&&_[Q][Y]),typeof U>"u"||!U.length||!U[0]){var ft="";it=[];for(st in _[Q])this.terminals_[st]&&st>X&&it.push("'"+this.terminals_[st]+"'");M.showPosition?ft="Parse error on line "+(A+1)+`: +`+M.showPosition()+` +Expecting `+it.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":ft="Parse error on line "+(A+1)+": Unexpected "+(Y==W?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(ft,{text:M.match,token:this.terminals_[Y]||Y,line:M.yylineno,loc:ut,expected:it})}if(U[0]instanceof Array&&U.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+Y);switch(U[0]){case 1:u.push(Y),S.push(M.yytext),c.push(M.yylloc),u.push(U[1]),Y=null,O=M.yyleng,p=M.yytext,A=M.yylineno,ut=M.yylloc;break;case 2:if(q=this.productions_[U[1]][1],$.$=S[S.length-q],$._$={first_line:c[c.length-(q||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(q||1)].first_column,last_column:c[c.length-1].last_column},oe&&($._$.range=[c[c.length-(q||1)].range[0],c[c.length-1].range[1]]),pt=this.performAction.apply($,[p,O,A,J.yy,U[1],S,c].concat(ce)),typeof pt<"u")return pt;q&&(u=u.slice(0,-1*q*2),S=S.slice(0,-1*q),c=c.slice(0,-1*q)),u.push(this.productions_[U[1]][0]),S.push($.$),c.push($._$),Nt=_[u[u.length-2]][u[u.length-1]],u.push(Nt);break;case 3:return!0}}return!0},"parse")},T=function(){var N={EOF:1,parseError:d(function(g,u){if(this.yy.parser)this.yy.parser.parseError(g,u);else throw new Error(g)},"parseError"),setInput:d(function(x,g){return this.yy=g||this.yy||{},this._input=x,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:d(function(){var x=this._input[0];this.yytext+=x,this.yyleng++,this.offset++,this.match+=x,this.matched+=x;var g=x.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),x},"input"),unput:d(function(x){var g=x.length,u=x.split(/(?:\r\n?|\n)/g);this._input=x+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var w=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),u.length-1&&(this.yylineno-=u.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:u?(u.length===w.length?this.yylloc.first_column:0)+w[w.length-u.length].length-u[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(x){this.unput(this.match.slice(x))},"less"),pastInput:d(function(){var x=this.matched.substr(0,this.matched.length-this.match.length);return(x.length>20?"...":"")+x.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var x=this.match;return x.length<20&&(x+=this._input.substr(0,20-x.length)),(x.substr(0,20)+(x.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var x=this.pastInput(),g=new Array(x.length+1).join("-");return x+this.upcomingInput()+` +`+g+"^"},"showPosition"),test_match:d(function(x,g){var u,w,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))),w=x[0].match(/(?:\r\n?|\n).*/g),w&&(this.yylineno+=w.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:w?w[w.length-1].length-w[w.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+x[0].length},this.yytext+=x[0],this.match+=x[0],this.matches=x,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(x[0].length),this.matched+=x[0],u=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),u)return u;if(this._backtrack){for(var c in S)this[c]=S[c];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var x,g,u,w;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),c=0;cg[0].length)){if(g=u,w=c,this.options.backtrack_lexer){if(x=this.test_match(u,S[c]),x!==!1)return x;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(x=this.test_match(g,S[w]),x!==!1?x:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var g=this.next();return g||this.lex()},"lex"),begin:d(function(g){this.conditionStack.push(g)},"begin"),popState:d(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(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:d(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:d(function(g){this.begin(g)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:d(function(g,u,w,S){switch(w){case 0:return 10;case 1:return g.getLogger().debug("Found space-block"),31;case 2:return g.getLogger().debug("Found nl-block"),31;case 3:return g.getLogger().debug("Found space-block"),29;case 4:g.getLogger().debug(".",u.yytext);break;case 5:g.getLogger().debug("_",u.yytext);break;case 6:return 5;case 7:return u.yytext=-1,28;case 8:return u.yytext=u.yytext.replace(/columns\s+/,""),g.getLogger().debug("COLUMNS (LEX)",u.yytext),28;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:g.getLogger().debug("LEX: POPPING STR:",u.yytext),this.popState();break;case 14:return g.getLogger().debug("LEX: STR end:",u.yytext),"STR";case 15:return u.yytext=u.yytext.replace(/space\:/,""),g.getLogger().debug("SPACE NUM (LEX)",u.yytext),21;case 16:return u.yytext="1",g.getLogger().debug("COLUMNS (LEX)",u.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 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";case 40:return this.popState(),g.getLogger().debug("Lex: ))"),"NODE_DEND";case 41:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";case 42:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";case 43:return this.popState(),g.getLogger().debug("Lex: (-"),"NODE_DEND";case 44:return this.popState(),g.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),g.getLogger().debug("Lex: (("),"NODE_DEND";case 46:return this.popState(),g.getLogger().debug("Lex: ]]"),"NODE_DEND";case 47:return this.popState(),g.getLogger().debug("Lex: ("),"NODE_DEND";case 48:return this.popState(),g.getLogger().debug("Lex: ])"),"NODE_DEND";case 49:return this.popState(),g.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),g.getLogger().debug("Lex: /]"),"NODE_DEND";case 51:return this.popState(),g.getLogger().debug("Lex: )]"),"NODE_DEND";case 52:return this.popState(),g.getLogger().debug("Lex: )"),"NODE_DEND";case 53:return this.popState(),g.getLogger().debug("Lex: ]>"),"NODE_DEND";case 54:return this.popState(),g.getLogger().debug("Lex: ]"),"NODE_DEND";case 55:return g.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;case 56:return g.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;case 57:return g.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;case 58:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 59:return g.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;case 60:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 61:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 62:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 63:return g.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;case 64:return g.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;case 65:return g.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 66:return this.pushState("NODE"),36;case 67:return this.pushState("NODE"),36;case 68:return this.pushState("NODE"),36;case 69:return this.pushState("NODE"),36;case 70:return this.pushState("NODE"),36;case 71:return this.pushState("NODE"),36;case 72:return this.pushState("NODE"),36;case 73:return g.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;case 74:return this.pushState("BLOCK_ARROW"),g.getLogger().debug("LEX ARR START"),38;case 75:return g.getLogger().debug("Lex: NODE_ID",u.yytext),32;case 76:return g.getLogger().debug("Lex: EOF",u.yytext),8;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:g.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:g.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return g.getLogger().debug("LEX: NODE_DESCR:",u.yytext),"NODE_DESCR";case 84:g.getLogger().debug("LEX POPPING"),this.popState();break;case 85:g.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (right): dir:",u.yytext),"DIR";case 87:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (left):",u.yytext),"DIR";case 88:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (x):",u.yytext),"DIR";case 89:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (y):",u.yytext),"DIR";case 90:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (up):",u.yytext),"DIR";case 91:return u.yytext=u.yytext.replace(/^,\s*/,""),g.getLogger().debug("Lex (down):",u.yytext),"DIR";case 92:return u.yytext="]>",g.getLogger().debug("Lex (ARROW_DIR end):",u.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 93:return g.getLogger().debug("Lex: LINK","#"+u.yytext+"#"),15;case 94:return g.getLogger().debug("Lex: LINK",u.yytext),15;case 95:return g.getLogger().debug("Lex: LINK",u.yytext),15;case 96:return g.getLogger().debug("Lex: LINK",u.yytext),15;case 97:return g.getLogger().debug("Lex: START_LINK",u.yytext),this.pushState("LLABEL"),16;case 98:return g.getLogger().debug("Lex: START_LINK",u.yytext),this.pushState("LLABEL"),16;case 99:return g.getLogger().debug("Lex: START_LINK",u.yytext),this.pushState("LLABEL"),16;case 100:this.pushState("md_string");break;case 101:return g.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 102:return this.popState(),g.getLogger().debug("Lex: LINK","#"+u.yytext+"#"),15;case 103:return this.popState(),g.getLogger().debug("Lex: LINK",u.yytext),15;case 104:return this.popState(),g.getLogger().debug("Lex: LINK",u.yytext),15;case 105:return g.getLogger().debug("Lex: COLON",u.yytext),u.yytext=u.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}}};return N}();v.lexer=T;function k(){this.yy={}}return d(k,"Parser"),k.prototype=v,v.Parser=k,new k}();yt.parser=yt;var Ee=yt,V=new Map,St=[],bt=new Map,Ct="color",Bt="fill",_e="bgFill",Ht=",",ke=z(),ct=new Map,De=d(e=>me.sanitizeText(e,ke),"sanitizeText"),Ne=d(function(e,t=""){let r=ct.get(e);r||(r={id:e,styles:[],textStyles:[]},ct.set(e,r)),t!=null&&t.split(Ht).forEach(n=>{const i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Ct).exec(n)){const s=i.replace(Bt,_e).replace(Ct,Bt);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),Te=d(function(e,t=""){const r=V.get(e);t!=null&&(r.styles=t.split(Ht))},"addStyle2Node"),Ce=d(function(e,t){e.split(",").forEach(function(r){let n=V.get(r);if(n===void 0){const i=r.trim();n={id:i,type:"na",children:[]},V.set(i,n)}n.classes||(n.classes=[]),n.classes.push(t)})},"setCssClass"),Kt=d((e,t)=>{const r=e.flat(),n=[];for(const i of r){if(i.label&&(i.label=De(i.label)),i.type==="classDef"){Ne(i.id,i.css);continue}if(i.type==="applyClass"){Ce(i.id,(i==null?void 0:i.styleClass)??"");continue}if(i.type==="applyStyles"){i!=null&&i.stylesStr&&Te(i.id,i==null?void 0:i.stylesStr);continue}if(i.type==="column-setting")t.columns=i.columns??-1;else if(i.type==="edge"){const a=(bt.get(i.id)??0)+1;bt.set(i.id,a),i.id=a+"-"+i.id,St.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);const a=V.get(i.id);if(a===void 0?V.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&Kt(i.children,i),i.type==="space"){const s=i.width??1;for(let l=0;l{L.debug("Clear called"),xe(),rt={id:"root",type:"composite",children:[],columns:-1},V=new Map([["root",rt]]),vt=[],ct=new Map,St=[],bt=new Map},"clear");function Xt(e){switch(L.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return L.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"}}d(Xt,"typeStr2Type");function Ut(e){switch(L.debug("typeStr2Type",e),e){case"==":return"thick";default:return"normal"}}d(Ut,"edgeTypeStr2Type");function jt(e){switch(e.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}d(jt,"edgeStrToEdgeData");var It=0,Ie=d(()=>(It++,"id-"+Math.random().toString(36).substr(2,12)+"-"+It),"generateId"),Oe=d(e=>{rt.children=e,Kt(e,rt),vt=rt.children},"setHierarchy"),Re=d(e=>{const t=V.get(e);return t?t.columns?t.columns:t.children?t.children.length:-1:-1},"getColumns"),ze=d(()=>[...V.values()],"getBlocksFlat"),Ae=d(()=>vt||[],"getBlocks"),Me=d(()=>St,"getEdges"),Fe=d(e=>V.get(e),"getBlock"),We=d(e=>{V.set(e.id,e)},"setBlock"),Pe=d(()=>console,"getLogger"),Ye=d(function(){return ct},"getClasses"),He={getConfig:d(()=>at().block,"getConfig"),typeStr2Type:Xt,edgeTypeStr2Type:Ut,edgeStrToEdgeData:jt,getLogger:Pe,getBlocksFlat:ze,getBlocks:Ae,getEdges:Me,setHierarchy:Oe,getBlock:Fe,setBlock:We,getColumns:Re,getClasses:Ye,clear:Be,generateId:Ie},Ke=He,nt=d((e,t)=>{const r=ve,n=r(e,"r"),i=r(e,"g"),a=r(e,"b");return ye(n,i,a,t)},"fade"),Xe=d(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span,p { + color: ${e.titleColor}; + } + + + + .label text,span,p { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${nt(e.edgeLabelBackground,.5)}; + // background-color: + } + + .node .cluster { + // fill: ${nt(e.mainBkg,.5)}; + fill: ${nt(e.clusterBkg,.5)}; + stroke: ${nt(e.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span,p { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } +`,"getStyles"),Ue=Xe,je=d((e,t,r,n)=>{t.forEach(i=>{rr[i](e,r,n)})},"insertMarkers"),Ve=d((e,t,r)=>{L.trace("Making markers for ",r),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionStart").attr("class","marker extension "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-extensionEnd").attr("class","marker extension "+t).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"),Ge=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionStart").attr("class","marker composition "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-compositionEnd").attr("class","marker composition "+t).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"),Ze=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationStart").attr("class","marker aggregation "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-aggregationEnd").attr("class","marker aggregation "+t).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"),qe=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyStart").attr("class","marker dependency "+t).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"),e.append("defs").append("marker").attr("id",r+"_"+t+"-dependencyEnd").attr("class","marker dependency "+t).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"),Je=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopStart").attr("class","marker lollipop "+t).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),e.append("defs").append("marker").attr("id",r+"_"+t+"-lollipopEnd").attr("class","marker lollipop "+t).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"),Qe=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-pointEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",r+"_"+t+"-pointStart").attr("class","marker "+t).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"),$e=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-circleEnd").attr("class","marker "+t).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"),e.append("marker").attr("id",r+"_"+t+"-circleStart").attr("class","marker "+t).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"),tr=d((e,t,r)=>{e.append("marker").attr("id",r+"_"+t+"-crossEnd").attr("class","marker cross "+t).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"),e.append("marker").attr("id",r+"_"+t+"-crossStart").attr("class","marker cross "+t).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"),er=d((e,t,r)=>{e.append("defs").append("marker").attr("id",r+"_"+t+"-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"),rr={extension:Ve,composition:Ge,aggregation:Ze,dependency:qe,lollipop:Je,point:Qe,circle:$e,cross:tr,barb:er},ar=je,Wt,Pt,I=((Pt=(Wt=z())==null?void 0:Wt.block)==null?void 0:Pt.padding)??8;function Vt(e,t){if(e===0||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(e===1)return{px:0,py:t};const r=t%e,n=Math.floor(t/e);return{px:r,py:n}}d(Vt,"calculateBlockPosition");var sr=d(e=>{let t=0,r=0;for(const n of e.children){const{width:i,height:a,x:s,y:l}=n.size??{width:0,height:0,x:0,y:0};L.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",l,n.type),n.type!=="space"&&(i>t&&(t=i/(e.widthInColumns??1)),a>r&&(r=a))}return{width:t,height:r}},"getMaxChildSize");function ot(e,t,r=0,n=0){var s,l,o,f,h,y,b,m,E,D,v;L.debug("setBlockSizes abc95 (start)",e.id,(s=e==null?void 0:e.size)==null?void 0:s.x,"block width =",e==null?void 0:e.size,"sieblingWidth",r),(l=e==null?void 0:e.size)!=null&&l.width||(e.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(((o=e.children)==null?void 0:o.length)>0){for(const S of e.children)ot(S,t);const T=sr(e);i=T.width,a=T.height,L.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",i,a);for(const S of e.children)S.size&&(L.debug(`abc95 Setting size of children of ${e.id} id=${S.id} ${i} ${a} ${JSON.stringify(S.size)}`),S.size.width=i*(S.widthInColumns??1)+I*((S.widthInColumns??1)-1),S.size.height=a,S.size.x=0,S.size.y=0,L.debug(`abc95 updating size of ${e.id} children child:${S.id} maxWidth:${i} maxHeight:${a}`));for(const S of e.children)ot(S,t,i,a);const k=e.columns??-1;let N=0;for(const S of e.children)N+=S.widthInColumns??1;let x=e.children.length;k>0&&k0?Math.min(e.children.length,k):e.children.length;if(S>0){const c=(u-S*I-I)/S;L.debug("abc95 (growing to fit) width",e.id,u,(b=e.size)==null?void 0:b.width,c);for(const _ of e.children)_.size&&(_.size.width=c)}}e.size={width:u,height:w,x:0,y:0}}L.debug("setBlockSizes abc94 (done)",e.id,(m=e==null?void 0:e.size)==null?void 0:m.x,(E=e==null?void 0:e.size)==null?void 0:E.width,(D=e==null?void 0:e.size)==null?void 0:D.y,(v=e==null?void 0:e.size)==null?void 0:v.height)}d(ot,"setBlockSizes");function Et(e,t){var n,i,a,s,l,o,f,h,y,b,m,E,D,v,T,k,N;L.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${(n=e==null?void 0:e.size)==null?void 0:n.x} y: ${(i=e==null?void 0:e.size)==null?void 0:i.y} width: ${(a=e==null?void 0:e.size)==null?void 0:a.width}`);const r=e.columns??-1;if(L.debug("layoutBlocks columns abc95",e.id,"=>",r,e),e.children&&e.children.length>0){const x=((l=(s=e==null?void 0:e.children[0])==null?void 0:s.size)==null?void 0:l.width)??0,g=e.children.length*x+(e.children.length-1)*I;L.debug("widthOfChildren 88",g,"posX");let u=0;L.debug("abc91 block?.size?.x",e.id,(o=e==null?void 0:e.size)==null?void 0:o.x);let w=(f=e==null?void 0:e.size)!=null&&f.x?((h=e==null?void 0:e.size)==null?void 0:h.x)+(-((y=e==null?void 0:e.size)==null?void 0:y.width)/2||0):-I,S=0;for(const c of e.children){const _=e;if(!c.size)continue;const{width:p,height:A}=c.size,{px:O,py:X}=Vt(r,u);if(X!=S&&(S=X,w=(b=e==null?void 0:e.size)!=null&&b.x?((m=e==null?void 0:e.size)==null?void 0:m.x)+(-((E=e==null?void 0:e.size)==null?void 0:E.width)/2||0):-I,L.debug("New row in layout for block",e.id," and child ",c.id,S)),L.debug(`abc89 layout blocks (child) id: ${c.id} Pos: ${u} (px, py) ${O},${X} (${(D=_==null?void 0:_.size)==null?void 0:D.x},${(v=_==null?void 0:_.size)==null?void 0:v.y}) parent: ${_.id} width: ${p}${I}`),_.size){const W=p/2;c.size.x=w+I+W,L.debug(`abc91 layout blocks (calc) px, pyid:${c.id} startingPos=X${w} new startingPosX${c.size.x} ${W} padding=${I} width=${p} halfWidth=${W} => x:${c.size.x} y:${c.size.y} ${c.widthInColumns} (width * (child?.w || 1)) / 2 ${p*((c==null?void 0:c.widthInColumns)??1)/2}`),w=c.size.x+W,c.size.y=_.size.y-_.size.height/2+X*(A+I)+A/2+I,L.debug(`abc88 layout blocks (calc) px, pyid:${c.id}startingPosX${w}${I}${W}=>x:${c.size.x}y:${c.size.y}${c.widthInColumns}(width * (child?.w || 1)) / 2${p*((c==null?void 0:c.widthInColumns)??1)/2}`)}c.children&&Et(c),u+=(c==null?void 0:c.widthInColumns)??1,L.debug("abc88 columnsPos",c,u)}}L.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${(T=e==null?void 0:e.size)==null?void 0:T.x} y: ${(k=e==null?void 0:e.size)==null?void 0:k.y} width: ${(N=e==null?void 0:e.size)==null?void 0:N.width}`)}d(Et,"layoutBlocks");function _t(e,{minX:t,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&e.id!=="root"){const{x:a,y:s,width:l,height:o}=e.size;a-l/2n&&(n=a+l/2),s+o/2>i&&(i=s+o/2)}if(e.children)for(const a of e.children)({minX:t,minY:r,maxX:n,maxY:i}=_t(a,{minX:t,minY:r,maxX:n,maxY:i}));return{minX:t,minY:r,maxX:n,maxY:i}}d(_t,"findBounds");function Gt(e){const t=e.getBlock("root");if(!t)return;ot(t,e,0,0),Et(t),L.debug("getBlocks",JSON.stringify(t,null,2));const{minX:r,minY:n,maxX:i,maxY:a}=_t(t),s=a-n,l=i-r;return{x:r,y:n,width:l,height:s}}d(Gt,"layout");function wt(e,t){t&&e.attr("style",t)}d(wt,"applyStyle");function Zt(e){const t=R(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=t.append("xhtml:div"),n=e.label,i=e.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),wt(a,e.labelStyle),a.attr("class",i),wt(r,e.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),t.node()}d(Zt,"addHtmlLabel");var ir=d((e,t,r,n)=>{let i=e||"";if(typeof i=="object"&&(i=i[0]),Z(z().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),L.debug("vertexText"+i);const a={isNode:n,label:we(xt(i)),labelStyle:t.replace("fill:","color:")};return Zt(a)}else{const a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",t.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(const l of s){const o=document.createElementNS("http://www.w3.org/2000/svg","tspan");o.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),o.setAttribute("dy","1em"),o.setAttribute("x","0"),r?o.setAttribute("class","title-row"):o.setAttribute("class","row"),o.textContent=l.trim(),a.appendChild(o)}return a}},"createLabel"),j=ir,nr=d((e,t,r,n,i)=>{t.arrowTypeStart&&Ot(e,"start",t.arrowTypeStart,r,n,i),t.arrowTypeEnd&&Ot(e,"end",t.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),lr={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Ot=d((e,t,r,n,i,a)=>{const s=lr[r];if(!s){L.warn(`Unknown arrow type: ${r}`);return}const l=t==="start"?"Start":"End";e.attr(`marker-${t}`,`url(${n}#${i}_${a}-${s}${l})`)},"addEdgeMarker"),mt={},P={},cr=d((e,t)=>{const r=z(),n=Z(r.flowchart.htmlLabels),i=t.labelType==="markdown"?Yt(e,t.label,{style:t.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):j(t.label,t.labelStyle),a=e.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let l=i.getBBox();if(n){const f=i.children[0],h=R(i);l=f.getBoundingClientRect(),h.attr("width",l.width),h.attr("height",l.height)}s.attr("transform","translate("+-l.width/2+", "+-l.height/2+")"),mt[t.id]=a,t.width=l.width,t.height=l.height;let o;if(t.startLabelLeft){const f=j(t.startLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),y=h.insert("g").attr("class","inner");o=y.node().appendChild(f);const b=f.getBBox();y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),P[t.id]||(P[t.id]={}),P[t.id].startLeft=h,et(o,t.startLabelLeft)}if(t.startLabelRight){const f=j(t.startLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),y=h.insert("g").attr("class","inner");o=h.node().appendChild(f),y.node().appendChild(f);const b=f.getBBox();y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),P[t.id]||(P[t.id]={}),P[t.id].startRight=h,et(o,t.startLabelRight)}if(t.endLabelLeft){const f=j(t.endLabelLeft,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),y=h.insert("g").attr("class","inner");o=y.node().appendChild(f);const b=f.getBBox();y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),h.node().appendChild(f),P[t.id]||(P[t.id]={}),P[t.id].endLeft=h,et(o,t.endLabelLeft)}if(t.endLabelRight){const f=j(t.endLabelRight,t.labelStyle),h=e.insert("g").attr("class","edgeTerminals"),y=h.insert("g").attr("class","inner");o=y.node().appendChild(f);const b=f.getBBox();y.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),h.node().appendChild(f),P[t.id]||(P[t.id]={}),P[t.id].endRight=h,et(o,t.endLabelRight)}return i},"insertEdgeLabel");function et(e,t){z().flowchart.htmlLabels&&e&&(e.style.width=t.length*9+"px",e.style.height="12px")}d(et,"setTerminalWidth");var or=d((e,t)=>{L.debug("Moving label abc88 ",e.id,e.label,mt[e.id],t);let r=t.updatedPath?t.updatedPath:t.originalPath;const n=z(),{subGraphTitleTotalMargin:i}=ge(n);if(e.label){const a=mt[e.id];let s=e.x,l=e.y;if(r){const o=tt.calcLabelPosition(r);L.debug("Moving label "+e.label+" from (",s,",",l,") to (",o.x,",",o.y,") abc88"),t.updatedPath&&(s=o.x,l=o.y)}a.attr("transform",`translate(${s}, ${l+i/2})`)}if(e.startLabelLeft){const a=P[e.id].startLeft;let s=e.x,l=e.y;if(r){const o=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_left",r);s=o.x,l=o.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.startLabelRight){const a=P[e.id].startRight;let s=e.x,l=e.y;if(r){const o=tt.calcTerminalLabelPosition(e.arrowTypeStart?10:0,"start_right",r);s=o.x,l=o.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelLeft){const a=P[e.id].endLeft;let s=e.x,l=e.y;if(r){const o=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_left",r);s=o.x,l=o.y}a.attr("transform",`translate(${s}, ${l})`)}if(e.endLabelRight){const a=P[e.id].endRight;let s=e.x,l=e.y;if(r){const o=tt.calcTerminalLabelPosition(e.arrowTypeEnd?10:0,"end_right",r);s=o.x,l=o.y}a.attr("transform",`translate(${s}, ${l})`)}},"positionEdgeLabel"),hr=d((e,t)=>{const r=e.x,n=e.y,i=Math.abs(t.x-r),a=Math.abs(t.y-n),s=e.width/2,l=e.height/2;return i>=s||a>=l},"outsideNode"),dr=d((e,t,r)=>{L.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(t)} + insidePoint : ${JSON.stringify(r)} + node : x:${e.x} y:${e.y} w:${e.width} h:${e.height}`);const n=e.x,i=e.y,a=Math.abs(n-r.x),s=e.width/2;let l=r.xMath.abs(n-t.x)*o){let y=r.y{L.debug("abc88 cutPathAtIntersect",e,t);let r=[],n=e[0],i=!1;return e.forEach(a=>{if(!hr(t,a)&&!i){const s=dr(t,n,a);let l=!1;r.forEach(o=>{l=l||o.x===s.x&&o.y===s.y}),r.some(o=>o.x===s.x&&o.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),gr=d(function(e,t,r,n,i,a,s){let l=r.points;L.debug("abc88 InsertEdge: edge=",r,"e=",t);let o=!1;const f=a.node(t.v);var h=a.node(t.w);h!=null&&h.intersect&&(f!=null&&f.intersect)&&(l=l.slice(1,r.points.length-1),l.unshift(f.intersect(l[0])),l.push(h.intersect(l[l.length-1]))),r.toCluster&&(L.debug("to cluster abc88",n[r.toCluster]),l=Rt(r.points,n[r.toCluster].node),o=!0),r.fromCluster&&(L.debug("from cluster abc88",n[r.fromCluster]),l=Rt(l.reverse(),n[r.fromCluster].node).reverse(),o=!0);const y=l.filter(x=>!Number.isNaN(x.y));let b=be;r.curve&&(i==="graph"||i==="flowchart")&&(b=r.curve);const{x:m,y:E}=ue(r),D=pe().x(m).y(E).curve(b);let v;switch(r.thickness){case"normal":v="edge-thickness-normal";break;case"thick":v="edge-thickness-thick";break;case"invisible":v="edge-thickness-thick";break;default:v=""}switch(r.pattern){case"solid":v+=" edge-pattern-solid";break;case"dotted":v+=" edge-pattern-dotted";break;case"dashed":v+=" edge-pattern-dashed";break}const T=e.append("path").attr("d",D(y)).attr("id",r.id).attr("class"," "+v+(r.classes?" "+r.classes:"")).attr("style",r.style);let k="";(z().flowchart.arrowMarkerAbsolute||z().state.arrowMarkerAbsolute)&&(k=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,k=k.replace(/\(/g,"\\("),k=k.replace(/\)/g,"\\)")),nr(T,r,k,s,i);let N={};return o&&(N.updatedPath=l),N.originalPath=r.points,N},"insertEdge"),ur=d(e=>{const t=new Set;for(const r of e)switch(r){case"x":t.add("right"),t.add("left");break;case"y":t.add("up"),t.add("down");break;default:t.add(r);break}return t},"expandAndDeduplicateDirections"),pr=d((e,t,r)=>{const n=ur(e),i=2,a=t.height+2*r.padding,s=a/i,l=t.width+2*s+r.padding,o=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:l/2,y:2*o},{x:l-s,y:0},{x:l,y:0},{x:l,y:-a/3},{x:l+2*o,y:-a/2},{x:l,y:-2*a/3},{x:l,y:-a},{x:l-s,y:-a},{x:l/2,y:-a-2*o},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*o,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:l-s,y:-a},{x:l,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:l,y:-s},{x:l,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:l,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:l,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-o},{x:l-s,y:-o},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+o},{x:s,y:-a+o},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:l/2,y:0},{x:0,y:-o},{x:s,y:-o},{x:s,y:-a+o},{x:0,y:-a+o},{x:l/2,y:-a},{x:l,y:-a+o},{x:l-s,y:-a+o},{x:l-s,y:-o},{x:l,y:-o}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:l,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:l,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:l,y:0},{x:0,y:-s},{x:l,y:-a}]:n.has("left")&&n.has("down")?[{x:l,y:0},{x:0,y:0},{x:l,y:-a}]:n.has("right")?[{x:s,y:-o},{x:s,y:-o},{x:l-s,y:-o},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:l-s,y:-a+o},{x:s,y:-a+o},{x:s,y:-a+o}]:n.has("left")?[{x:s,y:0},{x:s,y:-o},{x:l-s,y:-o},{x:l-s,y:-a+o},{x:s,y:-a+o},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-o},{x:s,y:-a+o},{x:0,y:-a+o},{x:l/2,y:-a},{x:l,y:-a+o},{x:l-s,y:-a+o},{x:l-s,y:-o}]:n.has("down")?[{x:l/2,y:0},{x:0,y:-o},{x:s,y:-o},{x:s,y:-a+o},{x:l-s,y:-a+o},{x:l-s,y:-o},{x:l,y:-o}]:[{x:0,y:0}]},"getArrowPoints");function qt(e,t){return e.intersect(t)}d(qt,"intersectNode");var fr=qt;function Jt(e,t,r,n){var i=e.x,a=e.y,s=i-n.x,l=a-n.y,o=Math.sqrt(t*t*l*l+r*r*s*s),f=Math.abs(t*r*s/o);n.x0}d(Lt,"sameSign");var yr=te,br=ee;function ee(e,t,r){var n=e.x,i=e.y,a=[],s=Number.POSITIVE_INFINITY,l=Number.POSITIVE_INFINITY;typeof t.forEach=="function"?t.forEach(function(E){s=Math.min(s,E.x),l=Math.min(l,E.y)}):(s=Math.min(s,t.x),l=Math.min(l,t.y));for(var o=n-e.width/2-s,f=i-e.height/2-l,h=0;h1&&a.sort(function(E,D){var v=E.x-r.x,T=E.y-r.y,k=Math.sqrt(v*v+T*T),N=D.x-r.x,x=D.y-r.y,g=Math.sqrt(N*N+x*x);return k{var r=e.x,n=e.y,i=t.x-r,a=t.y-n,s=e.width/2,l=e.height/2,o,f;return Math.abs(a)*s>Math.abs(i)*l?(a<0&&(l=-l),o=a===0?0:l*i/a,f=l):(i<0&&(s=-s),o=s,f=i===0?0:s*a/i),{x:r+o,y:n+f}},"intersectRect"),mr=wr,C={node:fr,circle:xr,ellipse:Qt,polygon:br,rect:mr},F=d(async(e,t,r,n)=>{const i=z();let a;const s=t.useHtmlLabels||Z(i.flowchart.htmlLabels);r?a=r:a="node default";const l=e.insert("g").attr("class",a).attr("id",t.domId||t.id),o=l.insert("g").attr("class","label").attr("style",t.labelStyle);let f;t.labelText===void 0?f="":f=typeof t.labelText=="string"?t.labelText:t.labelText[0];const h=o.node();let y;t.labelType==="markdown"?y=Yt(o,Tt(xt(f),i),{useHtmlLabels:s,width:t.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):y=h.appendChild(j(Tt(xt(f),i),t.labelStyle,!1,n));let b=y.getBBox();const m=t.padding/2;if(Z(i.flowchart.htmlLabels)){const E=y.children[0],D=R(y),v=E.getElementsByTagName("img");if(v){const T=f.replace(/]*>/g,"").trim()==="";await Promise.all([...v].map(k=>new Promise(N=>{function x(){if(k.style.display="flex",k.style.flexDirection="column",T){const g=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,w=parseInt(g,10)*5+"px";k.style.minWidth=w,k.style.maxWidth=w}else k.style.width="100%";N(k)}d(x,"setupImage"),setTimeout(()=>{k.complete&&x()}),k.addEventListener("error",x),k.addEventListener("load",x)})))}b=E.getBoundingClientRect(),D.attr("width",b.width),D.attr("height",b.height)}return s?o.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"):o.attr("transform","translate(0, "+-b.height/2+")"),t.centerLabel&&o.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),o.insert("rect",":first-child"),{shapeSvg:l,bbox:b,halfPadding:m,label:o}},"labelHelper"),B=d((e,t)=>{const r=t.node().getBBox();e.width=r.width,e.height=r.height},"updateNodeBounds");function G(e,t,r,n){return e.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-t/2+","+r/2+")")}d(G,"insertPolygonShape");var Lr=d(async(e,t)=>{t.useHtmlLabels||z().flowchart.htmlLabels||(t.centerLabel=!0);const{shapeSvg:n,bbox:i,halfPadding:a}=await F(e,t,"node "+t.classes,!0);L.info("Classes = ",t.classes);const s=n.insert("rect",":first-child");return s.attr("rx",t.rx).attr("ry",t.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+t.padding).attr("height",i.height+t.padding),B(t,s),t.intersect=function(l){return C.rect(t,l)},n},"note"),Sr=Lr,zt=d(e=>e?" "+e:"","formatClass"),K=d((e,t)=>`${t||"node default"}${zt(e.classes)} ${zt(e.class)}`,"getClassesFromNode"),At=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=i+a,l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];L.info("Question main (Circle)");const o=G(r,s,s,l);return o.attr("style",t.style),B(t,o),t.intersect=function(f){return L.warn("Intersect called"),C.polygon(t,l,f)},r},"question"),vr=d((e,t)=>{const r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),t.width=28,t.height=28,t.intersect=function(s){return C.circle(t,14,s)},r},"choice"),Er=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=4,a=n.height+t.padding,s=a/i,l=n.width+2*s+t.padding,o=[{x:s,y:0},{x:l-s,y:0},{x:l,y:-a/2},{x:l-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],f=G(r,l,a,o);return f.attr("style",t.style),B(t,f),t.intersect=function(h){return C.polygon(t,o,h)},r},"hexagon"),_r=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,void 0,!0),i=2,a=n.height+2*t.padding,s=a/i,l=n.width+2*s+t.padding,o=pr(t.directions,n,t),f=G(r,l,a,o);return f.attr("style",t.style),B(t,f),t.intersect=function(h){return C.polygon(t,o,h)},r},"block_arrow"),kr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return G(r,i,a,s).attr("style",t.style),t.width=i+a,t.height=a,t.intersect=function(o){return C.polygon(t,s,o)},r},"rect_left_inv_arrow"),Dr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"lean_right"),Nr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"lean_left"),Tr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"trapezoid"),Cr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"inv_trapezoid"),Br=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"rect_right_inv_arrow"),Ir=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=i/2,s=a/(2.5+i/50),l=n.height+s+t.padding,o="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+l+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-l,f=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",t.style).attr("d",o).attr("transform","translate("+-i/2+","+-(l/2+s)+")");return B(t,f),t.intersect=function(h){const y=C.rect(t,h),b=y.x-t.x;if(a!=0&&(Math.abs(b)t.height/2-s)){let m=s*s*(1-b*b/(a*a));m!=0&&(m=Math.sqrt(m)),m=s-m,h.y-t.y>0&&(m=-m),y.y+=m}return y},r},"cylinder"),Or=d(async(e,t)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=await F(e,t,"node "+t.classes+" "+t.class,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,o=t.positioned?-s/2:-n.width/2-i,f=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",o).attr("y",f).attr("width",s).attr("height",l),t.props){const h=new Set(Object.keys(t.props));t.props.borders&&(ht(a,t.props.borders,s,l),h.delete("borders")),h.forEach(y=>{L.warn(`Unknown node property ${y}`)})}return B(t,a),t.intersect=function(h){return C.rect(t,h)},r},"rect"),Rr=d(async(e,t)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=await F(e,t,"node "+t.classes,!0),a=r.insert("rect",":first-child"),s=t.positioned?t.width:n.width+t.padding,l=t.positioned?t.height:n.height+t.padding,o=t.positioned?-s/2:-n.width/2-i,f=t.positioned?-l/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("x",o).attr("y",f).attr("width",s).attr("height",l),t.props){const h=new Set(Object.keys(t.props));t.props.borders&&(ht(a,t.props.borders,s,l),h.delete("borders")),h.forEach(y=>{L.warn(`Unknown node property ${y}`)})}return B(t,a),t.intersect=function(h){return C.rect(t,h)},r},"composite"),zr=d(async(e,t)=>{const{shapeSvg:r}=await F(e,t,"label",!0);L.trace("Classes = ",t.class);const n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),t.props){const s=new Set(Object.keys(t.props));t.props.borders&&(ht(n,t.props.borders,i,a),s.delete("borders")),s.forEach(l=>{L.warn(`Unknown node property ${l}`)})}return B(t,n),t.intersect=function(s){return C.rect(t,s)},r},"labelRect");function ht(e,t,r,n){const i=[],a=d(l=>{i.push(l,0)},"addBorder"),s=d(l=>{i.push(0,l)},"skipBorder");t.includes("t")?(L.debug("add top border"),a(r)):s(r),t.includes("r")?(L.debug("add right border"),a(n)):s(n),t.includes("b")?(L.debug("add bottom border"),a(r)):s(r),t.includes("l")?(L.debug("add left border"),a(n)):s(n),e.attr("stroke-dasharray",i.join(" "))}d(ht,"applyNodePropertyBorders");var Ar=d((e,t)=>{let r;t.classes?r="node "+t.classes:r="node default";const n=e.insert("g").attr("class",r).attr("id",t.domId||t.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),l=t.labelText.flat?t.labelText.flat():t.labelText;let o="";typeof l=="object"?o=l[0]:o=l,L.info("Label text abc79",o,l,typeof l=="object");const f=s.node().appendChild(j(o,t.labelStyle,!0,!0));let h={width:0,height:0};if(Z(z().flowchart.htmlLabels)){const D=f.children[0],v=R(f);h=D.getBoundingClientRect(),v.attr("width",h.width),v.attr("height",h.height)}L.info("Text 2",l);const y=l.slice(1,l.length);let b=f.getBBox();const m=s.node().appendChild(j(y.join?y.join("
    "):y,t.labelStyle,!0,!0));if(Z(z().flowchart.htmlLabels)){const D=m.children[0],v=R(m);h=D.getBoundingClientRect(),v.attr("width",h.width),v.attr("height",h.height)}const E=t.padding/2;return R(m).attr("transform","translate( "+(h.width>b.width?0:(b.width-h.width)/2)+", "+(b.height+E+5)+")"),R(f).attr("transform","translate( "+(h.width{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.height+t.padding,a=n.width+i/4+t.padding,s=r.insert("rect",":first-child").attr("style",t.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return B(t,s),t.intersect=function(l){return C.rect(t,l)},r},"stadium"),Fr=d(async(e,t)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=await F(e,t,K(t,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),L.info("Circle main"),B(t,a),t.intersect=function(s){return L.info("Circle intersect",t,n.width/2+i,s),C.circle(t,n.width/2+i,s)},r},"circle"),Wr=d(async(e,t)=>{const{shapeSvg:r,bbox:n,halfPadding:i}=await F(e,t,K(t,void 0),!0),a=5,s=r.insert("g",":first-child"),l=s.insert("circle"),o=s.insert("circle");return s.attr("class",t.class),l.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i+a).attr("width",n.width+t.padding+a*2).attr("height",n.height+t.padding+a*2),o.attr("style",t.style).attr("rx",t.rx).attr("ry",t.ry).attr("r",n.width/2+i).attr("width",n.width+t.padding).attr("height",n.height+t.padding),L.info("DoubleCircle main"),B(t,l),t.intersect=function(f){return L.info("DoubleCircle intersect",t,n.width/2+i+a,f),C.circle(t,n.width/2+i+a,f)},r},"doublecircle"),Pr=d(async(e,t)=>{const{shapeSvg:r,bbox:n}=await F(e,t,K(t,void 0),!0),i=n.width+t.padding,a=n.height+t.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],l=G(r,i,a,s);return l.attr("style",t.style),B(t,l),t.intersect=function(o){return C.polygon(t,s,o)},r},"subroutine"),Yr=d((e,t)=>{const r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),B(t,n),t.intersect=function(i){return C.circle(t,7,i)},r},"start"),Mt=d((e,t,r)=>{const n=e.insert("g").attr("class","node default").attr("id",t.domId||t.id);let i=70,a=10;r==="LR"&&(i=10,a=70);const s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return B(t,s),t.height=t.height+t.padding/2,t.width=t.width+t.padding/2,t.intersect=function(l){return C.rect(t,l)},n},"forkJoin"),Hr=d((e,t)=>{const r=e.insert("g").attr("class","node default").attr("id",t.domId||t.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),B(t,i),t.intersect=function(a){return C.circle(t,7,a)},r},"end"),Kr=d((e,t)=>{var S;const r=t.padding/2,n=4,i=8;let a;t.classes?a="node "+t.classes:a="node default";const s=e.insert("g").attr("class",a).attr("id",t.domId||t.id),l=s.insert("rect",":first-child"),o=s.insert("line"),f=s.insert("line");let h=0,y=n;const b=s.insert("g").attr("class","label");let m=0;const E=(S=t.classData.annotations)==null?void 0:S[0],D=t.classData.annotations[0]?"«"+t.classData.annotations[0]+"»":"",v=b.node().appendChild(j(D,t.labelStyle,!0,!0));let T=v.getBBox();if(Z(z().flowchart.htmlLabels)){const c=v.children[0],_=R(v);T=c.getBoundingClientRect(),_.attr("width",T.width),_.attr("height",T.height)}t.classData.annotations[0]&&(y+=T.height+n,h+=T.width);let k=t.classData.label;t.classData.type!==void 0&&t.classData.type!==""&&(z().flowchart.htmlLabels?k+="<"+t.classData.type+">":k+="<"+t.classData.type+">");const N=b.node().appendChild(j(k,t.labelStyle,!0,!0));R(N).attr("class","classTitle");let x=N.getBBox();if(Z(z().flowchart.htmlLabels)){const c=N.children[0],_=R(N);x=c.getBoundingClientRect(),_.attr("width",x.width),_.attr("height",x.height)}y+=x.height+n,x.width>h&&(h=x.width);const g=[];t.classData.members.forEach(c=>{const _=c.getDisplayDetails();let p=_.displayText;z().flowchart.htmlLabels&&(p=p.replace(//g,">"));const A=b.node().appendChild(j(p,_.cssStyle?_.cssStyle:t.labelStyle,!0,!0));let O=A.getBBox();if(Z(z().flowchart.htmlLabels)){const X=A.children[0],W=R(A);O=X.getBoundingClientRect(),W.attr("width",O.width),W.attr("height",O.height)}O.width>h&&(h=O.width),y+=O.height+n,g.push(A)}),y+=i;const u=[];if(t.classData.methods.forEach(c=>{const _=c.getDisplayDetails();let p=_.displayText;z().flowchart.htmlLabels&&(p=p.replace(//g,">"));const A=b.node().appendChild(j(p,_.cssStyle?_.cssStyle:t.labelStyle,!0,!0));let O=A.getBBox();if(Z(z().flowchart.htmlLabels)){const X=A.children[0],W=R(A);O=X.getBoundingClientRect(),W.attr("width",O.width),W.attr("height",O.height)}O.width>h&&(h=O.width),y+=O.height+n,u.push(A)}),y+=i,E){let c=(h-T.width)/2;R(v).attr("transform","translate( "+(-1*h/2+c)+", "+-1*y/2+")"),m=T.height+n}let w=(h-x.width)/2;return R(N).attr("transform","translate( "+(-1*h/2+w)+", "+(-1*y/2+m)+")"),m+=x.height+n,o.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-y/2-r+i+m).attr("y2",-y/2-r+i+m),m+=i,g.forEach(c=>{R(c).attr("transform","translate( "+-h/2+", "+(-1*y/2+m+i/2)+")");const _=c==null?void 0:c.getBBox();m+=((_==null?void 0:_.height)??0)+n}),m+=i,f.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-y/2-r+i+m).attr("y2",-y/2-r+i+m),m+=i,u.forEach(c=>{R(c).attr("transform","translate( "+-h/2+", "+(-1*y/2+m)+")");const _=c==null?void 0:c.getBBox();m+=((_==null?void 0:_.height)??0)+n}),l.attr("style",t.style).attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(y/2)-r).attr("width",h+t.padding).attr("height",y+t.padding),B(t,l),t.intersect=function(c){return C.rect(t,c)},s},"class_box"),Ft={rhombus:At,composite:Rr,question:At,rect:Or,labelRect:zr,rectWithTitle:Ar,choice:vr,circle:Fr,doublecircle:Wr,stadium:Mr,hexagon:Er,block_arrow:_r,rect_left_inv_arrow:kr,lean_right:Dr,lean_left:Nr,trapezoid:Tr,inv_trapezoid:Cr,rect_right_inv_arrow:Br,cylinder:Ir,start:Yr,end:Hr,note:Sr,subroutine:Pr,fork:Mt,join:Mt,class_box:Kr},lt={},re=d(async(e,t,r)=>{let n,i;if(t.link){let a;z().securityLevel==="sandbox"?a="_top":t.linkTarget&&(a=t.linkTarget||"_blank"),n=e.insert("svg:a").attr("xlink:href",t.link).attr("target",a),i=await Ft[t.shape](n,t,r)}else i=await Ft[t.shape](e,t,r),n=i;return t.tooltip&&i.attr("title",t.tooltip),t.class&&i.attr("class","node default "+t.class),lt[t.id]=n,t.haveCallback&<[t.id].attr("class",lt[t.id].attr("class")+" clickable"),n},"insertNode"),Xr=d(e=>{const t=lt[e.id];L.trace("Transforming node",e.diff,e,"translate("+(e.x-e.width/2-5)+", "+e.width/2+")");const r=8,n=e.diff||0;return e.clusterNode?t.attr("transform","translate("+(e.x+n-e.width/2)+", "+(e.y-e.height/2-r)+")"):t.attr("transform","translate("+e.x+", "+e.y+")"),n},"positionNode");function kt(e,t,r=!1){var b,m,E;const n=e;let i="default";(((b=n==null?void 0:n.classes)==null?void 0:b.length)||0)>0&&(i=((n==null?void 0:n.classes)??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",l;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",l=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}const o=de((n==null?void 0:n.styles)??[]),f=n.label,h=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:o.labelStyle,shape:s,labelText:f,rx:a,ry:a,class:i,style:o.style,id:n.id,directions:n.directions,width:h.width,height:h.height,x:h.x,y:h.y,positioned:r,intersect:void 0,type:n.type,padding:l??((E=(m=at())==null?void 0:m.block)==null?void 0:E.padding)??0}}d(kt,"getNodeFromBlock");async function ae(e,t,r){const n=kt(t,r,!1);if(n.type==="group")return;const i=at(),a=await re(e,n,{config:i}),s=a.node().getBBox(),l=r.getBlock(n.id);l.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(l),a.remove()}d(ae,"calculateBlockSize");async function se(e,t,r){const n=kt(t,r,!0);if(r.getBlock(n.id).type!=="space"){const a=at();await re(e,n,{config:a}),t.intersect=n==null?void 0:n.intersect,Xr(n)}}d(se,"insertBlockPositioned");async function dt(e,t,r,n){for(const i of t)await n(e,i,r),i.children&&await dt(e,i.children,r,n)}d(dt,"performOperations");async function ie(e,t,r){await dt(e,t,r,ae)}d(ie,"calculateBlockSizes");async function ne(e,t,r){await dt(e,t,r,se)}d(ne,"insertBlocks");async function le(e,t,r,n,i){const a=new Se({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(const s of t)if(s.start&&s.end){const l=n.getBlock(s.start),o=n.getBlock(s.end);if(l!=null&&l.size&&(o!=null&&o.size)){const f=l.size,h=o.size,y=[{x:f.x,y:f.y},{x:f.x+(h.x-f.x)/2,y:f.y+(h.y-f.y)/2},{x:h.x,y:h.y}];gr(e,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:y,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await cr(e,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:y,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),or({...s,x:y[1].x,y:y[1].y},{originalPath:y}))}}}d(le,"insertEdges");var Ur=d(function(e,t){return t.db.getClasses()},"getClasses"),jr=d(async function(e,t,r,n){const{securityLevel:i,block:a}=at(),s=n.db;let l;i==="sandbox"&&(l=R("#i"+t));const o=i==="sandbox"?R(l.nodes()[0].contentDocument.body):R("body"),f=i==="sandbox"?o.select(`[id="${t}"]`):R(`[id="${t}"]`);ar(f,["point","circle","cross"],n.type,t);const y=s.getBlocks(),b=s.getBlocksFlat(),m=s.getEdges(),E=f.insert("g").attr("class","block");await ie(E,y,s);const D=Gt(s);if(await ne(E,y,s),await le(E,m,b,s,t),D){const v=D,T=Math.max(1,Math.round(.125*(v.width/v.height))),k=v.height+T+10,N=v.width+10,{useMaxWidth:x}=a;fe(f,k,N,!!x),L.debug("Here Bounds",D,v),f.attr("viewBox",`${v.x-5} ${v.y-5} ${v.width+10} ${v.height+10}`)}},"draw"),Vr={draw:jr,getClasses:Ur},ea={parser:Ee,db:Ke,renderer:Vr,styles:Ue};export{ea as diagram}; diff --git a/assets/chunks/buttons.esm.DK2fWHEW.js b/assets/chunks/buttons.esm.DK2fWHEW.js new file mode 100644 index 00000000..0fc62bb7 --- /dev/null +++ b/assets/chunks/buttons.esm.DK2fWHEW.js @@ -0,0 +1,5 @@ +/*! + * github-buttons v2.29.1 + * (c) 2024 なつき + * @license BSD-2-Clause + */var C=window.document,p=window.Math,k=window.HTMLElement,b=window.XMLHttpRequest,F=function(e,t){for(var r=0,o=e.length;r
    '}}},download:{heights:{16:{width:16,path:''}}},eye:{heights:{16:{width:16,path:''}}},heart:{heights:{16:{width:16,path:''}}},"issue-opened":{heights:{16:{width:16,path:''}}},"mark-github":{heights:{16:{width:16,path:''}}},package:{heights:{16:{width:16,path:''}}},play:{heights:{16:{width:16,path:''}}},"repo-forked":{heights:{16:{width:16,path:''}}},"repo-template":{heights:{16:{width:16,path:''}}},star:{heights:{16:{width:16,path:''}}}},oe=function(e,t){e=Z(e).replace(/^octicon-/,""),m(x,e)||(e="mark-github");var r=t>=24&&24 in x[e].heights?24:16,o=x[e].heights[r];return'"},y={},re=function(e,t){var r=y[e]||(y[e]=[]);if(!(r.push(t)>1)){var o=V(function(){for(delete y[e];t=r.shift();)t.apply(null,arguments)});if(H){var a=new b;f(a,"abort",o),f(a,"error",o),f(a,"load",function(){var s;try{s=JSON.parse(this.responseText)}catch(d){o(d);return}o(this.status!==200,s)}),a.open("GET",e),a.send()}else{var n=this||window;n._=function(s){n._=null,o(s.meta.status!==200,s.data)};var c=A(n.document)("script",{async:!0,src:e+(e.indexOf("?")!==-1?"&":"?")+"callback=_"}),l=function(){n._&&n._({meta:{}})};f(c,"load",l),f(c,"error",l),$(c,/de|m/,l),n.document.getElementsByTagName("head")[0].appendChild(c)}}},T=function(e,t,r){var o=A(e.ownerDocument),a=e.appendChild(o("style",{type:"text/css"})),n=J+te(t["data-color-scheme"]);a.styleSheet?a.styleSheet.cssText=n:a.appendChild(e.ownerDocument.createTextNode(n));var c=Z(t["data-size"])==="large",l=o("a",{className:"btn",href:t.href,rel:"noopener",target:"_blank",title:t.title||void 0,"aria-label":t["aria-label"]||void 0,innerHTML:oe(t["data-icon"],c?16:14)+" "},[o("span",{},[t["data-text"]||""])]),s=e.appendChild(o("div",{className:"widget"+(c?" widget-lg":"")},[l])),d=l.hostname.replace(/\.$/,"");if(("."+d).substring(d.length-u.length)!=="."+u){l.removeAttribute("href"),r(s);return}var i=(" /"+l.pathname).split(/\/+/);if(((d===u||d==="gist."+u)&&i[3]==="archive"||d===u&&i[3]==="releases"&&(i[4]==="download"||i[4]==="latest"&&i[5]==="download")||d==="codeload."+u)&&(l.target="_top"),Z(t["data-show-count"])!=="true"||d!==u||i[1]==="marketplace"||i[1]==="sponsors"||i[1]==="orgs"||i[1]==="users"||i[1]==="-"){r(s);return}var v,h;if(!i[2]&&i[1])h="followers",v="?tab=followers";else if(!i[3]&&i[2])h="stargazers_count",v="/stargazers";else if(!i[4]&&i[3]==="subscription")h="subscribers_count",v="/watchers";else if(!i[4]&&i[3]==="fork")h="forks_count",v="/forks";else if(i[3]==="issues")h="open_issues_count",v="/issues";else{r(s);return}var D=i[2]?"/repos/"+i[1]+"/"+i[2]:"/users/"+i[1];re.call(this,P+D,function(B,L){if(!B){var w=L[h];s.appendChild(o("a",{className:"social-count",href:L.html_url+v,rel:"noopener",target:"_blank","aria-label":w+" "+h.replace(/_count$/,"").replace("_"," ").slice(0,w<2?-1:void 0)+" on GitHub"},[(""+w).replace(/\B(?=(\d{3})+(?!\d))/g,",")]))}r(s)})},M=window.devicePixelRatio||1,z=function(e){return(M>1?p.ceil(p.round(e*M)/M*2)/2:p.ceil(e))||0},ae=function(e){var t=e.offsetWidth,r=e.offsetHeight;if(e.getBoundingClientRect){var o=e.getBoundingClientRect();t=p.max(t,z(o.width)),r=p.max(r,z(o.height))}return[t,r]},S=function(e,t){e.style.width=t[0]+"px",e.style.height=t[1]+"px"},ne=function(e,t){if(!(e==null||t==null))if(e.getAttribute&&(e=q(e)),R){var r=_("span");T(r.attachShadow({mode:"closed"}),e,function(){t(r)})}else{var o=_("iframe",{src:"javascript:0",title:e.title||void 0,allowtransparency:!0,scrolling:"no",frameBorder:0});S(o,[0,0]),o.style.border="none",o.style.colorScheme="light";var a=function(){var n=o.contentWindow,c;try{c=n.document.body}catch{C.body.appendChild(o.parentNode.removeChild(o));return}E(o,"load",a),T.call(n,c,e,function(l){var s=ae(l);o.parentNode.removeChild(o),I(o,"load",function(){S(o,s)}),o.src=N+"#"+(o.name=W(e)),t(o)})};f(o,"load",a),C.body.appendChild(o)}};export{ne as render}; diff --git a/assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js b/assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js new file mode 100644 index 00000000..3d87d6d1 --- /dev/null +++ b/assets/chunks/c4Diagram-6F5ED5ID.CnOvngd3.js @@ -0,0 +1,10 @@ +import{d as Se,g as De}from"./chunk-ASOPGD6M.DXiLsIdP.js";import{_ as g,a as Pe,s as Be,g as Ie,b as Me,c as Le,d as Bt,w as Ne,e as $t,f as de,h as Tt,i as ge,j as jt,l as fe,k as Ye,m as je}from"../app.BCWCbnje.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var Ft=function(){var e=g(function(_t,x,m,v){for(m=m||{},v=_t.length;v--;m[_t[v]]=x);return m},"o"),t=[1,24],s=[1,25],o=[1,26],l=[1,27],a=[1,28],r=[1,63],n=[1,64],i=[1,65],u=[1,66],d=[1,67],f=[1,68],y=[1,69],E=[1,29],O=[1,30],S=[1,31],P=[1,32],M=[1,33],U=[1,34],H=[1,35],q=[1,36],G=[1,37],K=[1,38],J=[1,39],Z=[1,40],$=[1,41],tt=[1,42],et=[1,43],at=[1,44],it=[1,45],nt=[1,46],rt=[1,47],st=[1,48],lt=[1,50],ot=[1,51],ct=[1,52],ht=[1,53],ut=[1,54],dt=[1,55],ft=[1,56],pt=[1,57],yt=[1,58],gt=[1,59],bt=[1,60],Ct=[14,42],Qt=[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],St=[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],k=[1,82],A=[1,83],C=[1,84],w=[1,85],T=[12,14,42],le=[12,14,33,42],Mt=[12,14,33,42,76,77,79,80],vt=[12,33],Ht=[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],qt={trace:g(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:g(function(x,m,v,b,R,h,Dt){var p=h.length-1;switch(R){case 3:b.setDirection("TB");break;case 4:b.setDirection("BT");break;case 5:b.setDirection("RL");break;case 6:b.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:b.setC4Type(h[p-3]);break;case 19:b.setTitle(h[p].substring(6)),this.$=h[p].substring(6);break;case 20:b.setAccDescription(h[p].substring(15)),this.$=h[p].substring(15);break;case 21:this.$=h[p].trim(),b.setTitle(this.$);break;case 22:case 23:this.$=h[p].trim(),b.setAccDescription(this.$);break;case 28:h[p].splice(2,0,"ENTERPRISE"),b.addPersonOrSystemBoundary(...h[p]),this.$=h[p];break;case 29:h[p].splice(2,0,"SYSTEM"),b.addPersonOrSystemBoundary(...h[p]),this.$=h[p];break;case 30:b.addPersonOrSystemBoundary(...h[p]),this.$=h[p];break;case 31:h[p].splice(2,0,"CONTAINER"),b.addContainerBoundary(...h[p]),this.$=h[p];break;case 32:b.addDeploymentNode("node",...h[p]),this.$=h[p];break;case 33:b.addDeploymentNode("nodeL",...h[p]),this.$=h[p];break;case 34:b.addDeploymentNode("nodeR",...h[p]),this.$=h[p];break;case 35:b.popBoundaryParseStack();break;case 39:b.addPersonOrSystem("person",...h[p]),this.$=h[p];break;case 40:b.addPersonOrSystem("external_person",...h[p]),this.$=h[p];break;case 41:b.addPersonOrSystem("system",...h[p]),this.$=h[p];break;case 42:b.addPersonOrSystem("system_db",...h[p]),this.$=h[p];break;case 43:b.addPersonOrSystem("system_queue",...h[p]),this.$=h[p];break;case 44:b.addPersonOrSystem("external_system",...h[p]),this.$=h[p];break;case 45:b.addPersonOrSystem("external_system_db",...h[p]),this.$=h[p];break;case 46:b.addPersonOrSystem("external_system_queue",...h[p]),this.$=h[p];break;case 47:b.addContainer("container",...h[p]),this.$=h[p];break;case 48:b.addContainer("container_db",...h[p]),this.$=h[p];break;case 49:b.addContainer("container_queue",...h[p]),this.$=h[p];break;case 50:b.addContainer("external_container",...h[p]),this.$=h[p];break;case 51:b.addContainer("external_container_db",...h[p]),this.$=h[p];break;case 52:b.addContainer("external_container_queue",...h[p]),this.$=h[p];break;case 53:b.addComponent("component",...h[p]),this.$=h[p];break;case 54:b.addComponent("component_db",...h[p]),this.$=h[p];break;case 55:b.addComponent("component_queue",...h[p]),this.$=h[p];break;case 56:b.addComponent("external_component",...h[p]),this.$=h[p];break;case 57:b.addComponent("external_component_db",...h[p]),this.$=h[p];break;case 58:b.addComponent("external_component_queue",...h[p]),this.$=h[p];break;case 60:b.addRel("rel",...h[p]),this.$=h[p];break;case 61:b.addRel("birel",...h[p]),this.$=h[p];break;case 62:b.addRel("rel_u",...h[p]),this.$=h[p];break;case 63:b.addRel("rel_d",...h[p]),this.$=h[p];break;case 64:b.addRel("rel_l",...h[p]),this.$=h[p];break;case 65:b.addRel("rel_r",...h[p]),this.$=h[p];break;case 66:b.addRel("rel_b",...h[p]),this.$=h[p];break;case 67:h[p].splice(0,1),b.addRel("rel",...h[p]),this.$=h[p];break;case 68:b.updateElStyle("update_el_style",...h[p]),this.$=h[p];break;case 69:b.updateRelStyle("update_rel_style",...h[p]),this.$=h[p];break;case 70:b.updateLayoutConfig("update_layout_config",...h[p]),this.$=h[p];break;case 71:this.$=[h[p]];break;case 72:h[p].unshift(h[p-1]),this.$=h[p];break;case 73:case 75:this.$=h[p].trim();break;case 74:let Et={};Et[h[p-1].trim()]=h[p].trim(),this.$=Et;break;case 76:this.$="";break}},"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:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{13:70,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{13:71,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{13:72,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{13:73,19:20,20:21,21:22,22:t,23:s,24:o,26:l,28:a,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{14:[1,74]},e(Ct,[2,13],{43:23,29:49,30:61,32:62,20:75,34:r,36:n,37:i,38:u,39:d,40:f,41:y,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt}),e(Ct,[2,14]),e(Qt,[2,16],{12:[1,76]}),e(Ct,[2,36],{12:[1,77]}),e(St,[2,19]),e(St,[2,20]),{25:[1,78]},{27:[1,79]},e(St,[2,23]),{35:80,75:81,76:k,77:A,79:C,80:w},{35:86,75:81,76:k,77:A,79:C,80:w},{35:87,75:81,76:k,77:A,79:C,80:w},{35:88,75:81,76:k,77:A,79:C,80:w},{35:89,75:81,76:k,77:A,79:C,80:w},{35:90,75:81,76:k,77:A,79:C,80:w},{35:91,75:81,76:k,77:A,79:C,80:w},{35:92,75:81,76:k,77:A,79:C,80:w},{35:93,75:81,76:k,77:A,79:C,80:w},{35:94,75:81,76:k,77:A,79:C,80:w},{35:95,75:81,76:k,77:A,79:C,80:w},{35:96,75:81,76:k,77:A,79:C,80:w},{35:97,75:81,76:k,77:A,79:C,80:w},{35:98,75:81,76:k,77:A,79:C,80:w},{35:99,75:81,76:k,77:A,79:C,80:w},{35:100,75:81,76:k,77:A,79:C,80:w},{35:101,75:81,76:k,77:A,79:C,80:w},{35:102,75:81,76:k,77:A,79:C,80:w},{35:103,75:81,76:k,77:A,79:C,80:w},{35:104,75:81,76:k,77:A,79:C,80:w},e(T,[2,59]),{35:105,75:81,76:k,77:A,79:C,80:w},{35:106,75:81,76:k,77:A,79:C,80:w},{35:107,75:81,76:k,77:A,79:C,80:w},{35:108,75:81,76:k,77:A,79:C,80:w},{35:109,75:81,76:k,77:A,79:C,80:w},{35:110,75:81,76:k,77:A,79:C,80:w},{35:111,75:81,76:k,77:A,79:C,80:w},{35:112,75:81,76:k,77:A,79:C,80:w},{35:113,75:81,76:k,77:A,79:C,80:w},{35:114,75:81,76:k,77:A,79:C,80:w},{35:115,75:81,76:k,77:A,79:C,80:w},{20:116,29:49,30:61,32:62,34:r,36:n,37:i,38:u,39:d,40:f,41:y,43:23,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt},{12:[1,118],33:[1,117]},{35:119,75:81,76:k,77:A,79:C,80:w},{35:120,75:81,76:k,77:A,79:C,80:w},{35:121,75:81,76:k,77:A,79:C,80:w},{35:122,75:81,76:k,77:A,79:C,80:w},{35:123,75:81,76:k,77:A,79:C,80:w},{35:124,75:81,76:k,77:A,79:C,80:w},{35:125,75:81,76:k,77:A,79:C,80:w},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},e(Ct,[2,15]),e(Qt,[2,17],{21:22,19:130,22:t,23:s,24:o,26:l,28:a}),e(Ct,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:t,23:s,24:o,26:l,28:a,34:r,36:n,37:i,38:u,39:d,40:f,41:y,44:E,45:O,46:S,47:P,48:M,49:U,50:H,51:q,52:G,53:K,54:J,55:Z,56:$,57:tt,58:et,59:at,60:it,61:nt,62:rt,63:st,64:lt,65:ot,66:ct,67:ht,68:ut,69:dt,70:ft,71:pt,72:yt,73:gt,74:bt}),e(St,[2,21]),e(St,[2,22]),e(T,[2,39]),e(le,[2,71],{75:81,35:132,76:k,77:A,79:C,80:w}),e(Mt,[2,73]),{78:[1,133]},e(Mt,[2,75]),e(Mt,[2,76]),e(T,[2,40]),e(T,[2,41]),e(T,[2,42]),e(T,[2,43]),e(T,[2,44]),e(T,[2,45]),e(T,[2,46]),e(T,[2,47]),e(T,[2,48]),e(T,[2,49]),e(T,[2,50]),e(T,[2,51]),e(T,[2,52]),e(T,[2,53]),e(T,[2,54]),e(T,[2,55]),e(T,[2,56]),e(T,[2,57]),e(T,[2,58]),e(T,[2,60]),e(T,[2,61]),e(T,[2,62]),e(T,[2,63]),e(T,[2,64]),e(T,[2,65]),e(T,[2,66]),e(T,[2,67]),e(T,[2,68]),e(T,[2,69]),e(T,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},e(vt,[2,28]),e(vt,[2,29]),e(vt,[2,30]),e(vt,[2,31]),e(vt,[2,32]),e(vt,[2,33]),e(vt,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},e(Qt,[2,18]),e(Ct,[2,38]),e(le,[2,72]),e(Mt,[2,74]),e(T,[2,24]),e(T,[2,35]),e(Ht,[2,25]),e(Ht,[2,26],{12:[1,138]}),e(Ht,[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:g(function(x,m){if(m.recoverable)this.trace(x);else{var v=new Error(x);throw v.hash=m,v}},"parseError"),parse:g(function(x){var m=this,v=[0],b=[],R=[null],h=[],Dt=this.table,p="",Et=0,oe=0,we=2,ce=1,Te=h.slice.call(arguments,1),D=Object.create(this.lexer),kt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(kt.yy[Gt]=this.yy[Gt]);D.setInput(x,kt.yy),kt.yy.lexer=D,kt.yy.parser=this,typeof D.yylloc>"u"&&(D.yylloc={});var Kt=D.yylloc;h.push(Kt);var Oe=D.options&&D.options.ranges;typeof kt.yy.parseError=="function"?this.parseError=kt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Re(L){v.length=v.length-2*L,R.length=R.length-L,h.length=h.length-L}g(Re,"popStack");function he(){var L;return L=b.pop()||D.lex()||ce,typeof L!="number"&&(L instanceof Array&&(b=L,L=b.pop()),L=m.symbols_[L]||L),L}g(he,"lex");for(var I,At,N,Jt,wt={},Nt,W,ue,Yt;;){if(At=v[v.length-1],this.defaultActions[At]?N=this.defaultActions[At]:((I===null||typeof I>"u")&&(I=he()),N=Dt[At]&&Dt[At][I]),typeof N>"u"||!N.length||!N[0]){var Zt="";Yt=[];for(Nt in Dt[At])this.terminals_[Nt]&&Nt>we&&Yt.push("'"+this.terminals_[Nt]+"'");D.showPosition?Zt="Parse error on line "+(Et+1)+`: +`+D.showPosition()+` +Expecting `+Yt.join(", ")+", got '"+(this.terminals_[I]||I)+"'":Zt="Parse error on line "+(Et+1)+": Unexpected "+(I==ce?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(Zt,{text:D.match,token:this.terminals_[I]||I,line:D.yylineno,loc:Kt,expected:Yt})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+At+", token: "+I);switch(N[0]){case 1:v.push(I),R.push(D.yytext),h.push(D.yylloc),v.push(N[1]),I=null,oe=D.yyleng,p=D.yytext,Et=D.yylineno,Kt=D.yylloc;break;case 2:if(W=this.productions_[N[1]][1],wt.$=R[R.length-W],wt._$={first_line:h[h.length-(W||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(W||1)].first_column,last_column:h[h.length-1].last_column},Oe&&(wt._$.range=[h[h.length-(W||1)].range[0],h[h.length-1].range[1]]),Jt=this.performAction.apply(wt,[p,oe,Et,kt.yy,N[1],R,h].concat(Te)),typeof Jt<"u")return Jt;W&&(v=v.slice(0,-1*W*2),R=R.slice(0,-1*W),h=h.slice(0,-1*W)),v.push(this.productions_[N[1]][0]),R.push(wt.$),h.push(wt._$),ue=Dt[v[v.length-2]][v[v.length-1]],v.push(ue);break;case 3:return!0}}return!0},"parse")},Ce=function(){var _t={EOF:1,parseError:g(function(m,v){if(this.yy.parser)this.yy.parser.parseError(m,v);else throw new Error(m)},"parseError"),setInput:g(function(x,m){return this.yy=m||this.yy||{},this._input=x,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:g(function(){var x=this._input[0];this.yytext+=x,this.yyleng++,this.offset++,this.match+=x,this.matched+=x;var m=x.match(/(?:\r\n?|\n).*/g);return m?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),x},"input"),unput:g(function(x){var m=x.length,v=x.split(/(?:\r\n?|\n)/g);this._input=x+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-m),this.offset-=m;var b=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),v.length-1&&(this.yylineno-=v.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:v?(v.length===b.length?this.yylloc.first_column:0)+b[b.length-v.length].length-v[0].length:this.yylloc.first_column-m},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-m]),this.yyleng=this.yytext.length,this},"unput"),more:g(function(){return this._more=!0,this},"more"),reject:g(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:g(function(x){this.unput(this.match.slice(x))},"less"),pastInput:g(function(){var x=this.matched.substr(0,this.matched.length-this.match.length);return(x.length>20?"...":"")+x.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:g(function(){var x=this.match;return x.length<20&&(x+=this._input.substr(0,20-x.length)),(x.substr(0,20)+(x.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:g(function(){var x=this.pastInput(),m=new Array(x.length+1).join("-");return x+this.upcomingInput()+` +`+m+"^"},"showPosition"),test_match:g(function(x,m){var v,b,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))),b=x[0].match(/(?:\r\n?|\n).*/g),b&&(this.yylineno+=b.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:b?b[b.length-1].length-b[b.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+x[0].length},this.yytext+=x[0],this.match+=x[0],this.matches=x,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(x[0].length),this.matched+=x[0],v=this.performAction.call(this,this.yy,this,m,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),v)return v;if(this._backtrack){for(var h in R)this[h]=R[h];return!1}return!1},"test_match"),next:g(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var x,m,v,b;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),h=0;hm[0].length)){if(m=v,b=h,this.options.backtrack_lexer){if(x=this.test_match(v,R[h]),x!==!1)return x;if(this._backtrack){m=!1;continue}else return!1}else if(!this.options.flex)break}return m?(x=this.test_match(m,R[b]),x!==!1?x:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:g(function(){var m=this.next();return m||this.lex()},"lex"),begin:g(function(m){this.conditionStack.push(m)},"begin"),popState:g(function(){var m=this.conditionStack.length-1;return m>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:g(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:g(function(m){return m=this.conditionStack.length-1-Math.abs(m||0),m>=0?this.conditionStack[m]:"INITIAL"},"topState"),pushState:g(function(m){this.begin(m)},"pushState"),stateStackSize:g(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:g(function(m,v,b,R){switch(b){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:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;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:return this.begin("node"),39;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:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;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:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74: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 79:this.popState(),this.popState();break;case 80:return"STR";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}}};return _t}();qt.lexer=Ce;function Lt(){this.yy={}}return g(Lt,"Parser"),Lt.prototype=qt,qt.Parser=Lt,new Lt}();Ft.parser=Ft;var Ue=Ft,V=[],xt=[""],B="global",F="",X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],It=[],ie="",ne=!1,Vt=4,zt=2,be,Fe=g(function(){return be},"getC4Type"),Ve=g(function(e){be=ge(e,Bt())},"setC4Type"),ze=g(function(e,t,s,o,l,a,r,n,i){if(e==null||t===void 0||t===null||s===void 0||s===null||o===void 0||o===null)return;let u={};const d=It.find(f=>f.from===t&&f.to===s);if(d?u=d:It.push(u),u.type=e,u.from=t,u.to=s,u.label={text:o},l==null)u.techn={text:""};else if(typeof l=="object"){let[f,y]=Object.entries(l)[0];u[f]={text:y}}else u.techn={text:l};if(a==null)u.descr={text:""};else if(typeof a=="object"){let[f,y]=Object.entries(a)[0];u[f]={text:y}}else u.descr={text:a};if(typeof r=="object"){let[f,y]=Object.entries(r)[0];u[f]=y}else u.sprite=r;if(typeof n=="object"){let[f,y]=Object.entries(n)[0];u[f]=y}else u.tags=n;if(typeof i=="object"){let[f,y]=Object.entries(i)[0];u[f]=y}else u.link=i;u.wrap=mt()},"addRel"),Xe=g(function(e,t,s,o,l,a,r){if(t===null||s===null)return;let n={};const i=V.find(u=>u.alias===t);if(i&&t===i.alias?n=i:(n.alias=t,V.push(n)),s==null?n.label={text:""}:n.label={text:s},o==null)n.descr={text:""};else if(typeof o=="object"){let[u,d]=Object.entries(o)[0];n[u]={text:d}}else n.descr={text:o};if(typeof l=="object"){let[u,d]=Object.entries(l)[0];n[u]=d}else n.sprite=l;if(typeof a=="object"){let[u,d]=Object.entries(a)[0];n[u]=d}else n.tags=a;if(typeof r=="object"){let[u,d]=Object.entries(r)[0];n[u]=d}else n.link=r;n.typeC4Shape={text:e},n.parentBoundary=B,n.wrap=mt()},"addPersonOrSystem"),We=g(function(e,t,s,o,l,a,r,n){if(t===null||s===null)return;let i={};const u=V.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,V.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,f]=Object.entries(o)[0];i[d]={text:f}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,f]=Object.entries(l)[0];i[d]={text:f}}else i.descr={text:l};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];i[d]=f}else i.sprite=a;if(typeof r=="object"){let[d,f]=Object.entries(r)[0];i[d]=f}else i.tags=r;if(typeof n=="object"){let[d,f]=Object.entries(n)[0];i[d]=f}else i.link=n;i.wrap=mt(),i.typeC4Shape={text:e},i.parentBoundary=B},"addContainer"),Qe=g(function(e,t,s,o,l,a,r,n){if(t===null||s===null)return;let i={};const u=V.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,V.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.techn={text:""};else if(typeof o=="object"){let[d,f]=Object.entries(o)[0];i[d]={text:f}}else i.techn={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,f]=Object.entries(l)[0];i[d]={text:f}}else i.descr={text:l};if(typeof a=="object"){let[d,f]=Object.entries(a)[0];i[d]=f}else i.sprite=a;if(typeof r=="object"){let[d,f]=Object.entries(r)[0];i[d]=f}else i.tags=r;if(typeof n=="object"){let[d,f]=Object.entries(n)[0];i[d]=f}else i.link=n;i.wrap=mt(),i.typeC4Shape={text:e},i.parentBoundary=B},"addComponent"),He=g(function(e,t,s,o,l){if(e===null||t===null)return;let a={};const r=X.find(n=>n.alias===e);if(r&&e===r.alias?a=r:(a.alias=e,X.push(a)),t==null?a.label={text:""}:a.label={text:t},s==null)a.type={text:"system"};else if(typeof s=="object"){let[n,i]=Object.entries(s)[0];a[n]={text:i}}else a.type={text:s};if(typeof o=="object"){let[n,i]=Object.entries(o)[0];a[n]=i}else a.tags=o;if(typeof l=="object"){let[n,i]=Object.entries(l)[0];a[n]=i}else a.link=l;a.parentBoundary=B,a.wrap=mt(),F=B,B=e,xt.push(F)},"addPersonOrSystemBoundary"),qe=g(function(e,t,s,o,l){if(e===null||t===null)return;let a={};const r=X.find(n=>n.alias===e);if(r&&e===r.alias?a=r:(a.alias=e,X.push(a)),t==null?a.label={text:""}:a.label={text:t},s==null)a.type={text:"container"};else if(typeof s=="object"){let[n,i]=Object.entries(s)[0];a[n]={text:i}}else a.type={text:s};if(typeof o=="object"){let[n,i]=Object.entries(o)[0];a[n]=i}else a.tags=o;if(typeof l=="object"){let[n,i]=Object.entries(l)[0];a[n]=i}else a.link=l;a.parentBoundary=B,a.wrap=mt(),F=B,B=e,xt.push(F)},"addContainerBoundary"),Ge=g(function(e,t,s,o,l,a,r,n){if(t===null||s===null)return;let i={};const u=X.find(d=>d.alias===t);if(u&&t===u.alias?i=u:(i.alias=t,X.push(i)),s==null?i.label={text:""}:i.label={text:s},o==null)i.type={text:"node"};else if(typeof o=="object"){let[d,f]=Object.entries(o)[0];i[d]={text:f}}else i.type={text:o};if(l==null)i.descr={text:""};else if(typeof l=="object"){let[d,f]=Object.entries(l)[0];i[d]={text:f}}else i.descr={text:l};if(typeof r=="object"){let[d,f]=Object.entries(r)[0];i[d]=f}else i.tags=r;if(typeof n=="object"){let[d,f]=Object.entries(n)[0];i[d]=f}else i.link=n;i.nodeType=e,i.parentBoundary=B,i.wrap=mt(),F=B,B=t,xt.push(F)},"addDeploymentNode"),Ke=g(function(){B=F,xt.pop(),F=xt.pop(),xt.push(F)},"popBoundaryParseStack"),Je=g(function(e,t,s,o,l,a,r,n,i,u,d){let f=V.find(y=>y.alias===t);if(!(f===void 0&&(f=X.find(y=>y.alias===t),f===void 0))){if(s!=null)if(typeof s=="object"){let[y,E]=Object.entries(s)[0];f[y]=E}else f.bgColor=s;if(o!=null)if(typeof o=="object"){let[y,E]=Object.entries(o)[0];f[y]=E}else f.fontColor=o;if(l!=null)if(typeof l=="object"){let[y,E]=Object.entries(l)[0];f[y]=E}else f.borderColor=l;if(a!=null)if(typeof a=="object"){let[y,E]=Object.entries(a)[0];f[y]=E}else f.shadowing=a;if(r!=null)if(typeof r=="object"){let[y,E]=Object.entries(r)[0];f[y]=E}else f.shape=r;if(n!=null)if(typeof n=="object"){let[y,E]=Object.entries(n)[0];f[y]=E}else f.sprite=n;if(i!=null)if(typeof i=="object"){let[y,E]=Object.entries(i)[0];f[y]=E}else f.techn=i;if(u!=null)if(typeof u=="object"){let[y,E]=Object.entries(u)[0];f[y]=E}else f.legendText=u;if(d!=null)if(typeof d=="object"){let[y,E]=Object.entries(d)[0];f[y]=E}else f.legendSprite=d}},"updateElStyle"),Ze=g(function(e,t,s,o,l,a,r){const n=It.find(i=>i.from===t&&i.to===s);if(n!==void 0){if(o!=null)if(typeof o=="object"){let[i,u]=Object.entries(o)[0];n[i]=u}else n.textColor=o;if(l!=null)if(typeof l=="object"){let[i,u]=Object.entries(l)[0];n[i]=u}else n.lineColor=l;if(a!=null)if(typeof a=="object"){let[i,u]=Object.entries(a)[0];n[i]=parseInt(u)}else n.offsetX=parseInt(a);if(r!=null)if(typeof r=="object"){let[i,u]=Object.entries(r)[0];n[i]=parseInt(u)}else n.offsetY=parseInt(r)}},"updateRelStyle"),$e=g(function(e,t,s){let o=Vt,l=zt;if(typeof t=="object"){const a=Object.values(t)[0];o=parseInt(a)}else o=parseInt(t);if(typeof s=="object"){const a=Object.values(s)[0];l=parseInt(a)}else l=parseInt(s);o>=1&&(Vt=o),l>=1&&(zt=l)},"updateLayoutConfig"),t0=g(function(){return Vt},"getC4ShapeInRow"),e0=g(function(){return zt},"getC4BoundaryInRow"),a0=g(function(){return B},"getCurrentBoundaryParse"),i0=g(function(){return F},"getParentBoundaryParse"),_e=g(function(e){return e==null?V:V.filter(t=>t.parentBoundary===e)},"getC4ShapeArray"),n0=g(function(e){return V.find(t=>t.alias===e)},"getC4Shape"),r0=g(function(e){return Object.keys(_e(e))},"getC4ShapeKeys"),xe=g(function(e){return e==null?X:X.filter(t=>t.parentBoundary===e)},"getBoundaries"),s0=xe,l0=g(function(){return It},"getRels"),o0=g(function(){return ie},"getTitle"),c0=g(function(e){ne=e},"setWrap"),mt=g(function(){return ne},"autoWrap"),h0=g(function(){V=[],X=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],F="",B="global",xt=[""],It=[],xt=[""],ie="",ne=!1,Vt=4,zt=2},"clear"),u0={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},d0={FILLED:0,OPEN:1},f0={LEFTOF:0,RIGHTOF:1,OVER:2},p0=g(function(e){ie=ge(e,Bt())},"setTitle"),te={addPersonOrSystem:Xe,addPersonOrSystemBoundary:He,addContainer:We,addContainerBoundary:qe,addComponent:Qe,addDeploymentNode:Ge,popBoundaryParseStack:Ke,addRel:ze,updateElStyle:Je,updateRelStyle:Ze,updateLayoutConfig:$e,autoWrap:mt,setWrap:c0,getC4ShapeArray:_e,getC4Shape:n0,getC4ShapeKeys:r0,getBoundaries:xe,getBoundarys:s0,getCurrentBoundaryParse:a0,getParentBoundaryParse:i0,getRels:l0,getTitle:o0,getC4Type:Fe,getC4ShapeInRow:t0,getC4BoundaryInRow:e0,setAccTitle:Be,getAccTitle:Ie,getAccDescription:Me,setAccDescription:Le,getConfig:g(()=>Bt().c4,"getConfig"),clear:h0,LINETYPE:u0,ARROWTYPE:d0,PLACEMENT:f0,setTitle:p0,setC4Type:Ve},re=g(function(e,t){return Se(e,t)},"drawRect"),me=g(function(e,t,s,o,l,a){const r=e.append("image");r.attr("width",t),r.attr("height",s),r.attr("x",o),r.attr("y",l);let n=a.startsWith("data:image/png;base64")?a:je(a);r.attr("xlink:href",n)},"drawImage"),y0=g((e,t,s)=>{const o=e.append("g");let l=0;for(let a of t){let r=a.textColor?a.textColor:"#444444",n=a.lineColor?a.lineColor:"#444444",i=a.offsetX?parseInt(a.offsetX):0,u=a.offsetY?parseInt(a.offsetY):0,d="";if(l===0){let y=o.append("line");y.attr("x1",a.startPoint.x),y.attr("y1",a.startPoint.y),y.attr("x2",a.endPoint.x),y.attr("y2",a.endPoint.y),y.attr("stroke-width","1"),y.attr("stroke",n),y.style("fill","none"),a.type!=="rel_b"&&y.attr("marker-end","url("+d+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&y.attr("marker-start","url("+d+"#arrowend)"),l=-1}else{let y=o.append("path");y.attr("fill","none").attr("stroke-width","1").attr("stroke",n).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&y.attr("marker-end","url("+d+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&y.attr("marker-start","url("+d+"#arrowend)")}let f=s.messageFont();Q(s)(a.label.text,o,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+i,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+u,a.label.width,a.label.height,{fill:r},f),a.techn&&a.techn.text!==""&&(f=s.messageFont(),Q(s)("["+a.techn.text+"]",o,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+i,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+s.messageFontSize+5+u,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:r,"font-style":"italic"},f))}},"drawRels"),g0=g(function(e,t,s){const o=e.append("g");let l=t.bgColor?t.bgColor:"none",a=t.borderColor?t.borderColor:"#444444",r=t.fontColor?t.fontColor:"black",n={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};t.nodeType&&(n={"stroke-width":1});let i={x:t.x,y:t.y,fill:l,stroke:a,width:t.width,height:t.height,rx:2.5,ry:2.5,attrs:n};re(o,i);let u=s.boundaryFont();u.fontWeight="bold",u.fontSize=u.fontSize+2,u.fontColor=r,Q(s)(t.label.text,o,t.x,t.y+t.label.Y,t.width,t.height,{fill:"#444444"},u),t.type&&t.type.text!==""&&(u=s.boundaryFont(),u.fontColor=r,Q(s)(t.type.text,o,t.x,t.y+t.type.Y,t.width,t.height,{fill:"#444444"},u)),t.descr&&t.descr.text!==""&&(u=s.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=r,Q(s)(t.descr.text,o,t.x,t.y+t.descr.Y,t.width,t.height,{fill:"#444444"},u))},"drawBoundary"),b0=g(function(e,t,s){var f;let o=t.bgColor?t.bgColor:s[t.typeC4Shape.text+"_bg_color"],l=t.borderColor?t.borderColor:s[t.typeC4Shape.text+"_border_color"],a=t.fontColor?t.fontColor:"#FFFFFF",r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(t.typeC4Shape.text){case"person":r="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":r="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const n=e.append("g");n.attr("class","person-man");const i=De();switch(t.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":i.x=t.x,i.y=t.y,i.fill=o,i.width=t.width,i.height=t.height,i.stroke=l,i.rx=2.5,i.ry=2.5,i.attrs={"stroke-width":.5},re(n,i);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":n.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).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",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2).replaceAll("height",t.height)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",t.x).replaceAll("starty",t.y).replaceAll("half",t.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":n.append("path").attr("fill",o).attr("stroke-width","0.5").attr("stroke",l).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",t.x).replaceAll("starty",t.y).replaceAll("width",t.width).replaceAll("half",t.height/2)),n.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",l).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",t.x+t.width).replaceAll("starty",t.y).replaceAll("half",t.height/2));break}let u=w0(s,t.typeC4Shape.text);switch(n.append("text").attr("fill",a).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",t.typeC4Shape.width).attr("x",t.x+t.width/2-t.typeC4Shape.width/2).attr("y",t.y+t.typeC4Shape.Y).text("<<"+t.typeC4Shape.text+">>"),t.typeC4Shape.text){case"person":case"external_person":me(n,48,48,t.x+t.width/2-24,t.y+t.image.Y,r);break}let d=s[t.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=a,Q(s)(t.label.text,n,t.x,t.y+t.label.Y,t.width,t.height,{fill:a},d),d=s[t.typeC4Shape.text+"Font"](),d.fontColor=a,t.techn&&((f=t.techn)==null?void 0:f.text)!==""?Q(s)(t.techn.text,n,t.x,t.y+t.techn.Y,t.width,t.height,{fill:a,"font-style":"italic"},d):t.type&&t.type.text!==""&&Q(s)(t.type.text,n,t.x,t.y+t.type.Y,t.width,t.height,{fill:a,"font-style":"italic"},d),t.descr&&t.descr.text!==""&&(d=s.personFont(),d.fontColor=a,Q(s)(t.descr.text,n,t.x,t.y+t.descr.Y,t.width,t.height,{fill:a},d)),t.height},"drawC4Shape"),_0=g(function(e){e.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"),x0=g(function(e){e.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"),m0=g(function(e){e.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"),v0=g(function(e){e.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"),E0=g(function(e){e.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"),k0=g(function(e){e.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"),A0=g(function(e){e.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"),C0=g(function(e){const s=e.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);s.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"),s.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"),w0=g((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"getC4ShapeFont"),Q=function(){function e(l,a,r,n,i,u,d){const f=a.append("text").attr("x",r+i/2).attr("y",n+u/2+5).style("text-anchor","middle").text(l);o(f,d)}g(e,"byText");function t(l,a,r,n,i,u,d,f){const{fontSize:y,fontFamily:E,fontWeight:O}=f,S=l.split($t.lineBreakRegex);for(let P=0;P=this.data.widthLimit||o>=this.data.widthLimit||this.nextData.cnt>ve)&&(s=this.nextData.startx+t.margin+_.nextLinePaddingX,l=this.nextData.stopy+t.margin*2,this.nextData.stopx=o=s+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=l+t.height,this.nextData.cnt=1),t.x=s,t.y=l,this.updateVal(this.data,"startx",s,Math.min),this.updateVal(this.data,"starty",l,Math.min),this.updateVal(this.data,"stopx",o,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",s,Math.min),this.updateVal(this.nextData,"starty",l,Math.min),this.updateVal(this.nextData,"stopx",o,Math.max),this.updateVal(this.nextData,"stopy",a,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},ae(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},g(Ot,"Bounds"),Ot),ae=g(function(e){Pe(_,e),e.fontFamily&&(_.personFontFamily=_.systemFontFamily=_.messageFontFamily=e.fontFamily),e.fontSize&&(_.personFontSize=_.systemFontSize=_.messageFontSize=e.fontSize),e.fontWeight&&(_.personFontWeight=_.systemFontWeight=_.messageFontWeight=e.fontWeight)},"setConf"),Pt=g((e,t)=>({fontFamily:e[t+"FontFamily"],fontSize:e[t+"FontSize"],fontWeight:e[t+"FontWeight"]}),"c4ShapeFont"),Ut=g(e=>({fontFamily:e.boundaryFontFamily,fontSize:e.boundaryFontSize,fontWeight:e.boundaryFontWeight}),"boundaryFont"),T0=g(e=>({fontFamily:e.messageFontFamily,fontSize:e.messageFontSize,fontWeight:e.messageFontWeight}),"messageFont");function j(e,t,s,o,l){if(!t[e].width)if(s)t[e].text=Ne(t[e].text,l,o),t[e].textLines=t[e].text.split($t.lineBreakRegex).length,t[e].width=l,t[e].height=de(t[e].text,o);else{let a=t[e].text.split($t.lineBreakRegex);t[e].textLines=a.length;let r=0;t[e].height=0,t[e].width=0;for(const n of a)t[e].width=Math.max(Tt(n,o),t[e].width),r=de(n,o),t[e].height=t[e].height+r}}g(j,"calcC4ShapeTextWH");var ke=g(function(e,t,s){t.x=s.data.startx,t.y=s.data.starty,t.width=s.data.stopx-s.data.startx,t.height=s.data.stopy-s.data.starty,t.label.y=_.c4ShapeMargin-35;let o=t.wrap&&_.wrap,l=Ut(_);l.fontSize=l.fontSize+2,l.fontWeight="bold";let a=Tt(t.label.text,l);j("label",t,o,l,a),z.drawBoundary(e,t,_)},"drawBoundary"),Ae=g(function(e,t,s,o){let l=0;for(const a of o){l=0;const r=s[a];let n=Pt(_,r.typeC4Shape.text);switch(n.fontSize=n.fontSize-2,r.typeC4Shape.width=Tt("«"+r.typeC4Shape.text+"»",n),r.typeC4Shape.height=n.fontSize+2,r.typeC4Shape.Y=_.c4ShapePadding,l=r.typeC4Shape.Y+r.typeC4Shape.height-4,r.image={width:0,height:0,Y:0},r.typeC4Shape.text){case"person":case"external_person":r.image.width=48,r.image.height=48,r.image.Y=l,l=r.image.Y+r.image.height;break}r.sprite&&(r.image.width=48,r.image.height=48,r.image.Y=l,l=r.image.Y+r.image.height);let i=r.wrap&&_.wrap,u=_.width-_.c4ShapePadding*2,d=Pt(_,r.typeC4Shape.text);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",j("label",r,i,d,u),r.label.Y=l+8,l=r.label.Y+r.label.height,r.type&&r.type.text!==""){r.type.text="["+r.type.text+"]";let E=Pt(_,r.typeC4Shape.text);j("type",r,i,E,u),r.type.Y=l+5,l=r.type.Y+r.type.height}else if(r.techn&&r.techn.text!==""){r.techn.text="["+r.techn.text+"]";let E=Pt(_,r.techn.text);j("techn",r,i,E,u),r.techn.Y=l+5,l=r.techn.Y+r.techn.height}let f=l,y=r.label.width;if(r.descr&&r.descr.text!==""){let E=Pt(_,r.typeC4Shape.text);j("descr",r,i,E,u),r.descr.Y=l+20,l=r.descr.Y+r.descr.height,y=Math.max(r.label.width,r.descr.width),f=l-r.descr.textLines*5}y=y+_.c4ShapePadding,r.width=Math.max(r.width||_.width,y,_.width),r.height=Math.max(r.height||_.height,f,_.height),r.margin=r.margin||_.c4ShapeMargin,e.insert(r),z.drawC4Shape(t,r,_)}e.bumpLastMargin(_.c4ShapeMargin)},"drawC4ShapeArray"),Rt,Y=(Rt=class{constructor(t,s){this.x=t,this.y=s}},g(Rt,"Point"),Rt),pe=g(function(e,t){let s=e.x,o=e.y,l=t.x,a=t.y,r=s+e.width/2,n=o+e.height/2,i=Math.abs(s-l),u=Math.abs(o-a),d=u/i,f=e.height/e.width,y=null;return o==a&&sl?y=new Y(s,n):s==l&&oa&&(y=new Y(r,o)),s>l&&o=d?y=new Y(s,n+d*e.width/2):y=new Y(r-i/u*e.height/2,o+e.height):s=d?y=new Y(s+e.width,n+d*e.width/2):y=new Y(r+i/u*e.height/2,o+e.height):sa?f>=d?y=new Y(s+e.width,n-d*e.width/2):y=new Y(r+e.height/2*i/u,o):s>l&&o>a&&(f>=d?y=new Y(s,n-e.width/2*d):y=new Y(r-e.height/2*i/u,o)),y},"getIntersectPoint"),O0=g(function(e,t){let s={x:0,y:0};s.x=t.x+t.width/2,s.y=t.y+t.height/2;let o=pe(e,s);s.x=e.x+e.width/2,s.y=e.y+e.height/2;let l=pe(t,s);return{startPoint:o,endPoint:l}},"getIntersectPoints"),R0=g(function(e,t,s,o){let l=0;for(let a of t){l=l+1;let r=a.wrap&&_.wrap,n=T0(_);o.db.getC4Type()==="C4Dynamic"&&(a.label.text=l+": "+a.label.text);let u=Tt(a.label.text,n);j("label",a,r,n,u),a.techn&&a.techn.text!==""&&(u=Tt(a.techn.text,n),j("techn",a,r,n,u)),a.descr&&a.descr.text!==""&&(u=Tt(a.descr.text,n),j("descr",a,r,n,u));let d=s(a.from),f=s(a.to),y=O0(d,f);a.startPoint=y.startPoint,a.endPoint=y.endPoint}z.drawRels(e,t,_)},"drawRels");function se(e,t,s,o,l){let a=new Ee(l);a.data.widthLimit=s.data.widthLimit/Math.min(ee,o.length);for(let[r,n]of o.entries()){let i=0;n.image={width:0,height:0,Y:0},n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=i,i=n.image.Y+n.image.height);let u=n.wrap&&_.wrap,d=Ut(_);if(d.fontSize=d.fontSize+2,d.fontWeight="bold",j("label",n,u,d,a.data.widthLimit),n.label.Y=i+8,i=n.label.Y+n.label.height,n.type&&n.type.text!==""){n.type.text="["+n.type.text+"]";let O=Ut(_);j("type",n,u,O,a.data.widthLimit),n.type.Y=i+5,i=n.type.Y+n.type.height}if(n.descr&&n.descr.text!==""){let O=Ut(_);O.fontSize=O.fontSize-2,j("descr",n,u,O,a.data.widthLimit),n.descr.Y=i+20,i=n.descr.Y+n.descr.height}if(r==0||r%ee===0){let O=s.data.startx+_.diagramMarginX,S=s.data.stopy+_.diagramMarginY+i;a.setData(O,O,S,S)}else{let O=a.data.stopx!==a.data.startx?a.data.stopx+_.diagramMarginX:a.data.startx,S=a.data.starty;a.setData(O,O,S,S)}a.name=n.alias;let f=l.db.getC4ShapeArray(n.alias),y=l.db.getC4ShapeKeys(n.alias);y.length>0&&Ae(a,e,f,y),t=n.alias;let E=l.db.getBoundarys(t);E.length>0&&se(e,t,a,E,l),n.alias!=="global"&&ke(e,n,a),s.data.stopy=Math.max(a.data.stopy+_.c4ShapeMargin,s.data.stopy),s.data.stopx=Math.max(a.data.stopx+_.c4ShapeMargin,s.data.stopx),Xt=Math.max(Xt,s.data.stopx),Wt=Math.max(Wt,s.data.stopy)}}g(se,"drawInsideBoundary");var S0=g(function(e,t,s,o){_=Bt().c4;const l=Bt().securityLevel;let a;l==="sandbox"&&(a=jt("#i"+t));const r=l==="sandbox"?jt(a.nodes()[0].contentDocument.body):jt("body");let n=o.db;o.db.setWrap(_.wrap),ve=n.getC4ShapeInRow(),ee=n.getC4BoundaryInRow(),fe.debug(`C:${JSON.stringify(_,null,2)}`);const i=l==="sandbox"?r.select(`[id="${t}"]`):jt(`[id="${t}"]`);z.insertComputerIcon(i),z.insertDatabaseIcon(i),z.insertClockIcon(i);let u=new Ee(o);u.setData(_.diagramMarginX,_.diagramMarginX,_.diagramMarginY,_.diagramMarginY),u.data.widthLimit=screen.availWidth,Xt=_.diagramMarginX,Wt=_.diagramMarginY;const d=o.db.getTitle();let f=o.db.getBoundarys("");se(i,"",u,f,o),z.insertArrowHead(i),z.insertArrowEnd(i),z.insertArrowCrossHead(i),z.insertArrowFilledHead(i),R0(i,o.db.getRels(),o.db.getC4Shape,o),u.data.stopx=Xt,u.data.stopy=Wt;const y=u.data;let O=y.stopy-y.starty+2*_.diagramMarginY;const P=y.stopx-y.startx+2*_.diagramMarginX;d&&i.append("text").text(d).attr("x",(y.stopx-y.startx)/2-4*_.diagramMarginX).attr("y",y.starty+_.diagramMarginY),Ye(i,O,P,_.useMaxWidth);const M=d?60:0;i.attr("viewBox",y.startx-_.diagramMarginX+" -"+(_.diagramMarginY+M)+" "+P+" "+(O+M)),fe.debug("models:",y)},"draw"),ye={drawPersonOrSystemArray:Ae,drawBoundary:ke,setConf:ae,draw:S0},D0=g(e=>`.person { + stroke: ${e.personBorder}; + fill: ${e.personBkg}; + } +`,"getStyles"),P0=D0,N0={parser:Ue,db:te,renderer:ye,styles:P0,init:g(({c4:e,wrap:t})=>{ye.setConf(e),te.setWrap(t)},"init")};export{N0 as diagram}; diff --git a/assets/chunks/channel.Yhn_4yNH.js b/assets/chunks/channel.Yhn_4yNH.js new file mode 100644 index 00000000..7b5085b5 --- /dev/null +++ b/assets/chunks/channel.Yhn_4yNH.js @@ -0,0 +1 @@ +import{U as a,C as n}from"../app.BCWCbnje.js";const t=(r,o)=>a.lang.round(n.parse(r)[o]);export{t as c}; diff --git a/assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js b/assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js new file mode 100644 index 00000000..3b0188c3 --- /dev/null +++ b/assets/chunks/chunk-5HRBRIJM.BLuRsvWo.js @@ -0,0 +1 @@ +import{_ as n,j as r,k as g,l as d}from"../app.BCWCbnje.js";var u=n((t,e)=>{let o;return e==="sandbox"&&(o=r("#i"+t)),(e==="sandbox"?r(o.nodes()[0].contentDocument.body):r("body")).select(`[id="${t}"]`)},"getDiagramElement"),b=n((t,e,o,i)=>{t.attr("class",o);const{width:a,height:s,x:h,y:x}=l(t,e);g(t,s,a,i);const c=w(h,x,a,s,e);t.attr("viewBox",c),d.debug(`viewBox configured: ${c} with padding: ${e}`)},"setupViewPortForSVG"),l=n((t,e)=>{var i;const o=((i=t.node())==null?void 0:i.getBBox())||{width:0,height:0,x:0,y:0};return{width:o.width+e*2,height:o.height+e*2,x:o.x,y:o.y}},"calculateDimensionsWithPadding"),w=n((t,e,o,i,a)=>`${t-a} ${e-a} ${o} ${i}`,"createViewBox");export{u as g,b as s}; diff --git a/assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js b/assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js new file mode 100644 index 00000000..00e29fa7 --- /dev/null +++ b/assets/chunks/chunk-7U56Z5CX.3DFBXZZA.js @@ -0,0 +1,220 @@ +import{g as De,s as Ce}from"./chunk-5HRBRIJM.BLuRsvWo.js";import{_ as r,e as H,d as x,g as xe,s as Ae,b as Le,c as Ie,q as Re,r as Oe,l as b,A as Ne,v as we,x as $e,a9 as Pe}from"../app.BCWCbnje.js";var Ot=function(){var t=r(function($,o,u,n){for(u=u||{},n=$.length;n--;u[$[n]]=o);return u},"o"),e=[1,2],c=[1,3],a=[1,4],d=[2,4],s=[1,9],p=[1,11],g=[1,16],l=[1,17],_=[1,18],v=[1,19],A=[1,32],B=[1,20],Y=[1,21],I=[1,22],f=[1,23],L=[1,24],R=[1,26],F=[1,27],V=[1,28],N=[1,29],w=[1,30],rt=[1,31],at=[1,34],nt=[1,35],lt=[1,36],ot=[1,37],J=[1,33],S=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],ct=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],Vt=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],kt={trace:r(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,"-->":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,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",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:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"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],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:r(function(o,u,n,y,T,i,q){var h=i.length-1;switch(T){case 3:return y.setRootDoc(i[h]),i[h];case 4:this.$=[];break;case 5:i[h]!="nl"&&(i[h-1].push(i[h]),this.$=i[h-1]);break;case 6:case 7:this.$=i[h];break;case 8:this.$="nl";break;case 12:this.$=i[h];break;case 13:const Q=i[h-1];Q.description=y.trimColon(i[h]),this.$=Q;break;case 14:this.$={stmt:"relation",state1:i[h-2],state2:i[h]};break;case 15:const Dt=y.trimColon(i[h]);this.$={stmt:"relation",state1:i[h-3],state2:i[h-1],description:Dt};break;case 19:this.$={stmt:"state",id:i[h-3],type:"default",description:"",doc:i[h-1]};break;case 20:var M=i[h],W=i[h-2].trim();if(i[h].match(":")){var ht=i[h].split(":");M=ht[0],W=[W,ht[1]]}this.$={stmt:"state",id:M,type:"default",description:W};break;case 21:this.$={stmt:"state",id:i[h-3],type:"default",description:i[h-5],doc:i[h-1]};break;case 22:this.$={stmt:"state",id:i[h],type:"fork"};break;case 23:this.$={stmt:"state",id:i[h],type:"join"};break;case 24:this.$={stmt:"state",id:i[h],type:"choice"};break;case 25:this.$={stmt:"state",id:y.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:i[h-1].trim(),note:{position:i[h-2].trim(),text:i[h].trim()}};break;case 29:this.$=i[h].trim(),y.setAccTitle(this.$);break;case 30:case 31:this.$=i[h].trim(),y.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:i[h-1].trim(),classes:i[h].trim()};break;case 34:this.$={stmt:"style",id:i[h-1].trim(),styleClass:i[h].trim()};break;case 35:this.$={stmt:"applyClass",id:i[h-1].trim(),styleClass:i[h].trim()};break;case 36:y.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:y.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:y.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:y.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:i[h].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:i[h-2].trim(),classes:[i[h].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:i[h-2].trim(),classes:[i[h].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:c,6:a},{1:[3]},{3:5,4:e,5:c,6:a},{3:6,4:e,5:c,6:a},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],d,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:s,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,22:v,24:A,25:B,26:Y,27:I,28:f,29:L,32:25,33:R,35:F,37:V,38:N,42:w,45:rt,48:at,49:nt,50:lt,51:ot,54:J},t(S,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:g,17:l,19:_,22:v,24:A,25:B,26:Y,27:I,28:f,29:L,32:25,33:R,35:F,37:V,38:N,42:w,45:rt,48:at,49:nt,50:lt,51:ot,54:J},t(S,[2,7]),t(S,[2,8]),t(S,[2,9]),t(S,[2,10]),t(S,[2,11]),t(S,[2,12],{14:[1,39],15:[1,40]}),t(S,[2,16]),{18:[1,41]},t(S,[2,18],{20:[1,42]}),{23:[1,43]},t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(S,[2,28]),{34:[1,48]},{36:[1,49]},t(S,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(ct,[2,42],{55:[1,54]}),t(ct,[2,43],{55:[1,55]}),t(S,[2,36]),t(S,[2,37]),t(S,[2,38]),t(S,[2,39]),t(S,[2,6]),t(S,[2,13]),{13:56,24:A,54:J},t(S,[2,17]),t(Vt,d,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(S,[2,29]),t(S,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(S,[2,14],{14:[1,67]}),{4:s,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,21:[1,68],22:v,24:A,25:B,26:Y,27:I,28:f,29:L,32:25,33:R,35:F,37:V,38:N,42:w,45:rt,48:at,49:nt,50:lt,51:ot,54:J},t(S,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(S,[2,32]),t(S,[2,33]),t(S,[2,34]),t(S,[2,35]),t(ct,[2,44]),t(ct,[2,45]),t(S,[2,15]),t(S,[2,19]),t(Vt,d,{7:72}),t(S,[2,26]),t(S,[2,27]),{4:s,5:p,8:8,9:10,10:12,11:13,12:14,13:15,16:g,17:l,19:_,21:[1,73],22:v,24:A,25:B,26:Y,27:I,28:f,29:L,32:25,33:R,35:F,37:V,38:N,42:w,45:rt,48:at,49:nt,50:lt,51:ot,54:J},t(S,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:r(function(o,u){if(u.recoverable)this.trace(o);else{var n=new Error(o);throw n.hash=u,n}},"parseError"),parse:r(function(o){var u=this,n=[0],y=[],T=[null],i=[],q=this.table,h="",M=0,W=0,ht=2,Q=1,Dt=i.slice.call(arguments,1),E=Object.create(this.lexer),U={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(U.yy[Ct]=this.yy[Ct]);E.setInput(o,U.yy),U.yy.lexer=E,U.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var xt=E.yylloc;i.push(xt);var me=E.options&&E.options.ranges;typeof U.yy.parseError=="function"?this.parseError=U.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ke(D){n.length=n.length-2*D,T.length=T.length-D,i.length=i.length-D}r(ke,"popStack");function Mt(){var D;return D=y.pop()||E.lex()||Q,typeof D!="number"&&(D instanceof Array&&(y=D,D=y.pop()),D=u.symbols_[D]||D),D}r(Mt,"lex");for(var m,j,C,At,X={},dt,O,Ut,ft;;){if(j=n[n.length-1],this.defaultActions[j]?C=this.defaultActions[j]:((m===null||typeof m>"u")&&(m=Mt()),C=q[j]&&q[j][m]),typeof C>"u"||!C.length||!C[0]){var Lt="";ft=[];for(dt in q[j])this.terminals_[dt]&&dt>ht&&ft.push("'"+this.terminals_[dt]+"'");E.showPosition?Lt="Parse error on line "+(M+1)+`: +`+E.showPosition()+` +Expecting `+ft.join(", ")+", got '"+(this.terminals_[m]||m)+"'":Lt="Parse error on line "+(M+1)+": Unexpected "+(m==Q?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(Lt,{text:E.match,token:this.terminals_[m]||m,line:E.yylineno,loc:xt,expected:ft})}if(C[0]instanceof Array&&C.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+m);switch(C[0]){case 1:n.push(m),T.push(E.yytext),i.push(E.yylloc),n.push(C[1]),m=null,W=E.yyleng,h=E.yytext,M=E.yylineno,xt=E.yylloc;break;case 2:if(O=this.productions_[C[1]][1],X.$=T[T.length-O],X._$={first_line:i[i.length-(O||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(O||1)].first_column,last_column:i[i.length-1].last_column},me&&(X._$.range=[i[i.length-(O||1)].range[0],i[i.length-1].range[1]]),At=this.performAction.apply(X,[h,W,M,U.yy,C[1],T,i].concat(Dt)),typeof At<"u")return At;O&&(n=n.slice(0,-1*O*2),T=T.slice(0,-1*O),i=i.slice(0,-1*O)),n.push(this.productions_[C[1]][0]),T.push(X.$),i.push(X._$),Ut=q[n[n.length-2]][n[n.length-1]],n.push(Ut);break;case 3:return!0}}return!0},"parse")},be=function(){var $={EOF:1,parseError:r(function(u,n){if(this.yy.parser)this.yy.parser.parseError(u,n);else throw new Error(u)},"parseError"),setInput:r(function(o,u){return this.yy=u||this.yy||{},this._input=o,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:r(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var u=o.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:r(function(o){var u=o.length,n=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var y=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 T=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===y.length?this.yylloc.first_column:0)+y[y.length-n.length].length-n[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(o){this.unput(this.match.slice(o))},"less"),pastInput:r(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var o=this.pastInput(),u=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+u+"^"},"showPosition"),test_match:r(function(o,u){var n,y,T;if(this.options.backtrack_lexer&&(T={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&&(T.yylloc.range=this.yylloc.range.slice(0))),y=o[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,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(o[0].length),this.matched+=o[0],n=this.performAction.call(this,this.yy,this,u,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var i in T)this[i]=T[i];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,u,n,y;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),i=0;iu[0].length)){if(u=n,y=i,this.options.backtrack_lexer){if(o=this.test_match(n,T[i]),o!==!1)return o;if(this._backtrack){u=!1;continue}else return!1}else if(!this.options.flex)break}return u?(o=this.test_match(u,T[y]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var u=this.next();return u||this.lex()},"lex"),begin:r(function(u){this.conditionStack.push(u)},"begin"),popState:r(function(){var u=this.conditionStack.length-1;return u>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(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:r(function(u){return u=this.conditionStack.length-1-Math.abs(u||0),u>=0?this.conditionStack[u]:"INITIAL"},"topState"),pushState:r(function(u){this.begin(u)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(u,n,y,T){switch(y){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),35;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),39;case 25:return this.popState(),40;case 26:return this.pushState("CLASS"),45;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;case 28:return this.popState(),47;case 29:return this.pushState("STYLE"),42;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;case 31:return this.popState(),44;case 32:return this.pushState("SCALE"),17;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),25;case 37:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),26;case 38:return this.popState(),n.yytext=n.yytext.slice(0,-10).trim(),27;case 39:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),25;case 40:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),26;case 41:return this.popState(),n.yytext=n.yytext.slice(0,-10).trim(),27;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";case 48:return this.popState(),"ID";case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;case 54:break;case 55:return this.popState(),21;case 56:break;case 57:return this.begin("NOTE"),29;case 58:return this.popState(),this.pushState("NOTE_ID"),56;case 59:return this.popState(),this.pushState("NOTE_ID"),57;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;case 66:return this.popState(),n.yytext=n.yytext.substr(2).trim(),31;case 67:return this.popState(),n.yytext=n.yytext.slice(0,-8).trim(),31;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return n.yytext=n.yytext.trim(),14;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?: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,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/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:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return $}();kt.lexer=be;function ut(){this.yy={}}return r(ut,"Parser"),ut.prototype=kt,kt.Parser=ut,new ut}();Ot.parser=Ot;var As=Ot,Ge="LR",qt="TB",_t="state",wt="relation",Be="classDef",Ye="style",Fe="applyClass",st="default",Qt="divider",Zt="fill:none",te="fill: #333",ee="c",se="text",ie="normal",It="rect",Rt="rectWithTitle",Ve="stateStart",Me="stateEnd",jt="divider",Ht="roundedWithTitle",Ue="note",je="noteGroup",it="statediagram",He="state",ze=`${it}-${He}`,re="transition",We="note",Xe="note-edge",Ke=`${re} ${Xe}`,Je=`${it}-${We}`,qe="cluster",Qe=`${it}-${qe}`,Ze="cluster-alt",ts=`${it}-${Ze}`,ae="parent",ne="note",es="state",$t="----",ss=`${$t}${ne}`,zt=`${$t}${ae}`,le=r((t,e=qt)=>{if(!t.doc)return e;let c=e;for(const a of t.doc)a.stmt==="dir"&&(c=a.value);return c},"getDir"),is=r(function(t,e){return e.db.extract(e.db.getRootDocV2()),e.db.getClasses()},"getClasses"),rs=r(async function(t,e,c,a){b.info("REF0:"),b.info("Drawing state diagram (v2)",e);const{securityLevel:d,state:s,layout:p}=x();a.db.extract(a.db.getRootDocV2());const g=a.db.getData(),l=De(e,d);g.type=a.type,g.layoutAlgorithm=p,g.nodeSpacing=(s==null?void 0:s.nodeSpacing)||50,g.rankSpacing=(s==null?void 0:s.rankSpacing)||50,g.markers=["barb"],g.diagramId=e,await Ne(g,l);const _=8;we.insertTitle(l,"statediagramTitleText",(s==null?void 0:s.titleTopMargin)??25,a.db.getDiagramTitle()),Ce(l,_,it,(s==null?void 0:s.useMaxWidth)??!0)},"draw"),Ls={getClasses:is,draw:rs,getDir:le},St=new Map,P=0;function yt(t="",e=0,c="",a=$t){const d=c!==null&&c.length>0?`${a}${c}`:"";return`${es}-${t}${d}-${e}`}r(yt,"stateDomId");var as=r((t,e,c,a,d,s,p,g)=>{b.trace("items",e),e.forEach(l=>{switch(l.stmt){case _t:tt(t,l,c,a,d,s,p,g);break;case st:tt(t,l,c,a,d,s,p,g);break;case wt:{tt(t,l.state1,c,a,d,s,p,g),tt(t,l.state2,c,a,d,s,p,g);const _={id:"edge"+P,start:l.state1.id,end:l.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:Zt,labelStyle:"",label:H.sanitizeText(l.description,x()),arrowheadStyle:te,labelpos:ee,labelType:se,thickness:ie,classes:re,look:p};d.push(_),P++}break}})},"setupDoc"),Wt=r((t,e=qt)=>{let c=e;if(t.doc)for(const a of t.doc)a.stmt==="dir"&&(c=a.value);return c},"getDir");function Z(t,e,c){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(d=>{if(c.get(d)){const s=c.get(d);e.cssCompiledStyles=[...e.cssCompiledStyles,...s.styles]}}));const a=t.find(d=>d.id===e.id);a?Object.assign(a,e):t.push(e)}r(Z,"insertOrUpdateNode");function oe(t){var e;return((e=t==null?void 0:t.classes)==null?void 0:e.join(" "))??""}r(oe,"getClassesFromDbInfo");function ce(t){return(t==null?void 0:t.styles)??[]}r(ce,"getStylesFromDbInfo");var tt=r((t,e,c,a,d,s,p,g)=>{var B,Y;const l=e.id,_=c.get(l),v=oe(_),A=ce(_);if(b.info("dataFetcher parsedItem",e,_,A),l!=="root"){let I=It;e.start===!0?I=Ve:e.start===!1&&(I=Me),e.type!==st&&(I=e.type),St.get(l)||St.set(l,{id:l,shape:I,description:H.sanitizeText(l,x()),cssClasses:`${v} ${ze}`,cssStyles:A});const f=St.get(l);e.description&&(Array.isArray(f.description)?(f.shape=Rt,f.description.push(e.description)):((B=f.description)==null?void 0:B.length)>0?(f.shape=Rt,f.description===l?f.description=[e.description]:f.description=[f.description,e.description]):(f.shape=It,f.description=e.description),f.description=H.sanitizeTextOrArray(f.description,x())),((Y=f.description)==null?void 0:Y.length)===1&&f.shape===Rt&&(f.type==="group"?f.shape=Ht:f.shape=It),!f.type&&e.doc&&(b.info("Setting cluster for XCX",l,Wt(e)),f.type="group",f.isGroup=!0,f.dir=Wt(e),f.shape=e.type===Qt?jt:Ht,f.cssClasses=`${f.cssClasses} ${Qe} ${s?ts:""}`);const L={labelStyle:"",shape:f.shape,label:f.description,cssClasses:f.cssClasses,cssCompiledStyles:[],cssStyles:f.cssStyles,id:l,dir:f.dir,domId:yt(l,P),type:f.type,isGroup:f.type==="group",padding:8,rx:10,ry:10,look:p};if(L.shape===jt&&(L.label=""),t&&t.id!=="root"&&(b.trace("Setting node ",l," to be child of its parent ",t.id),L.parentId=t.id),L.centerLabel=!0,e.note){const R={labelStyle:"",shape:Ue,label:e.note.text,cssClasses:Je,cssStyles:[],cssCompilesStyles:[],id:l+ss+"-"+P,domId:yt(l,P,ne),type:f.type,isGroup:f.type==="group",padding:x().flowchart.padding,look:p,position:e.note.position},F=l+zt,V={labelStyle:"",shape:je,label:e.note.text,cssClasses:f.cssClasses,cssStyles:[],id:l+zt,domId:yt(l,P,ae),type:"group",isGroup:!0,padding:16,look:p,position:e.note.position};P++,V.id=F,R.parentId=F,Z(a,V,g),Z(a,R,g),Z(a,L,g);let N=l,w=R.id;e.note.position==="left of"&&(N=R.id,w=l),d.push({id:N+"-"+w,start:N,end:w,arrowhead:"none",arrowTypeEnd:"",style:Zt,labelStyle:"",classes:Ke,arrowheadStyle:te,labelpos:ee,labelType:se,thickness:ie,look:p})}else Z(a,L,g)}e.doc&&(b.trace("Adding nodes children "),as(e,e.doc,c,a,d,!s,p,g))},"dataFetcher"),ns=r(()=>{St.clear(),P=0},"reset"),Pt="[*]",ue="start",he=Pt,de="end",Xt="color",Kt="fill",ls="bgFill",os=",";function Gt(){return new Map}r(Gt,"newClassesList");var Tt=[],Bt=[],fe=Ge,Et=[],K=Gt(),pe=r(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),vt={root:pe()},k=vt.root,et=0,Jt=0,cs={LINE:0,DOTTED_LINE:1},us={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},pt=r(t=>JSON.parse(JSON.stringify(t)),"clone"),hs=r(t=>{b.info("Setting root doc",t),Et=t},"setRootDoc"),ds=r(()=>Et,"getRootDoc"),gt=r((t,e,c)=>{if(e.stmt===wt)gt(t,e.state1,!0),gt(t,e.state2,!1);else if(e.stmt===_t&&(e.id==="[*]"?(e.id=c?t.id+"_start":t.id+"_end",e.start=c):e.id=e.id.trim()),e.doc){const a=[];let d=[],s;for(s=0;s0&&d.length>0){const p={stmt:_t,id:Pe(),type:"divider",doc:pt(d)};a.push(pt(p)),e.doc=a}e.doc.forEach(p=>gt(e,p,!0))}},"docTranslator"),Yt=r(()=>(gt({id:"root"},{id:"root",doc:Et},!0),{id:"root",doc:Et}),"getRootDocV2"),fs=r(t=>{let e;t.doc?e=t.doc:e=t,b.info(e),Se(!0),b.info("Extract initial document:",e),e.forEach(s=>{switch(b.warn("Statement",s.stmt),s.stmt){case _t:G(s.id.trim(),s.type,s.doc,s.description,s.note,s.classes,s.styles,s.textStyles);break;case wt:Ee(s.state1,s.state2,s.description);break;case Be:ve(s.id.trim(),s.classes);break;case Ye:{const p=s.id.trim().split(","),g=s.styleClass.split(",");p.forEach(l=>{let _=z(l);if(_===void 0){const v=l.trim();G(v),_=z(v)}_.styles=g.map(v=>{var A;return(A=v.replace(/;/g,""))==null?void 0:A.trim()})})}break;case Fe:Ft(s.id.trim(),s.styleClass);break}});const c=ye(),d=x().look;ns(),tt(void 0,Yt(),c,Tt,Bt,!0,d,K),Tt.forEach(s=>{if(Array.isArray(s.label)){if(s.description=s.label.slice(1),s.isGroup&&s.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+s.id+"]");s.label=s.label[0]}})},"extract"),G=r(function(t,e=st,c=null,a=null,d=null,s=null,p=null,g=null){const l=t==null?void 0:t.trim();if(k.states.has(l)?(k.states.get(l).doc||(k.states.get(l).doc=c),k.states.get(l).type||(k.states.get(l).type=e)):(b.info("Adding state ",l,a),k.states.set(l,{id:l,descriptions:[],type:e,doc:c,note:d,classes:[],styles:[],textStyles:[]})),a&&(b.info("Setting state description",l,a),typeof a=="string"&&Nt(l,a.trim()),typeof a=="object"&&a.forEach(_=>Nt(l,_.trim()))),d){const _=k.states.get(l);_.note=d,_.note.text=H.sanitizeText(_.note.text,x())}s&&(b.info("Setting state classes",l,s),(typeof s=="string"?[s]:s).forEach(v=>Ft(l,v.trim()))),p&&(b.info("Setting state styles",l,p),(typeof p=="string"?[p]:p).forEach(v=>Ts(l,v.trim()))),g&&(b.info("Setting state styles",l,p),(typeof g=="string"?[g]:g).forEach(v=>Es(l,v.trim())))},"addState"),Se=r(function(t){Tt=[],Bt=[],vt={root:pe()},k=vt.root,et=0,K=Gt(),t||$e()},"clear"),z=r(function(t){return k.states.get(t)},"getState"),ye=r(function(){return k.states},"getStates"),ps=r(function(){b.info("Documents = ",vt)},"logDocuments"),Ss=r(function(){return k.relations},"getRelations");function bt(t=""){let e=t;return t===Pt&&(et++,e=`${ue}${et}`),e}r(bt,"startIdIfNeeded");function mt(t="",e=st){return t===Pt?ue:e}r(mt,"startTypeIfNeeded");function ge(t=""){let e=t;return t===he&&(et++,e=`${de}${et}`),e}r(ge,"endIdIfNeeded");function _e(t="",e=st){return t===he?de:e}r(_e,"endTypeIfNeeded");function Te(t,e,c){let a=bt(t.id.trim()),d=mt(t.id.trim(),t.type),s=bt(e.id.trim()),p=mt(e.id.trim(),e.type);G(a,d,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),G(s,p,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),k.relations.push({id1:a,id2:s,relationTitle:H.sanitizeText(c,x())})}r(Te,"addRelationObjs");var Ee=r(function(t,e,c){if(typeof t=="object")Te(t,e,c);else{const a=bt(t.trim()),d=mt(t),s=ge(e.trim()),p=_e(e);G(a,d),G(s,p),k.relations.push({id1:a,id2:s,title:H.sanitizeText(c,x())})}},"addRelation"),Nt=r(function(t,e){const c=k.states.get(t),a=e.startsWith(":")?e.replace(":","").trim():e;c.descriptions.push(H.sanitizeText(a,x()))},"addDescription"),ys=r(function(t){return t.substring(0,1)===":"?t.substr(2).trim():t.trim()},"cleanupLabel"),gs=r(()=>(Jt++,"divider-id-"+Jt),"getDividerId"),ve=r(function(t,e=""){K.has(t)||K.set(t,{id:t,styles:[],textStyles:[]});const c=K.get(t);e!=null&&e.split(os).forEach(a=>{const d=a.replace(/([^;]*);/,"$1").trim();if(RegExp(Xt).exec(a)){const p=d.replace(Kt,ls).replace(Xt,Kt);c.textStyles.push(p)}c.styles.push(d)})},"addStyleClass"),_s=r(function(){return K},"getClasses"),Ft=r(function(t,e){t.split(",").forEach(function(c){let a=z(c);if(a===void 0){const d=c.trim();G(d),a=z(d)}a.classes.push(e)})},"setCssClass"),Ts=r(function(t,e){const c=z(t);c!==void 0&&c.styles.push(e)},"setStyle"),Es=r(function(t,e){const c=z(t);c!==void 0&&c.textStyles.push(e)},"setTextStyle"),vs=r(()=>fe,"getDirection"),bs=r(t=>{fe=t},"setDirection"),ms=r(t=>t&&t[0]===":"?t.substr(1).trim():t.trim(),"trimColon"),ks=r(()=>{const t=x();return{nodes:Tt,edges:Bt,other:{},config:t,direction:le(Yt())}},"getData"),Is={getConfig:r(()=>x().state,"getConfig"),getData:ks,addState:G,clear:Se,getState:z,getStates:ye,getRelations:Ss,getClasses:_s,getDirection:vs,addRelation:Ee,getDividerId:gs,setDirection:bs,cleanupLabel:ys,lineType:cs,relationType:us,logDocuments:ps,getRootDoc:ds,setRootDoc:hs,getRootDocV2:Yt,extract:fs,trimColon:ms,getAccTitle:xe,setAccTitle:Ae,getAccDescription:Le,setAccDescription:Ie,addStyleClass:ve,setCssClass:Ft,addDescription:Nt,setDiagramTitle:Re,getDiagramTitle:Oe},Ds=r(t=>` +defs #statediagram-barbEnd { + fill: ${t.transitionColor}; + stroke: ${t.transitionColor}; + } +g.stateGroup text { + fill: ${t.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${t.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${t.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; +} + +g.stateGroup line { + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${t.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${t.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + + text { + fill: ${t.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${t.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${t.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel { + background-color: ${t.edgeLabelBackground}; + p { + background-color: ${t.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${t.edgeLabelBackground}; + fill: ${t.edgeLabelBackground}; + } + text-align: center; +} +.edgeLabel .label text { + fill: ${t.transitionLabelColor||t.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${t.transitionLabelColor||t.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${t.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node .fork-join { + fill: ${t.specialStateColor}; + stroke: ${t.specialStateColor}; +} + +.node circle.state-end { + fill: ${t.innerEndBackground}; + stroke: ${t.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${t.compositeBackground||t.background}; + // stroke: ${t.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${t.stateBkg||t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${t.mainBkg}; + stroke: ${t.stateBorder||t.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${t.lineColor}; +} + +.statediagram-cluster rect { + fill: ${t.compositeTitleBackground}; + stroke: ${t.stateBorder||t.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${t.stateLabelColor}; + // line-height: 1; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${t.stateBorder||t.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${t.compositeBackground||t.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${t.altBackground?t.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${t.noteBkgColor}; + stroke: ${t.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${t.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${t.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${t.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${t.lineColor}; + stroke: ${t.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; +} +`,"getStyles"),Rs=Ds;export{Is as a,Rs as b,Ls as c,As as s}; diff --git a/assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js b/assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js new file mode 100644 index 00000000..c5a428a1 --- /dev/null +++ b/assets/chunks/chunk-ASOPGD6M.DXiLsIdP.js @@ -0,0 +1 @@ +import{_ as n,n as c,m as l}from"../app.BCWCbnje.js";var o=n((a,t)=>{const e=a.append("rect");if(e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),t.name&&e.attr("name",t.name),t.rx&&e.attr("rx",t.rx),t.ry&&e.attr("ry",t.ry),t.attrs!==void 0)for(const r in t.attrs)e.attr(r,t.attrs[r]);return t.class&&e.attr("class",t.class),e},"drawRect"),d=n((a,t)=>{const e={x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,stroke:t.stroke,class:"rect"};o(a,e).lower()},"drawBackgroundRect"),g=n((a,t)=>{const e=t.text.replace(c," "),r=a.append("text");r.attr("x",t.x),r.attr("y",t.y),r.attr("class","legend"),r.style("text-anchor",t.anchor),t.class&&r.attr("class",t.class);const s=r.append("tspan");return s.attr("x",t.x+t.textMargin*2),s.text(e),r},"drawText"),m=n((a,t,e,r)=>{const s=a.append("image");s.attr("x",t),s.attr("y",e);const i=l(r);s.attr("xlink:href",i)},"drawImage"),h=n((a,t,e,r)=>{const s=a.append("use");s.attr("x",t),s.attr("y",e);const i=l(r);s.attr("xlink:href",`#${i}`)},"drawEmbeddedImage"),y=n(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),p=n(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj");export{p as a,d as b,h as c,o as d,m as e,g as f,y as g}; diff --git a/assets/chunks/chunk-KFBOBJHC.B571SeHl.js b/assets/chunks/chunk-KFBOBJHC.B571SeHl.js new file mode 100644 index 00000000..fa228e13 --- /dev/null +++ b/assets/chunks/chunk-KFBOBJHC.B571SeHl.js @@ -0,0 +1 @@ +import{_ as s}from"../app.BCWCbnje.js";var t,e=(t=class{constructor(i){this.init=i,this.records=this.init()}reset(){this.records=this.init()}},s(t,"ImperativeState"),t);export{e as I}; diff --git a/assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js b/assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js new file mode 100644 index 00000000..5c13911c --- /dev/null +++ b/assets/chunks/chunk-T2TOU4HS.Cnzk0l7z.js @@ -0,0 +1,164 @@ +import{g as mt,s as Et}from"./chunk-5HRBRIJM.BLuRsvWo.js";import{_ as u,i as bt,d as D,a7 as z,s as kt,g as yt,b as Tt,c as Ft,q as Dt,r as _t,e as I,x as Bt,l as ze,v as Qe,j as ie,y as St,z as vt,A as Nt}from"../app.BCWCbnje.js";var Ke=function(){var e=u(function(O,o,h,d){for(h=h||{},d=O.length;d--;h[O[d]]=o);return h},"o"),i=[1,18],a=[1,19],l=[1,20],c=[1,41],r=[1,42],A=[1,26],f=[1,24],T=[1,25],S=[1,32],ke=[1,33],ye=[1,34],m=[1,45],Te=[1,35],Fe=[1,36],De=[1,37],_e=[1,38],Be=[1,27],Se=[1,28],ve=[1,29],Ne=[1,30],Le=[1,31],E=[1,44],b=[1,46],k=[1,43],F=[1,47],xe=[1,9],p=[1,8,9],re=[1,58],ue=[1,59],le=[1,60],oe=[1,61],ce=[1,62],Ie=[1,63],Oe=[1,64],he=[1,8,9,41],qe=[1,76],G=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],pe=[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],de=[13,58,84,99,101,102],Q=[13,58,71,72,84,99,101,102],He=[13,58,66,67,68,69,70,84,99,101,102],we=[1,98],W=[1,115],X=[1,107],q=[1,113],H=[1,108],J=[1,109],Z=[1,110],$=[1,111],ee=[1,112],te=[1,114],Je=[22,58,59,80,84,85,86,87,88,89],Ve=[1,8,9,39,41,44],Ae=[1,8,9,22],Ze=[1,143],$e=[1,8,9,59],N=[1,8,9,22,58,59,80,84,85,86,87,88,89],Pe={trace:u(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:u(function(o,h,d,n,C,t,se){var s=t.length-1;switch(C){case 8:this.$=t[s-1];break;case 9:case 12:case 14:this.$=t[s];break;case 10:case 13:this.$=t[s-2]+"."+t[s];break;case 11:case 15:this.$=t[s-1]+t[s];break;case 16:case 17:this.$=t[s-1]+"~"+t[s]+"~";break;case 18:n.addRelation(t[s]);break;case 19:t[s-1].title=n.cleanupLabel(t[s]),n.addRelation(t[s-1]);break;case 30:this.$=t[s].trim(),n.setAccTitle(this.$);break;case 31:case 32:this.$=t[s].trim(),n.setAccDescription(this.$);break;case 33:n.addClassesToNamespace(t[s-3],t[s-1]);break;case 34:n.addClassesToNamespace(t[s-4],t[s-1]);break;case 35:this.$=t[s],n.addNamespace(t[s]);break;case 36:this.$=[t[s]];break;case 37:this.$=[t[s-1]];break;case 38:t[s].unshift(t[s-2]),this.$=t[s];break;case 40:n.setCssClass(t[s-2],t[s]);break;case 41:n.addMembers(t[s-3],t[s-1]);break;case 42:n.setCssClass(t[s-5],t[s-3]),n.addMembers(t[s-5],t[s-1]);break;case 43:this.$=t[s],n.addClass(t[s]);break;case 44:this.$=t[s-1],n.addClass(t[s-1]),n.setClassLabel(t[s-1],t[s]);break;case 45:n.addAnnotation(t[s],t[s-2]);break;case 46:case 59:this.$=[t[s]];break;case 47:t[s].push(t[s-1]),this.$=t[s];break;case 48:break;case 49:n.addMember(t[s-1],n.cleanupLabel(t[s]));break;case 50:break;case 51:break;case 52:this.$={id1:t[s-2],id2:t[s],relation:t[s-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:t[s-3],id2:t[s],relation:t[s-1],relationTitle1:t[s-2],relationTitle2:"none"};break;case 54:this.$={id1:t[s-3],id2:t[s],relation:t[s-2],relationTitle1:"none",relationTitle2:t[s-1]};break;case 55:this.$={id1:t[s-4],id2:t[s],relation:t[s-2],relationTitle1:t[s-3],relationTitle2:t[s-1]};break;case 56:n.addNote(t[s],t[s-1]);break;case 57:n.addNote(t[s]);break;case 58:this.$=t[s-2],n.defineClass(t[s-1],t[s]);break;case 60:this.$=t[s-2].concat([t[s]]);break;case 61:n.setDirection("TB");break;case 62:n.setDirection("BT");break;case 63:n.setDirection("RL");break;case 64:n.setDirection("LR");break;case 65:this.$={type1:t[s-2],type2:t[s],lineType:t[s-1]};break;case 66:this.$={type1:"none",type2:t[s],lineType:t[s-1]};break;case 67:this.$={type1:t[s-1],type2:"none",lineType:t[s]};break;case 68:this.$={type1:"none",type2:"none",lineType:t[s]};break;case 69:this.$=n.relationType.AGGREGATION;break;case 70:this.$=n.relationType.EXTENSION;break;case 71:this.$=n.relationType.COMPOSITION;break;case 72:this.$=n.relationType.DEPENDENCY;break;case 73:this.$=n.relationType.LOLLIPOP;break;case 74:this.$=n.lineType.LINE;break;case 75:this.$=n.lineType.DOTTED_LINE;break;case 76:case 82:this.$=t[s-2],n.setClickEvent(t[s-1],t[s]);break;case 77:case 83:this.$=t[s-3],n.setClickEvent(t[s-2],t[s-1]),n.setTooltip(t[s-2],t[s]);break;case 78:this.$=t[s-2],n.setLink(t[s-1],t[s]);break;case 79:this.$=t[s-3],n.setLink(t[s-2],t[s-1],t[s]);break;case 80:this.$=t[s-3],n.setLink(t[s-2],t[s-1]),n.setTooltip(t[s-2],t[s]);break;case 81:this.$=t[s-4],n.setLink(t[s-3],t[s-2],t[s]),n.setTooltip(t[s-3],t[s-1]);break;case 84:this.$=t[s-3],n.setClickEvent(t[s-2],t[s-1],t[s]);break;case 85:this.$=t[s-4],n.setClickEvent(t[s-3],t[s-2],t[s-1]),n.setTooltip(t[s-3],t[s]);break;case 86:this.$=t[s-3],n.setLink(t[s-2],t[s]);break;case 87:this.$=t[s-4],n.setLink(t[s-3],t[s-1],t[s]);break;case 88:this.$=t[s-4],n.setLink(t[s-3],t[s-1]),n.setTooltip(t[s-3],t[s]);break;case 89:this.$=t[s-5],n.setLink(t[s-4],t[s-2],t[s]),n.setTooltip(t[s-4],t[s-1]);break;case 90:this.$=t[s-2],n.setCssStyle(t[s-1],t[s]);break;case 91:n.setCssClass(t[s-1],t[s]);break;case 92:this.$=[t[s]];break;case 93:t[s-2].push(t[s]),this.$=t[s-2];break;case 95:this.$=t[s-1]+t[s];break}},"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:i,35:a,37:l,38:22,42:c,43:23,46:r,47:A,49:f,50:T,52:S,54:ke,55:ye,58:m,60:Te,61:Fe,62:De,63:_e,73:Be,74:Se,76:ve,80:Ne,81:Le,84:E,99:b,101:k,102:F},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},e(xe,[2,5],{8:[1,48]}),{8:[1,49]},e(p,[2,18],{22:[1,50]}),e(p,[2,20]),e(p,[2,21]),e(p,[2,22]),e(p,[2,23]),e(p,[2,24]),e(p,[2,25]),e(p,[2,26]),e(p,[2,27]),e(p,[2,28]),e(p,[2,29]),{34:[1,51]},{36:[1,52]},e(p,[2,32]),e(p,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:re,67:ue,68:le,69:oe,70:ce,71:Ie,72:Oe}),{39:[1,65]},e(he,[2,39],{39:[1,67],44:[1,66]}),e(p,[2,50]),e(p,[2,51]),{16:68,58:m,84:E,99:b,101:k},{16:39,18:69,19:40,58:m,84:E,99:b,101:k,102:F},{16:39,18:70,19:40,58:m,84:E,99:b,101:k,102:F},{16:39,18:71,19:40,58:m,84:E,99:b,101:k,102:F},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:m,84:E,99:b,101:k,102:F},{13:qe,53:75},{56:77,58:[1,78]},e(p,[2,61]),e(p,[2,62]),e(p,[2,63]),e(p,[2,64]),e(G,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:m,84:E,99:b,101:k,102:F}),e(G,[2,14],{20:[1,82]}),{15:83,16:84,58:m,84:E,99:b,101:k},{16:39,18:85,19:40,58:m,84:E,99:b,101:k,102:F},e(pe,[2,118]),e(pe,[2,119]),e(pe,[2,120]),e(pe,[2,121]),e([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),e(xe,[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:i,35:a,37:l,42:c,46:r,47:A,49:f,50:T,52:S,54:ke,55:ye,58:m,60:Te,61:Fe,62:De,63:_e,73:Be,74:Se,76:ve,80:Ne,81:Le,84:E,99:b,101:k,102:F}),{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:i,35:a,37:l,38:22,42:c,43:23,46:r,47:A,49:f,50:T,52:S,54:ke,55:ye,58:m,60:Te,61:Fe,62:De,63:_e,73:Be,74:Se,76:ve,80:Ne,81:Le,84:E,99:b,101:k,102:F},e(p,[2,19]),e(p,[2,30]),e(p,[2,31]),{13:[1,89],16:39,18:88,19:40,58:m,84:E,99:b,101:k,102:F},{51:90,64:56,65:57,66:re,67:ue,68:le,69:oe,70:ce,71:Ie,72:Oe},e(p,[2,49]),{65:91,71:Ie,72:Oe},e(de,[2,68],{64:92,66:re,67:ue,68:le,69:oe,70:ce}),e(Q,[2,69]),e(Q,[2,70]),e(Q,[2,71]),e(Q,[2,72]),e(Q,[2,73]),e(He,[2,74]),e(He,[2,75]),{8:[1,94],24:95,40:93,43:23,46:r},{16:96,58:m,84:E,99:b,101:k},{45:97,49:we},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:W,57:104,58:X,80:q,82:105,83:106,84:H,85:J,86:Z,87:$,88:ee,89:te},{58:[1,116]},{13:qe,53:117},e(p,[2,57]),e(p,[2,123]),{22:W,57:118,58:X,59:[1,119],80:q,82:105,83:106,84:H,85:J,86:Z,87:$,88:ee,89:te},e(Je,[2,59]),{16:39,18:120,19:40,58:m,84:E,99:b,101:k,102:F},e(G,[2,15]),e(G,[2,16]),e(G,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:m,84:E,99:b,101:k},e(Ve,[2,43],{11:123,12:[1,124]}),e(xe,[2,7]),{9:[1,125]},e(Ae,[2,52]),{16:39,18:126,19:40,58:m,84:E,99:b,101:k,102:F},{13:[1,128],16:39,18:127,19:40,58:m,84:E,99:b,101:k,102:F},e(de,[2,67],{64:129,66:re,67:ue,68:le,69:oe,70:ce}),e(de,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:r},{8:[1,132],41:[2,36]},e(he,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:we},{16:39,18:136,19:40,58:m,84:E,99:b,101:k,102:F},e(p,[2,76],{13:[1,137]}),e(p,[2,78],{13:[1,139],75:[1,138]}),e(p,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},e(p,[2,90],{59:Ze}),e($e,[2,92],{83:144,22:W,58:X,80:q,84:H,85:J,86:Z,87:$,88:ee,89:te}),e(N,[2,94]),e(N,[2,96]),e(N,[2,97]),e(N,[2,98]),e(N,[2,99]),e(N,[2,100]),e(N,[2,101]),e(N,[2,102]),e(N,[2,103]),e(N,[2,104]),e(p,[2,91]),e(p,[2,56]),e(p,[2,58],{59:Ze}),{58:[1,145]},e(G,[2,13]),{15:146,16:84,58:m,84:E,99:b,101:k},{39:[2,11]},e(Ve,[2,44]),{13:[1,147]},{1:[2,4]},e(Ae,[2,54]),e(Ae,[2,53]),{16:39,18:148,19:40,58:m,84:E,99:b,101:k,102:F},e(de,[2,65]),e(p,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:r},{45:151,49:we},e(he,[2,41]),{41:[2,47]},e(p,[2,45]),e(p,[2,77]),e(p,[2,79]),e(p,[2,80],{75:[1,152]}),e(p,[2,83]),e(p,[2,84],{13:[1,153]}),e(p,[2,86],{13:[1,155],75:[1,154]}),{22:W,58:X,80:q,82:156,83:106,84:H,85:J,86:Z,87:$,88:ee,89:te},e(N,[2,95]),e(Je,[2,60]),{39:[2,10]},{14:[1,157]},e(Ae,[2,55]),e(p,[2,34]),{41:[2,38]},{41:[1,158]},e(p,[2,81]),e(p,[2,85]),e(p,[2,87]),e(p,[2,88],{75:[1,159]}),e($e,[2,93],{83:144,22:W,58:X,80:q,84:H,85:J,86:Z,87:$,88:ee,89:te}),e(Ve,[2,8]),e(he,[2,42]),e(p,[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:u(function(o,h){if(h.recoverable)this.trace(o);else{var d=new Error(o);throw d.hash=h,d}},"parseError"),parse:u(function(o){var h=this,d=[0],n=[],C=[null],t=[],se=this.table,s="",ge=0,et=0,At=2,tt=1,ft=t.slice.call(arguments,1),y=Object.create(this.lexer),V={yy:{}};for(var Re in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Re)&&(V.yy[Re]=this.yy[Re]);y.setInput(o,V.yy),V.yy.lexer=y,V.yy.parser=this,typeof y.yylloc>"u"&&(y.yylloc={});var Me=y.yylloc;t.push(Me);var gt=y.options&&y.options.ranges;typeof V.yy.parseError=="function"?this.parseError=V.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ct(B){d.length=d.length-2*B,C.length=C.length-B,t.length=t.length-B}u(Ct,"popStack");function st(){var B;return B=n.pop()||y.lex()||tt,typeof B!="number"&&(B instanceof Array&&(n=B,B=n.pop()),B=h.symbols_[B]||B),B}u(st,"lex");for(var _,P,v,Ge,U={},Ce,x,it,me;;){if(P=d[d.length-1],this.defaultActions[P]?v=this.defaultActions[P]:((_===null||typeof _>"u")&&(_=st()),v=se[P]&&se[P][_]),typeof v>"u"||!v.length||!v[0]){var Ue="";me=[];for(Ce in se[P])this.terminals_[Ce]&&Ce>At&&me.push("'"+this.terminals_[Ce]+"'");y.showPosition?Ue="Parse error on line "+(ge+1)+`: +`+y.showPosition()+` +Expecting `+me.join(", ")+", got '"+(this.terminals_[_]||_)+"'":Ue="Parse error on line "+(ge+1)+": Unexpected "+(_==tt?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(Ue,{text:y.match,token:this.terminals_[_]||_,line:y.yylineno,loc:Me,expected:me})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+_);switch(v[0]){case 1:d.push(_),C.push(y.yytext),t.push(y.yylloc),d.push(v[1]),_=null,et=y.yyleng,s=y.yytext,ge=y.yylineno,Me=y.yylloc;break;case 2:if(x=this.productions_[v[1]][1],U.$=C[C.length-x],U._$={first_line:t[t.length-(x||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(x||1)].first_column,last_column:t[t.length-1].last_column},gt&&(U._$.range=[t[t.length-(x||1)].range[0],t[t.length-1].range[1]]),Ge=this.performAction.apply(U,[s,et,ge,V.yy,v[1],C,t].concat(ft)),typeof Ge<"u")return Ge;x&&(d=d.slice(0,-1*x*2),C=C.slice(0,-1*x),t=t.slice(0,-1*x)),d.push(this.productions_[v[1]][0]),C.push(U.$),t.push(U._$),it=se[d[d.length-2]][d[d.length-1]],d.push(it);break;case 3:return!0}}return!0},"parse")},dt=function(){var O={EOF:1,parseError:u(function(h,d){if(this.yy.parser)this.yy.parser.parseError(h,d);else throw new Error(h)},"parseError"),setInput:u(function(o,h){return this.yy=h||this.yy||{},this._input=o,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:u(function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var h=o.match(/(?:\r\n?|\n).*/g);return h?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},"input"),unput:u(function(o){var h=o.length,d=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-h),this.offset-=h;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),d.length-1&&(this.yylineno-=d.length-1);var C=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:d?(d.length===n.length?this.yylloc.first_column:0)+n[n.length-d.length].length-d[0].length:this.yylloc.first_column-h},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-h]),this.yyleng=this.yytext.length,this},"unput"),more:u(function(){return this._more=!0,this},"more"),reject:u(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:u(function(o){this.unput(this.match.slice(o))},"less"),pastInput:u(function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:u(function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:u(function(){var o=this.pastInput(),h=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+h+"^"},"showPosition"),test_match:u(function(o,h){var d,n,C;if(this.options.backtrack_lexer&&(C={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&&(C.yylloc.range=this.yylloc.range.slice(0))),n=o[0].match(/(?:\r\n?|\n).*/g),n&&(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+o[0].length},this.yytext+=o[0],this.match+=o[0],this.matches=o,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(o[0].length),this.matched+=o[0],d=this.performAction.call(this,this.yy,this,h,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var t in C)this[t]=C[t];return!1}return!1},"test_match"),next:u(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,h,d,n;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),t=0;th[0].length)){if(h=d,n=t,this.options.backtrack_lexer){if(o=this.test_match(d,C[t]),o!==!1)return o;if(this._backtrack){h=!1;continue}else return!1}else if(!this.options.flex)break}return h?(o=this.test_match(h,C[n]),o!==!1?o:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:u(function(){var h=this.next();return h||this.lex()},"lex"),begin:u(function(h){this.conditionStack.push(h)},"begin"),popState:u(function(){var h=this.conditionStack.length-1;return h>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:u(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:u(function(h){return h=this.conditionStack.length-1-Math.abs(h||0),h>=0?this.conditionStack[h]:"INITIAL"},"topState"),pushState:u(function(h){this.begin(h)},"pushState"),stateStackSize:u(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:u(function(h,d,n,C){switch(n){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5: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:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;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:return this.popState(),8;case 31:break;case 32:return this.begin("namespace-body"),39;case 33:return this.popState(),41;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;case 39:return this.popState(),8;case 40:break;case 41:return this.popState(),this.popState(),41;case 42:return this.begin("class-body"),39;case 43:return this.popState(),41;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;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 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;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:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";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:return 87;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}}};return O}();Pe.lexer=dt;function fe(){this.yy={}}return u(fe,"Parser"),fe.prototype=Pe,Pe.Parser=fe,new fe}();Ke.parser=Ke;var os=Ke,nt=["#","+","~","-",""],Y,at=(Y=class{constructor(i,a){this.memberType=a,this.visibility="",this.classifier="",this.text="";const l=bt(i,D());this.parseMember(l)}getDisplayDetails(){let i=this.visibility+z(this.id);this.memberType==="method"&&(i+=`(${z(this.parameters.trim())})`,this.returnType&&(i+=" : "+z(this.returnType))),i=i.trim();const a=this.parseClassifier();return{displayText:i,cssStyle:a}}parseMember(i){let a="";if(this.memberType==="method"){const r=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(i);if(r){const A=r[1]?r[1].trim():"";if(nt.includes(A)&&(this.visibility=A),this.id=r[2],this.parameters=r[3]?r[3].trim():"",a=r[4]?r[4].trim():"",this.returnType=r[5]?r[5].trim():"",a===""){const f=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(f)&&(a=f,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const c=i.length,r=i.substring(0,1),A=i.substring(c-1);nt.includes(r)&&(this.visibility=r),/[$*]/.exec(A)&&(a=A),this.id=i.substring(this.visibility===""?0:1,a===""?c:c-1)}this.classifier=a,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const l=`${this.visibility?"\\"+this.visibility:""}${z(this.id)}${this.memberType==="method"?`(${z(this.parameters)})${this.returnType?" : "+z(this.returnType):""}`:""}`;this.text=l.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""}}},u(Y,"ClassMember"),Y),Ee="classId-",be=[],g=new Map,rt=new Map,ne=[],j=[],ut=0,L=new Map,Ye=0,ae=[],R=u(e=>I.sanitizeText(e,D()),"sanitizeText"),M=u(function(e){const i=I.sanitizeText(e,D());let a="",l=i;if(i.indexOf("~")>0){const c=i.split("~");l=R(c[0]),a=R(c[1])}return{className:l,type:a}},"splitClassNameAndType"),Lt=u(function(e,i){const a=I.sanitizeText(e,D());i&&(i=R(i));const{className:l}=M(a);g.get(l).label=i,g.get(l).text=`${i}${g.get(l).type?`<${g.get(l).type}>`:""}`},"setClassLabel"),K=u(function(e){const i=I.sanitizeText(e,D()),{className:a,type:l}=M(i);if(g.has(a))return;const c=I.sanitizeText(a,D());g.set(c,{id:c,type:l,label:c,text:`${c}${l?`<${l}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:Ee+c+"-"+ut}),ut++},"addClass"),lt=u(function(e,i){const a={id:`interface${j.length}`,label:e,classId:i};j.push(a)},"addInterface"),ot=u(function(e){const i=I.sanitizeText(e,D());if(g.has(i))return g.get(i).domId;throw new Error("Class not found: "+i)},"lookUpDomId"),xt=u(function(){be=[],g=new Map,ne=[],j=[],ae=[],ae.push(ht),L=new Map,Ye=0,Xe="TB",Bt()},"clear"),It=u(function(e){return g.get(e)},"getClass"),Ot=u(function(){return g},"getClasses"),wt=u(function(){return be},"getRelations"),Vt=u(function(){return ne},"getNotes"),Pt=u(function(e){ze.debug("Adding relation: "+JSON.stringify(e));const i=[w.LOLLIPOP,w.AGGREGATION,w.COMPOSITION,w.DEPENDENCY,w.EXTENSION];e.relation.type1===w.LOLLIPOP&&!i.includes(e.relation.type2)?(K(e.id2),lt(e.id1,e.id2),e.id1=`interface${j.length-1}`):e.relation.type2===w.LOLLIPOP&&!i.includes(e.relation.type1)?(K(e.id1),lt(e.id2,e.id1),e.id2=`interface${j.length-1}`):(K(e.id1),K(e.id2)),e.id1=M(e.id1).className,e.id2=M(e.id2).className,e.relationTitle1=I.sanitizeText(e.relationTitle1.trim(),D()),e.relationTitle2=I.sanitizeText(e.relationTitle2.trim(),D()),be.push(e)},"addRelation"),Rt=u(function(e,i){const a=M(e).className;g.get(a).annotations.push(i)},"addAnnotation"),ct=u(function(e,i){K(e);const a=M(e).className,l=g.get(a);if(typeof i=="string"){const c=i.trim();c.startsWith("<<")&&c.endsWith(">>")?l.annotations.push(R(c.substring(2,c.length-2))):c.indexOf(")")>0?l.methods.push(new at(c,"method")):c&&l.members.push(new at(c,"attribute"))}},"addMember"),Mt=u(function(e,i){Array.isArray(i)&&(i.reverse(),i.forEach(a=>ct(e,a)))},"addMembers"),Gt=u(function(e,i){const a={id:`note${ne.length}`,class:i,text:e};ne.push(a)},"addNote"),Ut=u(function(e){return e.startsWith(":")&&(e=e.substring(1)),R(e.trim())},"cleanupLabel"),We=u(function(e,i){e.split(",").forEach(function(a){let l=a;/\d/.exec(a[0])&&(l=Ee+l);const c=g.get(l);c&&(c.cssClasses+=" "+i)})},"setCssClass"),zt=u(function(e,i){for(const a of e){let l=rt.get(a);l===void 0&&(l={id:a,styles:[],textStyles:[]},rt.set(a,l)),i&&i.forEach(function(c){if(/color/.exec(c)){const r=c.replace("fill","bgFill");l.textStyles.push(r)}l.styles.push(c)}),g.forEach(c=>{c.cssClasses.includes(a)&&c.styles.push(...i.flatMap(r=>r.split(",")))})}},"defineClass"),Kt=u(function(e,i){e.split(",").forEach(function(a){i!==void 0&&(g.get(a).tooltip=R(i))})},"setTooltip"),Yt=u(function(e,i){return i&&L.has(i)?L.get(i).classes.get(e).tooltip:g.get(e).tooltip},"getTooltip"),jt=u(function(e,i,a){const l=D();e.split(",").forEach(function(c){let r=c;/\d/.exec(c[0])&&(r=Ee+r);const A=g.get(r);A&&(A.link=Qe.formatUrl(i,l),l.securityLevel==="sandbox"?A.linkTarget="_top":typeof a=="string"?A.linkTarget=R(a):A.linkTarget="_blank")}),We(e,"clickable")},"setLink"),Qt=u(function(e,i,a){e.split(",").forEach(function(l){Wt(l,i,a),g.get(l).haveCallback=!0}),We(e,"clickable")},"setClickEvent"),Wt=u(function(e,i,a){const l=I.sanitizeText(e,D());if(D().securityLevel!=="loose"||i===void 0)return;const r=l;if(g.has(r)){const A=ot(r);let f=[];if(typeof a=="string"){f=a.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let T=0;T")),c.classed("hover",!0)}).on("mouseout",function(){i.transition().duration(500).style("opacity",0),ie(this).classed("hover",!1)})},"setupToolTips");ae.push(ht);var Xe="TB",pt=u(()=>Xe,"getDirection"),Ht=u(e=>{Xe=e},"setDirection"),Jt=u(function(e){L.has(e)||(L.set(e,{id:e,classes:new Map,children:{},domId:Ee+e+"-"+Ye}),Ye++)},"addNamespace"),Zt=u(function(e){return L.get(e)},"getNamespace"),$t=u(function(){return L},"getNamespaces"),es=u(function(e,i){if(L.has(e))for(const a of i){const{className:l}=M(a);g.get(l).parent=e,L.get(e).classes.set(l,g.get(l))}},"addClassesToNamespace"),ts=u(function(e,i){const a=g.get(e);if(!(!i||!a))for(const l of i)l.includes(",")?a.styles.push(...l.split(",")):a.styles.push(l)},"setCssStyle");function je(e){let i;switch(e){case 0:i="aggregation";break;case 1:i="extension";break;case 2:i="composition";break;case 3:i="dependency";break;case 4:i="lollipop";break;default:i="none"}return i}u(je,"getArrowMarker");var ss=u(()=>{var c;const e=[],i=[],a=D();for(const r of L.keys()){const A=L.get(r);if(A){const f={id:A.id,label:A.id,isGroup:!0,padding:a.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:a.look};e.push(f)}}for(const r of g.keys()){const A=g.get(r);if(A){const f=A;f.parentId=A.parent,f.look=a.look,e.push(f)}}let l=0;for(const r of ne){l++;const A={id:r.id,label:r.text,isGroup:!1,shape:"note",padding:a.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${a.themeVariables.noteBkgColor}`,`stroke: ${a.themeVariables.noteBorderColor}`],look:a.look};e.push(A);const f=((c=g.get(r.class))==null?void 0:c.id)??"";if(f){const T={id:`edgeNote${l}`,start:r.id,end:f,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:a.look};i.push(T)}}for(const r of j){const A={id:r.id,label:r.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:a.look};e.push(A)}l=0;for(const r of be){l++;const A={id:St(r.id1,r.id2,{prefix:"id",counter:l}),start:r.id1,end:r.id2,type:"normal",label:r.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:je(r.relation.type1),arrowTypeEnd:je(r.relation.type2),startLabelRight:r.relationTitle1==="none"?"":r.relationTitle1,endLabelLeft:r.relationTitle2==="none"?"":r.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:r.style||"",pattern:r.relation.lineType==1?"dashed":"solid",look:a.look};i.push(A)}return{nodes:e,edges:i,other:{},config:a,direction:pt()}},"getData"),cs={setAccTitle:kt,getAccTitle:yt,getAccDescription:Tt,setAccDescription:Ft,getConfig:u(()=>D().class,"getConfig"),addClass:K,bindFunctions:Xt,clear:xt,getClass:It,getClasses:Ot,getNotes:Vt,addAnnotation:Rt,addNote:Gt,getRelations:wt,addRelation:Pt,getDirection:pt,setDirection:Ht,addMember:ct,addMembers:Mt,cleanupLabel:Ut,lineType:qt,relationType:w,setClickEvent:Qt,setCssClass:We,defineClass:zt,setLink:jt,getTooltip:Yt,setTooltip:Kt,lookUpDomId:ot,setDiagramTitle:Dt,getDiagramTitle:_t,setClassLabel:Lt,addNamespace:Jt,addClassesToNamespace:es,getNamespace:Zt,getNamespaces:$t,setCssStyle:ts,getData:ss},is=u(e=>`g.classGroup text { + fill: ${e.nodeBorder||e.classText}; + stroke: none; + font-family: ${e.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${e.classText}; +} +.edgeLabel .label rect { + fill: ${e.mainBkg}; +} +.label text { + fill: ${e.classText}; +} + +.labelBkg { + background: ${e.mainBkg}; +} +.edgeLabel .label span { + background: ${e.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; +} + +g.classGroup line { + stroke: ${e.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${e.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${e.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${e.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${e.lineColor} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${e.mainBkg} !important; + stroke: ${e.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; +} +`,"getStyles"),hs=is,ns=u((e,i="TB")=>{if(!e.doc)return i;let a=i;for(const l of e.doc)l.stmt==="dir"&&(a=l.value);return a},"getDir"),as=u(function(e,i){return i.db.getClasses()},"getClasses"),rs=u(async function(e,i,a,l){ze.info("REF0:"),ze.info("Drawing class diagram (v3)",i);const{securityLevel:c,state:r,layout:A}=D(),f=l.db.getData(),T=mt(i,c);f.type=l.type,f.layoutAlgorithm=vt(A),f.nodeSpacing=(r==null?void 0:r.nodeSpacing)||50,f.rankSpacing=(r==null?void 0:r.rankSpacing)||50,f.markers=["aggregation","extension","composition","dependency","lollipop"],f.diagramId=i,await Nt(f,T);const S=8;Qe.insertTitle(T,"classDiagramTitleText",(r==null?void 0:r.titleTopMargin)??25,l.db.getDiagramTitle()),Et(T,S,"classDiagram",(r==null?void 0:r.useMaxWidth)??!0)},"draw"),ps={getClasses:as,draw:rs,getDir:ns};export{cs as a,ps as b,os as c,hs as s}; diff --git a/assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js b/assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js new file mode 100644 index 00000000..d6581f51 --- /dev/null +++ b/assets/chunks/chunk-TMUBEWPD.CkIL-JDd.js @@ -0,0 +1 @@ +import{_ as l}from"../app.BCWCbnje.js";function m(e,c){var i,t,o;e.accDescr&&((i=c.setAccDescription)==null||i.call(c,e.accDescr)),e.accTitle&&((t=c.setAccTitle)==null||t.call(c,e.accTitle)),e.title&&((o=c.setDiagramTitle)==null||o.call(c,e.title))}l(m,"populateCommonDb");export{m as p}; diff --git a/assets/chunks/classDiagram-LNE6IOMH.h79GeJ25.js b/assets/chunks/classDiagram-LNE6IOMH.h79GeJ25.js new file mode 100644 index 00000000..88cd0dc7 --- /dev/null +++ b/assets/chunks/classDiagram-LNE6IOMH.h79GeJ25.js @@ -0,0 +1 @@ +import{c as s,a as r,b as e,s as t}from"./chunk-T2TOU4HS.Cnzk0l7z.js";import{_ as l}from"../app.BCWCbnje.js";import"./chunk-5HRBRIJM.BLuRsvWo.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var p={parser:s,db:r,renderer:e,styles:t,init:l(a=>{a.class||(a.class={}),a.class.arrowMarkerAbsolute=a.arrowMarkerAbsolute,r.clear()},"init")};export{p as diagram}; diff --git a/assets/chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js b/assets/chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js new file mode 100644 index 00000000..88cd0dc7 --- /dev/null +++ b/assets/chunks/classDiagram-v2-MQ7JQ4JX.h79GeJ25.js @@ -0,0 +1 @@ +import{c as s,a as r,b as e,s as t}from"./chunk-T2TOU4HS.Cnzk0l7z.js";import{_ as l}from"../app.BCWCbnje.js";import"./chunk-5HRBRIJM.BLuRsvWo.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var p={parser:s,db:r,renderer:e,styles:t,init:l(a=>{a.class||(a.class={}),a.class.arrowMarkerAbsolute=a.arrowMarkerAbsolute,r.clear()},"init")};export{p as diagram}; diff --git a/assets/chunks/clone.BdpAoxvF.js b/assets/chunks/clone.BdpAoxvF.js new file mode 100644 index 00000000..7bac1760 --- /dev/null +++ b/assets/chunks/clone.BdpAoxvF.js @@ -0,0 +1 @@ +import{b as r}from"./baseUniq.CLqXXsun.js";var e=4;function a(o){return r(o,e)}export{a as c}; diff --git a/assets/chunks/cytoscape.esm.FpOb6hff.js b/assets/chunks/cytoscape.esm.FpOb6hff.js new file mode 100644 index 00000000..e2ff6b7d --- /dev/null +++ b/assets/chunks/cytoscape.esm.FpOb6hff.js @@ -0,0 +1,16 @@ +function Ue(r){"@babel/helpers - typeof";return Ue=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ue(r)}function ii(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}function Hu(r,e){for(var t=0;tr.length)&&(e=r.length);for(var t=0,a=new Array(e);t=r.length?{done:!0}:{done:!1,value:r[a++]}},e:function(l){throw l},f:n}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var i=!0,s=!1,o;return{s:function(){t=t.call(r)},n:function(){var l=t.next();return i=l.done,l},e:function(l){s=!0,o=l},f:function(){try{!i&&t.return!=null&&t.return()}finally{if(s)throw o}}}}var Ke=typeof window>"u"?null:window,Oi=Ke?Ke.navigator:null;Ke&&Ke.document;var Uu=Ue(""),Qs=Ue({}),Yu=Ue(function(){}),Xu=typeof HTMLElement>"u"?"undefined":Ue(HTMLElement),wa=function(e){return e&&e.instanceString&&qe(e.instanceString)?e.instanceString():null},ce=function(e){return e!=null&&Ue(e)==Uu},qe=function(e){return e!=null&&Ue(e)===Yu},Oe=function(e){return!yr(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},Te=function(e){return e!=null&&Ue(e)===Qs&&!Oe(e)&&e.constructor===Object},Zu=function(e){return e!=null&&Ue(e)===Qs},ne=function(e){return e!=null&&Ue(e)===Ue(1)&&!isNaN(e)},Qu=function(e){return ne(e)&&Math.floor(e)===e},_a=function(e){if(Xu!=="undefined")return e!=null&&e instanceof HTMLElement},yr=function(e){return xa(e)||Js(e)},xa=function(e){return wa(e)==="collection"&&e._private.single},Js=function(e){return wa(e)==="collection"&&!e._private.single},oi=function(e){return wa(e)==="core"},_s=function(e){return wa(e)==="stylesheet"},Ju=function(e){return wa(e)==="event"},jr=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},_u=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},ju=function(e){return Te(e)&&ne(e.x1)&&ne(e.x2)&&ne(e.y1)&&ne(e.y2)},el=function(e){return Zu(e)&&qe(e.then)},rl=function(){return Oi&&Oi.userAgent.match(/msie|trident|edge/i)},la=function(e,t){t||(t=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var i=[],s=0;st?1:0},ul=function(e,t){return-1*eo(e,t)},pe=Object.assign!=null?Object.assign.bind(Object):function(r){for(var e=arguments,t=1;t1&&(p-=1),p<1/6?d+(y-d)*6*p:p<1/2?y:p<2/3?d+(y-d)*(2/3-p)*6:d}var f=new RegExp("^"+nl+"$").exec(e);if(f){if(a=parseInt(f[1]),a<0?a=(360- -1*a%360)%360:a>360&&(a=a%360),a/=360,n=parseFloat(f[2]),n<0||n>100||(n=n/100,i=parseFloat(f[3]),i<0||i>100)||(i=i/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(n===0)o=l=u=Math.round(i*255);else{var c=i<.5?i*(1+n):i+n-i*n,h=2*i-c;o=Math.round(255*v(h,c,a+1/3)),l=Math.round(255*v(h,c,a)),u=Math.round(255*v(h,c,a-1/3))}t=[o,l,u,s]}return t},fl=function(e){var t,a=new RegExp("^"+tl+"$").exec(e);if(a){t=[];for(var n=[],i=1;i<=3;i++){var s=a[i];if(s[s.length-1]==="%"&&(n[i]=!0),s=parseFloat(s),n[i]&&(s=s/100*255),s<0||s>255)return;t.push(Math.floor(s))}var o=n[1]||n[2]||n[3],l=n[1]&&n[2]&&n[3];if(o&&!l)return;var u=a[4];if(u!==void 0){if(u=parseFloat(u),u<0||u>1)return;t.push(u)}}return t},cl=function(e){return hl[e.toLowerCase()]},dl=function(e){return(Oe(e)?e:null)||cl(e)||ll(e)||fl(e)||vl(e)},hl={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]},ro=function(e){for(var t=e.map,a=e.keys,n=a.length,i=0;i=e||x<0||f&&D>=i}function g(){var E=Mn();if(p(E))return m(E);o=setTimeout(g,y(E))}function m(E){return o=void 0,c&&a?h(E):(a=n=void 0,s)}function b(){o!==void 0&&clearTimeout(o),u=0,a=l=n=o=void 0}function w(){return o===void 0?s:m(Mn())}function S(){var E=Mn(),x=p(E);if(a=arguments,n=this,l=E,x){if(o===void 0)return d(l);if(f)return clearTimeout(o),o=setTimeout(g,e),h(l)}return o===void 0&&(o=setTimeout(g,e)),s}return S.cancel=b,S.flush=w,S}var cn=_l,Ln=Ke?Ke.performance:null,io=Ln&&Ln.now?function(){return Ln.now()}:function(){return Date.now()},jl=function(){if(Ke){if(Ke.requestAnimationFrame)return function(r){Ke.requestAnimationFrame(r)};if(Ke.mozRequestAnimationFrame)return function(r){Ke.mozRequestAnimationFrame(r)};if(Ke.webkitRequestAnimationFrame)return function(r){Ke.webkitRequestAnimationFrame(r)};if(Ke.msRequestAnimationFrame)return function(r){Ke.msRequestAnimationFrame(r)}}return function(r){r&&setTimeout(function(){r(io())},1e3/60)}}(),ja=function(e){return jl(e)},Hr=io,kt=9261,so=65599,aa=5381,oo=function(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kt,a=t,n;n=e.next(),!n.done;)a=a*so+n.value|0;return a},va=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:kt;return t*so+e|0},fa=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:aa;return(t<<5)+t+e|0},ev=function(e,t){return e*2097152+t},Yr=function(e){return e[0]*2097152+e[1]},La=function(e,t){return[va(e[0],t[0]),fa(e[1],t[1])]},rv=function(e,t){var a={value:0,done:!1},n=0,i=e.length,s={next:function(){return n=0;n--)e[n]===t&&e.splice(n,1)},fi=function(e){e.splice(0,e.length)},uv=function(e,t){for(var a=0;a"u"?"undefined":Ue(Set))!==vv?Set:fv,dn=function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||t===void 0||!oi(e)){$e("An element must have a core reference and parameters set");return}var n=t.group;if(n==null&&(t.data&&t.data.source!=null&&t.data.target!=null?n="edges":n="nodes"),n!=="nodes"&&n!=="edges"){$e("An element must be of type `nodes` or `edges`; you specified `"+n+"`");return}this.length=1,this[0]=this;var i=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:n,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:t.selectable===void 0?!0:!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:t.grabbable===void 0?!0:!!t.grabbable,pannable:t.pannable===void 0?n==="edges":!!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(i.position.x==null&&(i.position.x=0),i.position.y==null&&(i.position.y=0),t.renderedPosition){var s=t.renderedPosition,o=e.pan(),l=e.zoom();i.position={x:(s.x-o.x)/l,y:(s.y-o.y)/l}}var u=[];Oe(t.classes)?u=t.classes:ce(t.classes)&&(u=t.classes.split(/\s+/));for(var v=0,f=u.length;vm?1:0},v=function(g,m,b,w,S){var E;if(b==null&&(b=0),S==null&&(S=a),b<0)throw new Error("lo must be non-negative");for(w==null&&(w=g.length);bM;0<=M?C++:C--)D.push(C);return D}).apply(this).reverse(),x=[],w=0,S=E.length;wP;0<=P?++D:--D)B.push(s(g,b));return B},y=function(g,m,b,w){var S,E,x;for(w==null&&(w=a),S=g[b];b>m;){if(x=b-1>>1,E=g[x],w(S,E)<0){g[b]=E,b=x;continue}break}return g[b]=S},p=function(g,m,b){var w,S,E,x,D;for(b==null&&(b=a),S=g.length,D=m,E=g[m],w=2*m+1;w0;){var E=m.pop(),x=p(E),D=E.id();if(c[D]=x,x!==1/0)for(var C=E.neighborhood().intersect(d),M=0;M0)for(I.unshift(R);f[G];){var F=f[G];I.unshift(F.edge),I.unshift(F.node),V=F.node,G=V.id()}return o.spawn(I)}}}},gv={kruskal:function(e){e=e||function(b){return 1};for(var t=this.byGroup(),a=t.nodes,n=t.edges,i=a.length,s=new Array(i),o=a,l=function(w){for(var S=0;S0;){if(S(),x++,w===v){for(var D=[],C=i,M=v,P=g[M];D.unshift(C),P!=null&&D.unshift(P),C=p[M],C!=null;)M=C.id(),P=g[M];return{found:!0,distance:f[w],path:this.spawn(D),steps:x}}h[w]=!0;for(var B=b._private.edges,L=0;LP&&(d[M]=P,m[M]=C,b[M]=S),!i){var B=C*v+D;!i&&d[B]>P&&(d[B]=P,m[B]=D,b[B]=S)}}}for(var L=0;L1&&arguments[1]!==void 0?arguments[1]:s,Le=b(oe),Ce=[],xe=Le;;){if(xe==null)return t.spawn();var Ae=m(xe),Ee=Ae.edge,Pe=Ae.pred;if(Ce.unshift(xe[0]),xe.same(de)&&Ce.length>0)break;Ee!=null&&Ce.unshift(Ee),xe=Pe}return l.spawn(Ce)},E=0;E=0;v--){var f=u[v],c=f[1],h=f[2];(t[c]===o&&t[h]===l||t[c]===l&&t[h]===o)&&u.splice(v,1)}for(var d=0;dn;){var i=Math.floor(Math.random()*t.length);t=Cv(i,e,t),a--}return t},Sv={kargerStein:function(){var e=this,t=this.byGroup(),a=t.nodes,n=t.edges;n.unmergeBy(function(I){return I.isLoop()});var i=a.length,s=n.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),l=Math.floor(i/Ev);if(i<2){$e("At least 2 nodes are required for Karger-Stein algorithm");return}for(var u=[],v=0;v1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=1/0,i=t;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=-1/0,i=t;i1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=0,i=0,s=t;s1&&arguments[1]!==void 0?arguments[1]:0,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;n?e=e.slice(t,a):(a0&&e.splice(0,t));for(var o=0,l=e.length-1;l>=0;l--){var u=e[l];s?isFinite(u)||(e[l]=-1/0,o++):e.splice(l,1)}i&&e.sort(function(c,h){return c-h});var v=e.length,f=Math.floor(v/2);return v%2!==0?e[f+1+o]:(e[f-1+o]+e[f+o])/2},Mv=function(e){return Math.PI*e/180},Aa=function(e,t){return Math.atan2(t,e)-Math.PI/2},ci=Math.log2||function(r){return Math.log(r)/Math.log(2)},go=function(e){return e>0?1:e<0?-1:0},ht=function(e,t){return Math.sqrt(ot(e,t))},ot=function(e,t){var a=t.x-e.x,n=t.y-e.y;return a*a+n*n},Lv=function(e){for(var t=e.length,a=0,n=0;n=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(e.w!=null&&e.h!=null&&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}}},Rv=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},Ov=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},Iv=function(e,t,a){return{x1:e.x1+t,x2:e.x2+t,y1:e.y1+a,y2:e.y2+a,w:e.w,h:e.h}},po=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},zv=function(e,t,a){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,a),e.y2=Math.max(e.y2,a),e.h=e.y2-e.y1},Ga=function(e){var t=arguments.length>1&&arguments[1]!==void 0?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},Ka=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],a,n,i,s;if(t.length===1)a=n=i=s=t[0];else if(t.length===2)a=i=t[0],s=n=t[1];else if(t.length===4){var o=Tr(t,4);a=o[0],n=o[1],i=o[2],s=o[3]}return e.x1-=s,e.x2+=n,e.y1-=a,e.y2+=i,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},Hi=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},di=function(e,t){return!(e.x1>t.x2||t.x1>e.x2||e.x2t.y2||t.y1>e.y2)},It=function(e,t,a){return e.x1<=t&&t<=e.x2&&e.y1<=a&&a<=e.y2},Nv=function(e,t){return It(e,t.x,t.y)},yo=function(e,t){return It(e,t.x1,t.y1)&&It(e,t.x2,t.y2)},mo=function(e,t,a,n,i,s,o){var l=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",u=l==="auto"?gt(i,s):l,v=i/2,f=s/2;u=Math.min(u,v,f);var c=u!==v,h=u!==f,d;if(c){var y=a-v+u-o,p=n-f-o,g=a+v-u+o,m=p;if(d=Qr(e,t,a,n,y,p,g,m,!1),d.length>0)return d}if(h){var b=a+v+o,w=n-f+u-o,S=b,E=n+f-u+o;if(d=Qr(e,t,a,n,b,w,S,E,!1),d.length>0)return d}if(c){var x=a-v+u-o,D=n+f+o,C=a+v-u+o,M=D;if(d=Qr(e,t,a,n,x,D,C,M,!1),d.length>0)return d}if(h){var P=a-v-o,B=n-f+u-o,L=P,k=n+f-u+o;if(d=Qr(e,t,a,n,P,B,L,k,!1),d.length>0)return d}var O;{var A=a-v+u,R=n-f+u;if(O=na(e,t,a,n,A,R,u+o),O.length>0&&O[0]<=A&&O[1]<=R)return[O[0],O[1]]}{var I=a+v-u,V=n-f+u;if(O=na(e,t,a,n,I,V,u+o),O.length>0&&O[0]>=I&&O[1]<=V)return[O[0],O[1]]}{var G=a+v-u,F=n+f-u;if(O=na(e,t,a,n,G,F,u+o),O.length>0&&O[0]>=G&&O[1]>=F)return[O[0],O[1]]}{var q=a-v+u,Y=n+f-u;if(O=na(e,t,a,n,q,Y,u+o),O.length>0&&O[0]<=q&&O[1]>=Y)return[O[0],O[1]]}return[]},Fv=function(e,t,a,n,i,s,o){var l=o,u=Math.min(a,i),v=Math.max(a,i),f=Math.min(n,s),c=Math.max(n,s);return u-l<=e&&e<=v+l&&f-l<=t&&t<=c+l},Vv=function(e,t,a,n,i,s,o,l,u){var v={x1:Math.min(a,o,i)-u,x2:Math.max(a,o,i)+u,y1:Math.min(n,l,s)-u,y2:Math.max(n,l,s)+u};return!(ev.x2||tv.y2)},qv=function(e,t,a,n){a-=n;var i=t*t-4*e*a;if(i<0)return[];var s=Math.sqrt(i),o=2*e,l=(-t+s)/o,u=(-t-s)/o;return[l,u]},$v=function(e,t,a,n,i){var s=1e-5;e===0&&(e=s),t/=e,a/=e,n/=e;var o,l,u,v,f,c,h,d;if(l=(3*a-t*t)/9,u=-(27*n)+t*(9*a-2*(t*t)),u/=54,o=l*l*l+u*u,i[1]=0,h=t/3,o>0){f=u+Math.sqrt(o),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),c=u-Math.sqrt(o),c=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-h+f+c,h+=(f+c)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-c+f)/2,i[3]=h,i[5]=-h;return}if(i[5]=i[3]=0,o===0){d=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3),i[0]=-h+2*d,i[4]=i[2]=-(d+h);return}l=-l,v=l*l*l,v=Math.acos(u/Math.sqrt(v)),d=2*Math.sqrt(l),i[0]=-h+d*Math.cos(v/3),i[2]=-h+d*Math.cos((v+2*Math.PI)/3),i[4]=-h+d*Math.cos((v+4*Math.PI)/3)},Hv=function(e,t,a,n,i,s,o,l){var u=1*a*a-4*a*i+2*a*o+4*i*i-4*i*o+o*o+n*n-4*n*s+2*n*l+4*s*s-4*s*l+l*l,v=1*9*a*i-3*a*a-3*a*o-6*i*i+3*i*o+9*n*s-3*n*n-3*n*l-6*s*s+3*s*l,f=1*3*a*a-6*a*i+a*o-a*e+2*i*i+2*i*e-o*e+3*n*n-6*n*s+n*l-n*t+2*s*s+2*s*t-l*t,c=1*a*i-a*a+a*e-i*e+n*s-n*n+n*t-s*t,h=[];$v(u,v,f,c,h);for(var d=1e-7,y=[],p=0;p<6;p+=2)Math.abs(h[p+1])=0&&h[p]<=1&&y.push(h[p]);y.push(1),y.push(0);for(var g=-1,m,b,w,S=0;S=0?wu?(e-i)*(e-i)+(t-s)*(t-s):v-c},dr=function(e,t,a){for(var n,i,s,o,l,u=0,v=0;v=e&&e>=s||n<=e&&e<=s)l=(e-n)/(s-n)*(o-i)+i,l>t&&u++;else continue;return u%2!==0},Gr=function(e,t,a,n,i,s,o,l,u){var v=new Array(a.length),f;l[0]!=null?(f=Math.atan(l[1]/l[0]),l[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=l;for(var c=Math.cos(-f),h=Math.sin(-f),d=0;d0){var p=tn(v,-u);y=rn(p)}else y=v;return dr(e,t,y)},Kv=function(e,t,a,n,i,s,o,l){for(var u=new Array(a.length*2),v=0;v=0&&p<=1&&m.push(p),g>=0&&g<=1&&m.push(g),m.length===0)return[];var b=m[0]*l[0]+e,w=m[0]*l[1]+t;if(m.length>1){if(m[0]==m[1])return[b,w];var S=m[1]*l[0]+e,E=m[1]*l[1]+t;return[b,w,S,E]}else return[b,w]},Rn=function(e,t,a){return t<=e&&e<=a||a<=e&&e<=t?e:e<=t&&t<=a||a<=t&&t<=e?t:a},Qr=function(e,t,a,n,i,s,o,l,u){var v=e-i,f=a-e,c=o-i,h=t-s,d=n-t,y=l-s,p=c*h-y*v,g=f*h-d*v,m=y*f-c*d;if(m!==0){var b=p/m,w=g/m,S=.001,E=0-S,x=1+S;return E<=b&&b<=x&&E<=w&&w<=x?[e+b*f,t+b*d]:u?[e+b*f,t+b*d]:[]}else return p===0||g===0?Rn(e,a,o)===o?[o,l]:Rn(e,a,i)===i?[i,s]:Rn(i,o,a)===a?[a,n]:[]:[]},ha=function(e,t,a,n,i,s,o,l){var u=[],v,f=new Array(a.length),c=!0;s==null&&(c=!1);var h;if(c){for(var d=0;d0){var y=tn(f,-l);h=rn(y)}else h=f}else h=a;for(var p,g,m,b,w=0;w2){for(var d=[v[0],v[1]],y=Math.pow(d[0]-e,2)+Math.pow(d[1]-t,2),p=1;pv&&(v=w)},get:function(b){return u[b]}},c=0;c0?A=O.edgesTo(k)[0]:A=k.edgesTo(O)[0];var R=n(A);k=k.id(),D[k]>D[B]+R&&(D[k]=D[B]+R,C.nodes.indexOf(k)<0?C.push(k):C.updateItem(k),x[k]=0,E[k]=[]),D[k]==D[B]+R&&(x[k]=x[k]+x[B],E[k].push(B))}else for(var I=0;I0;){for(var q=S.pop(),Y=0;Y0&&o.push(a[l]);o.length!==0&&i.push(n.collection(o))}return i},of=function(e,t){for(var a=0;a5&&arguments[5]!==void 0?arguments[5]:vf,o=n,l,u,v=0;v=2?_t(e,t,a,0,Yi,ff):_t(e,t,a,0,Ui)},squaredEuclidean:function(e,t,a){return _t(e,t,a,0,Yi)},manhattan:function(e,t,a){return _t(e,t,a,0,Ui)},max:function(e,t,a){return _t(e,t,a,-1/0,cf)}};zt["squared-euclidean"]=zt.squaredEuclidean;zt.squaredeuclidean=zt.squaredEuclidean;function gn(r,e,t,a,n,i){var s;return qe(r)?s=r:s=zt[r]||zt.euclidean,e===0&&qe(r)?s(n,i):s(e,t,a,n,i)}var df=rr({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),gi=function(e){return df(e)},an=function(e,t,a,n,i){var s=i!=="kMedoids",o=s?function(f){return a[f]}:function(f){return n[f](a)},l=function(c){return n[c](t)},u=a,v=t;return gn(e,n.length,o,l,u,v)},On=function(e,t,a){for(var n=a.length,i=new Array(n),s=new Array(n),o=new Array(t),l=null,u=0;ua)return!1}return!0},pf=function(e,t,a){for(var n=0;no&&(o=t[u][v],l=v);i[l].push(e[u])}for(var f=0;f=i.threshold||i.mode==="dendrogram"&&e.length===1)return!1;var d=t[s],y=t[n[s]],p;i.mode==="dendrogram"?p={left:d,right:y,key:d.key}:p={value:d.value.concat(y.value),key:d.key},e[d.index]=p,e.splice(y.index,1),t[d.key]=p;for(var g=0;ga[y.key][m.key]&&(l=a[y.key][m.key])):i.linkage==="max"?(l=a[d.key][m.key],a[d.key][m.key]0&&n.push(i);return n},ji=function(e,t,a){for(var n=[],i=0;io&&(s=u,o=t[i*e+u])}s>0&&n.push(s)}for(var v=0;vu&&(l=v,u=f)}a[i]=s[l]}return n=ji(e,t,a),n},es=function(e){for(var t=this.cy(),a=this.nodes(),n=Mf(e),i={},s=0;s=P?(B=P,P=k,L=O):k>B&&(B=k);for(var A=0;A0?1:0;x[C%n.minIterations*o+q]=Y,F+=Y}if(F>0&&(C>=n.minIterations-1||C==n.maxIterations-1)){for(var Q=0,J=0;J1||E>1)&&(o=!0),f[b]=[],m.outgoers().forEach(function(D){D.isEdge()&&f[b].push(D.id())})}else c[b]=[void 0,m.target().id()]}):s.forEach(function(m){var b=m.id();if(m.isNode()){var w=m.degree(!0);w%2&&(l?u?o=!0:u=b:l=b),f[b]=[],m.connectedEdges().forEach(function(S){return f[b].push(S.id())})}else c[b]=[m.source().id(),m.target().id()]});var h={found:!1,trail:void 0};if(o)return h;if(u&&l)if(i){if(v&&u!=v)return h;v=u}else{if(v&&u!=v&&l!=v)return h;v||(v=u)}else v||(v=s[0].id());var d=function(b){for(var w=b,S=[b],E,x,D;f[w].length;)E=f[w].shift(),x=c[E][0],D=c[E][1],w!=D?(f[D]=f[D].filter(function(C){return C!=E}),w=D):!i&&w!=x&&(f[x]=f[x].filter(function(C){return C!=E}),w=x),S.unshift(E),S.unshift(w);return S},y=[],p=[];for(p=d(v);p.length!=1;)f[p[0]].length==0?(y.unshift(s.getElementById(p.shift())),y.unshift(s.getElementById(p.shift()))):p=d(p.shift()).concat(p);y.unshift(s.getElementById(p.shift()));for(var g in f)if(f[g].length)return h;return h.found=!0,h.trail=this.spawn(y,!0),h}},Ia=function(){var e=this,t={},a=0,n=0,i=[],s=[],o={},l=function(c,h){for(var d=s.length-1,y=[],p=e.spawn();s[d].x!=c||s[d].y!=h;)y.push(s.pop().edge),d--;y.push(s.pop().edge),y.forEach(function(g){var m=g.connectedNodes().intersection(e);p.merge(g),m.forEach(function(b){var w=b.id(),S=b.connectedEdges().intersection(e);p.merge(b),t[w].cutVertex?p.merge(S.filter(function(E){return E.isLoop()})):p.merge(S)})}),i.push(p)},u=function f(c,h,d){c===d&&(n+=1),t[h]={id:a,low:a++,cutVertex:!1};var y=e.getElementById(h).connectedEdges().intersection(e);if(y.size()===0)i.push(e.spawn(e.getElementById(h)));else{var p,g,m,b;y.forEach(function(w){p=w.source().id(),g=w.target().id(),m=p===h?g:p,m!==d&&(b=w.id(),o[b]||(o[b]=!0,s.push({x:h,y:m,edge:w})),m in t?t[h].low=Math.min(t[h].low,t[m].id):(f(c,m,h),t[h].low=Math.min(t[h].low,t[m].low),t[h].id<=t[m].low&&(t[h].cutVertex=!0,l(h,m))))})}};e.forEach(function(f){if(f.isNode()){var c=f.id();c in t||(n=0,u(c,c),t[c].cutVertex=n>1)}});var v=Object.keys(t).filter(function(f){return t[f].cutVertex}).map(function(f){return e.getElementById(f)});return{cut:e.spawn(v),components:i}},Ff={hopcroftTarjanBiconnected:Ia,htbc:Ia,htb:Ia,hopcroftTarjanBiconnectedComponents:Ia},za=function(){var e=this,t={},a=0,n=[],i=[],s=e.spawn(e),o=function l(u){i.push(u),t[u]={index:a,low:a++,explored:!1};var v=e.getElementById(u).connectedEdges().intersection(e);if(v.forEach(function(y){var p=y.target().id();p!==u&&(p in t||l(p),t[p].explored||(t[u].low=Math.min(t[u].low,t[p].low)))}),t[u].index===t[u].low){for(var f=e.spawn();;){var c=i.pop();if(f.merge(e.getElementById(c)),t[c].low=t[u].index,t[c].explored=!0,c===u)break}var h=f.edgesWith(f),d=f.merge(h);n.push(d),s=s.difference(d)}};return e.forEach(function(l){if(l.isNode()){var u=l.id();u in t||o(u)}}),{cut:s,components:n}},Vf={tarjanStronglyConnected:za,tsc:za,tscc:za,tarjanStronglyConnectedComponents:za},To={};[ca,hv,gv,yv,bv,xv,Sv,Zv,Lt,At,Wn,lf,Ef,Pf,If,Nf,Ff,Vf].forEach(function(r){pe(To,r)});/*! +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) +*/var Do=0,ko=1,Po=2,Kr=function r(e){if(!(this instanceof r))return new r(e);this.id="Thenable/1.0.7",this.state=Do,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};Kr.prototype={fulfill:function(e){return rs(this,ko,"fulfillValue",e)},reject:function(e){return rs(this,Po,"rejectReason",e)},then:function(e,t){var a=this,n=new Kr;return a.onFulfilled.push(as(e,n,"fulfill")),a.onRejected.push(as(t,n,"reject")),Bo(a),n.proxy}};var rs=function(e,t,a,n){return e.state===Do&&(e.state=t,e[a]=n,Bo(e)),e},Bo=function(e){e.state===ko?ts(e,"onFulfilled",e.fulfillValue):e.state===Po&&ts(e,"onRejected",e.rejectReason)},ts=function(e,t,a){if(e[t].length!==0){var n=e[t];e[t]=[];var i=function(){for(var o=0;o0}},clearQueue:function(){return function(){var t=this,a=t.length!==void 0,n=a?t:[t],i=this._private.cy||this;if(!i.styleEnabled())return this;for(var s=0;s-1}var Uc=Wc;function Yc(r,e){var t=this.__data__,a=yn(t,r);return a<0?(++this.size,t.push([r,e])):t[a][1]=e,this}var Xc=Yc;function Ht(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e-1&&r%1==0&&r0&&this.spawn(n).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return t!=null&&t._private.classes.has(e)},toggleClass:function(e,t){Oe(e)||(e=e.match(/\S+/g)||[]);for(var a=this,n=t===void 0,i=[],s=0,o=a.length;s0&&this.spawn(i).updateStyle().emit("class"),a},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var a=this;if(t==null)t=250;else if(t===0)return a;return a.addClass(e),setTimeout(function(){a.removeClass(e)},t),a}};Wa.className=Wa.classNames=Wa.classes;var Se={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:We,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Se.variable="(?:[\\w-.]|(?:\\\\"+Se.metaChar+"))+";Se.className="(?:[\\w-]|(?:\\\\"+Se.metaChar+"))+";Se.value=Se.string+"|"+Se.number;Se.id=Se.variable;(function(){var r,e,t;for(r=Se.comparatorOp.split("|"),t=0;t=0)&&e!=="="&&(Se.comparatorOp+="|\\!"+e)})();var Re=function(){return{checks:[]}},ue={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},Yn=[{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(r,e){return ul(r.selector,e.selector)}),_d=function(){for(var r={},e,t=0;t0&&v.edgeCount>0)return Me("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(v.edgeCount>1)return Me("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;v.edgeCount===1&&Me("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},nh=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(v){return v??""},t=function(v){return ce(v)?'"'+v+'"':e(v)},a=function(v){return" "+v+" "},n=function(v,f){var c=v.type,h=v.value;switch(c){case ue.GROUP:{var d=e(h);return d.substring(0,d.length-1)}case ue.DATA_COMPARE:{var y=v.field,p=v.operator;return"["+y+a(e(p))+t(h)+"]"}case ue.DATA_BOOL:{var g=v.operator,m=v.field;return"["+e(g)+m+"]"}case ue.DATA_EXIST:{var b=v.field;return"["+b+"]"}case ue.META_COMPARE:{var w=v.operator,S=v.field;return"[["+S+a(e(w))+t(h)+"]]"}case ue.STATE:return h;case ue.ID:return"#"+h;case ue.CLASS:return"."+h;case ue.PARENT:case ue.CHILD:return i(v.parent,f)+a(">")+i(v.child,f);case ue.ANCESTOR:case ue.DESCENDANT:return i(v.ancestor,f)+" "+i(v.descendant,f);case ue.COMPOUND_SPLIT:{var E=i(v.left,f),x=i(v.subject,f),D=i(v.right,f);return E+(E.length>0?" ":"")+x+D}case ue.TRUE:return""}},i=function(v,f){return v.checks.reduce(function(c,h,d){return c+(f===v&&d===0?"$":"")+n(h,f)},"")},s="",o=0;o1&&o=0&&(t=t.replace("!",""),f=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),v=!0),(i||o||v)&&(l=!i&&!s?"":""+e,u=""+a),v&&(e=l=l.toLowerCase(),a=u=u.toLowerCase()),t){case"*=":n=l.indexOf(u)>=0;break;case"$=":n=l.indexOf(u,l.length-u.length)>=0;break;case"^=":n=l.indexOf(u)===0;break;case"=":n=e===a;break;case">":c=!0,n=e>a;break;case">=":c=!0,n=e>=a;break;case"<":c=!0,n=e0;){var v=n.shift();e(v),i.add(v.id()),o&&a(n,i,v)}return r}function Fo(r,e,t){if(t.isParent())for(var a=t._private.children,n=0;n1&&arguments[1]!==void 0?arguments[1]:!0;return wi(this,r,e,Fo)};function Vo(r,e,t){if(t.isChild()){var a=t._private.parent;e.has(a.id())||r.push(a)}}Nt.forEachUp=function(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return wi(this,r,e,Vo)};function ch(r,e,t){Vo(r,e,t),Fo(r,e,t)}Nt.forEachUpAndDown=function(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return wi(this,r,e,ch)};Nt.ancestors=Nt.parents;var pa,qo;pa=qo={data:Be.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:Be.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Be.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Be.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Be.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Be.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}};pa.attr=pa.data;pa.removeAttr=pa.removeData;var dh=qo,bn={};function zn(r){return function(e){var t=this;if(e===void 0&&(e=!0),t.length!==0)if(t.isNode()&&!t.removed()){for(var a=0,n=t[0],i=n._private.edges,s=0;se}),minIndegree:Et("indegree",function(r,e){return re}),minOutdegree:Et("outdegree",function(r,e){return re})});pe(bn,{totalDegree:function(e){for(var t=0,a=this.nodes(),n=0;n0,c=f;f&&(v=v[0]);var h=c?v.position():{x:0,y:0};t!==void 0?u.position(e,t+h[e]):i!==void 0&&u.position({x:i.x+h.x,y:i.y+h.y})}else{var d=a.position(),y=o?a.parent():null,p=y&&y.length>0,g=p;p&&(y=y[0]);var m=g?y.position():{x:0,y:0};return i={x:d.x-m.x,y:d.y-m.y},e===void 0?i:i[e]}else if(!s)return;return this}};Pr.modelPosition=Pr.point=Pr.position;Pr.modelPositions=Pr.points=Pr.positions;Pr.renderedPoint=Pr.renderedPosition;Pr.relativePoint=Pr.relativePosition;var hh=$o,Rt,nt;Rt=nt={};nt.renderedBoundingBox=function(r){var e=this.boundingBox(r),t=this.cy(),a=t.zoom(),n=t.pan(),i=e.x1*a+n.x,s=e.x2*a+n.x,o=e.y1*a+n.y,l=e.y2*a+n.y;return{x1:i,x2:s,y1:o,y2:l,w:s-i,h:l-o}};nt.dirtyCompoundBoundsCache=function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(t){if(t.isParent()){var a=t._private;a.compoundBoundsClean=!1,a.bbCache=null,r||t.emitAndNotify("bounds")}}),this)};nt.updateCompoundBounds=function(){var r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!r&&e.batching())return this;function t(s){if(!s.isParent())return;var o=s._private,l=s.children(),u=s.pstyle("compound-sizing-wrt-labels").value==="include",v={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=l.boundingBox({includeLabels:u,includeOverlays:!1,useCache:!1}),c=o.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=c.x-f.w/2,f.x2=c.x+f.w/2,f.y1=c.y-f.h/2,f.y2=c.y+f.h/2);function h(C,M,P){var B=0,L=0,k=M+P;return C>0&&k>0&&(B=M/k*C,L=P/k*C),{biasDiff:B,biasComplementDiff:L}}function d(C,M,P,B){if(P.units==="%")switch(B){case"width":return C>0?P.pfValue*C:0;case"height":return M>0?P.pfValue*M:0;case"average":return C>0&&M>0?P.pfValue*(C+M)/2:0;case"min":return C>0&&M>0?C>M?P.pfValue*M:P.pfValue*C:0;case"max":return C>0&&M>0?C>M?P.pfValue*C:P.pfValue*M:0;default:return 0}else return P.units==="px"?P.pfValue:0}var y=v.width.left.value;v.width.left.units==="px"&&v.width.val>0&&(y=y*100/v.width.val);var p=v.width.right.value;v.width.right.units==="px"&&v.width.val>0&&(p=p*100/v.width.val);var g=v.height.top.value;v.height.top.units==="px"&&v.height.val>0&&(g=g*100/v.height.val);var m=v.height.bottom.value;v.height.bottom.units==="px"&&v.height.val>0&&(m=m*100/v.height.val);var b=h(v.width.val-f.w,y,p),w=b.biasDiff,S=b.biasComplementDiff,E=h(v.height.val-f.h,g,m),x=E.biasDiff,D=E.biasComplementDiff;o.autoPadding=d(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(f.w,v.width.val),c.x=(-w+f.x1+f.x2+S)/2,o.autoHeight=Math.max(f.h,v.height.val),c.y=(-x+f.y1+f.y2+D)/2}for(var a=0;ae.x2?n:e.x2,e.y1=ae.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},ut=function(e,t){return t==null?e:Dr(e,t.x1,t.y1,t.x2,t.y2)},jt=function(e,t,a){return kr(e,t,a)},Na=function(e,t,a){if(!t.cy().headless()){var n=t._private,i=n.rstyle,s=i.arrowWidth/2,o=t.pstyle(a+"-arrow-shape").value,l,u;if(o!=="none"){a==="source"?(l=i.srcX,u=i.srcY):a==="target"?(l=i.tgtX,u=i.tgtY):(l=i.midX,u=i.midY);var v=n.arrowBounds=n.arrowBounds||{},f=v[a]=v[a]||{};f.x1=l-s,f.y1=u-s,f.x2=l+s,f.y2=u+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,Ga(f,1),Dr(e,f.x1,f.y1,f.x2,f.y2)}}},Nn=function(e,t,a){if(!t.cy().headless()){var n;a?n=a+"-":n="";var i=t._private,s=i.rstyle,o=t.pstyle(n+"label").strValue;if(o){var l=t.pstyle("text-halign"),u=t.pstyle("text-valign"),v=jt(s,"labelWidth",a),f=jt(s,"labelHeight",a),c=jt(s,"labelX",a),h=jt(s,"labelY",a),d=t.pstyle(n+"text-margin-x").pfValue,y=t.pstyle(n+"text-margin-y").pfValue,p=t.isEdge(),g=t.pstyle(n+"text-rotation"),m=t.pstyle("text-outline-width").pfValue,b=t.pstyle("text-border-width").pfValue,w=b/2,S=t.pstyle("text-background-padding").pfValue,E=2,x=f,D=v,C=D/2,M=x/2,P,B,L,k;if(p)P=c-C,B=c+C,L=h-M,k=h+M;else{switch(l.value){case"left":P=c-D,B=c;break;case"center":P=c-C,B=c+C;break;case"right":P=c,B=c+D;break}switch(u.value){case"top":L=h-x,k=h;break;case"center":L=h-M,k=h+M;break;case"bottom":L=h,k=h+x;break}}var O=d-Math.max(m,w)-S-E,A=d+Math.max(m,w)+S+E,R=y-Math.max(m,w)-S-E,I=y+Math.max(m,w)+S+E;P+=O,B+=A,L+=R,k+=I;var V=a||"main",G=i.labelBounds,F=G[V]=G[V]||{};F.x1=P,F.y1=L,F.x2=B,F.y2=k,F.w=B-P,F.h=k-L,F.leftPad=O,F.rightPad=A,F.topPad=R,F.botPad=I;var q=p&&g.strValue==="autorotate",Y=g.pfValue!=null&&g.pfValue!==0;if(q||Y){var Q=q?jt(i.rstyle,"labelAngle",a):g.pfValue,J=Math.cos(Q),_=Math.sin(Q),j=(P+B)/2,W=(L+k)/2;if(!p){switch(l.value){case"left":j=B;break;case"right":j=P;break}switch(u.value){case"top":W=k;break;case"bottom":W=L;break}}var z=function(le,oe){return le=le-j,oe=oe-W,{x:le*J-oe*_+j,y:le*_+oe*J+W}},K=z(P,L),X=z(P,k),ae=z(B,L),he=z(B,k);P=Math.min(K.x,X.x,ae.x,he.x),B=Math.max(K.x,X.x,ae.x,he.x),L=Math.min(K.y,X.y,ae.y,he.y),k=Math.max(K.y,X.y,ae.y,he.y)}var te=V+"Rot",re=G[te]=G[te]||{};re.x1=P,re.y1=L,re.x2=B,re.y2=k,re.w=B-P,re.h=k-L,Dr(e,P,L,B,k),Dr(i.labelBounds.all,P,L,B,k)}return e}},gh=function(e,t){if(!t.cy().headless()){var a=t.pstyle("outline-opacity").value,n=t.pstyle("outline-width").value;if(a>0&&n>0){var i=t.pstyle("outline-offset").value,s=t.pstyle("shape").value,o=n+i,l=(e.w+o*2)/e.w,u=(e.h+o*2)/e.h,v=0,f=0;["diamond","pentagon","round-triangle"].includes(s)?(l=(e.w+o*2.4)/e.w,f=-o/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?l=(e.w+o*2.4)/e.w:s==="star"?(l=(e.w+o*2.8)/e.w,u=(e.h+o*2.6)/e.h,f=-o/3.8):s==="triangle"?(l=(e.w+o*2.8)/e.w,u=(e.h+o*2.4)/e.h,f=-o/1.4):s==="vee"&&(l=(e.w+o*4.4)/e.w,u=(e.h+o*3.8)/e.h,f=-o*.5);var c=e.h*u-e.h,h=e.w*l-e.w;if(Ka(e,[Math.ceil(c/2),Math.ceil(h/2)]),v!=0||f!==0){var d=Iv(e,v,f);po(e,d)}}}},ph=function(e,t){var a=e._private.cy,n=a.styleEnabled(),i=a.headless(),s=hr(),o=e._private,l=e.isNode(),u=e.isEdge(),v,f,c,h,d,y,p=o.rstyle,g=l&&n?e.pstyle("bounds-expansion").pfValue:[0],m=function(ve){return ve.pstyle("display").value!=="none"},b=!n||m(e)&&(!u||m(e.source())&&m(e.target()));if(b){var w=0,S=0;n&&t.includeOverlays&&(w=e.pstyle("overlay-opacity").value,w!==0&&(S=e.pstyle("overlay-padding").value));var E=0,x=0;n&&t.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(x=e.pstyle("underlay-padding").value));var D=Math.max(S,x),C=0,M=0;if(n&&(C=e.pstyle("width").pfValue,M=C/2),l&&t.includeNodes){var P=e.position();d=P.x,y=P.y;var B=e.outerWidth(),L=B/2,k=e.outerHeight(),O=k/2;v=d-L,f=d+L,c=y-O,h=y+O,Dr(s,v,c,f,h),n&&t.includeOutlines&&gh(s,e)}else if(u&&t.includeEdges)if(n&&!i){var A=e.pstyle("curve-style").strValue;if(v=Math.min(p.srcX,p.midX,p.tgtX),f=Math.max(p.srcX,p.midX,p.tgtX),c=Math.min(p.srcY,p.midY,p.tgtY),h=Math.max(p.srcY,p.midY,p.tgtY),v-=M,f+=M,c-=M,h+=M,Dr(s,v,c,f,h),A==="haystack"){var R=p.haystackPts;if(R&&R.length===2){if(v=R[0].x,c=R[0].y,f=R[1].x,h=R[1].y,v>f){var I=v;v=f,f=I}if(c>h){var V=c;c=h,h=V}Dr(s,v-M,c-M,f+M,h+M)}}else if(A==="bezier"||A==="unbundled-bezier"||A.endsWith("segments")||A.endsWith("taxi")){var G;switch(A){case"bezier":case"unbundled-bezier":G=p.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":G=p.linePts;break}if(G!=null)for(var F=0;Ff){var j=v;v=f,f=j}if(c>h){var W=c;c=h,h=W}v-=M,f+=M,c-=M,h+=M,Dr(s,v,c,f,h)}if(n&&t.includeEdges&&u&&(Na(s,e,"mid-source"),Na(s,e,"mid-target"),Na(s,e,"source"),Na(s,e,"target")),n){var z=e.pstyle("ghost").value==="yes";if(z){var K=e.pstyle("ghost-offset-x").pfValue,X=e.pstyle("ghost-offset-y").pfValue;Dr(s,s.x1+K,s.y1+X,s.x2+K,s.y2+X)}}var ae=o.bodyBounds=o.bodyBounds||{};Hi(ae,s),Ka(ae,g),Ga(ae,1),n&&(v=s.x1,f=s.x2,c=s.y1,h=s.y2,Dr(s,v-D,c-D,f+D,h+D));var he=o.overlayBounds=o.overlayBounds||{};Hi(he,s),Ka(he,g),Ga(he,1);var te=o.labelBounds=o.labelBounds||{};te.all!=null?Ov(te.all):te.all=hr(),n&&t.includeLabels&&(t.includeMainLabels&&Nn(s,e,null),u&&(t.includeSourceLabels&&Nn(s,e,"source"),t.includeTargetLabels&&Nn(s,e,"target")))}return s.x1=xr(s.x1),s.y1=xr(s.y1),s.x2=xr(s.x2),s.y2=xr(s.y2),s.w=xr(s.x2-s.x1),s.h=xr(s.y2-s.y1),s.w>0&&s.h>0&&b&&(Ka(s,g),Ga(s,1)),s},Go=function(e){var t=0,a=function(s){return(s?1:0)<0&&arguments[0]!==void 0?arguments[0]:Lh,e=arguments.length>1?arguments[1]:void 0,t=0;t=0;o--)s(o);return this};at.removeAllListeners=function(){return this.removeListener("*")};at.emit=at.trigger=function(r,e,t){var a=this.listeners,n=a.length;return this.emitting++,Oe(e)||(e=[e]),Ah(this,function(i,s){t!=null&&(a=[{event:s.event,type:s.type,namespace:s.namespace,callback:t}],n=a.length);for(var o=function(v){var f=a[v];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===Mh)&&i.eventMatches(i.context,f,s)){var c=[s];e!=null&&uv(c,e),i.beforeEmit(i.context,f,s),f.conf&&f.conf.one&&(i.listeners=i.listeners.filter(function(y){return y!==f}));var h=i.callbackContext(i.context,f,s),d=f.callback.apply(h,c);i.afterEmit(i.context,f,s),d===!1&&(s.stopPropagation(),s.preventDefault())}},l=0;l1&&!s){var o=this.length-1,l=this[o],u=l._private.data.id;this[o]=void 0,this[e]=l,i.set(u,{ele:l,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,a=e._private.data.id,n=t.map,i=n.get(a);if(!i)return this;var s=i.index;return this.unmergeAt(s),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&ce(e)){var a=e;e=t.mutableElements().filter(a)}for(var n=0;n=0;t--){var a=this[t];e(a)&&this.unmergeAt(t)}return this},map:function(e,t){for(var a=[],n=this,i=0;ia&&(a=l,n=o)}return{value:a,ele:n}},min:function(e,t){for(var a=1/0,n,i=this,s=0;s=0&&i"u"?"undefined":Ue(Symbol))!=e&&Ue(Symbol.iterator)!=e;t&&(nn[Symbol.iterator]=function(){var a=this,n={value:void 0,done:!1},i=0,s=this.length;return Ys({next:function(){return i1&&arguments[1]!==void 0?arguments[1]:!0,a=this[0],n=a.cy();if(n.styleEnabled()&&a){this.cleanStyle();var i=a._private.style[e];return i??(t?n.style().getDefaultProperty(e):null)}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var a=t.pstyle(e);return a.pfValue!==void 0?a.pfValue:a.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled()&&t)return t.pstyle(e).units},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var a=this[0];if(a)return t.style().getRenderedStyle(a,e)},style:function(e,t){var a=this.cy();if(!a.styleEnabled())return this;var n=!1,i=a.style();if(Te(e)){var s=e;i.applyBypass(this,s,n),this.emitAndNotify("style")}else if(ce(e))if(t===void 0){var o=this[0];return o?i.getStylePropertyValue(o,e):void 0}else i.applyBypass(this,e,t,n),this.emitAndNotify("style");else if(e===void 0){var l=this[0];return l?i.getRawStyle(l):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var a=!1,n=t.style(),i=this;if(e===void 0)for(var s=0;s0&&e.push(v[0]),e.push(o[0])}return this.spawn(e,!0).filter(r)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});ir.neighbourhood=ir.neighborhood;ir.closedNeighbourhood=ir.closedNeighborhood;ir.openNeighbourhood=ir.openNeighborhood;pe(ir,{source:Er(function(e){var t=this[0],a;return t&&(a=t._private.source||t.cy().collection()),a&&e?a.filter(e):a},"source"),target:Er(function(e){var t=this[0],a;return t&&(a=t._private.target||t.cy().collection()),a&&e?a.filter(e):a},"target"),sources:ws({attr:"source"}),targets:ws({attr:"target"})});function ws(r){return function(t){for(var a=[],n=0;n0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}});ir.componentsOf=ir.components;var er=function(e,t){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){$e("A collection must have a reference to the core");return}var i=new Ir,s=!1;if(!t)t=[];else if(t.length>0&&Te(t[0])&&!xa(t[0])){s=!0;for(var o=[],l=new Vt,u=0,v=t.length;u0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t=this,a=t.cy(),n=a._private,i=[],s=[],o,l=0,u=t.length;l0){for(var V=o.length===t.length?t:new er(a,o),G=0;G0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,t=this,a=[],n={},i=t._private.cy;function s(k){for(var O=k._private.edges,A=0;A0&&(r?P.emitAndNotify("remove"):e&&P.emit("remove"));for(var B=0;B0?B=k:P=k;while(Math.abs(L)>s&&++O=i?m(M,O):A===0?O:w(M,P,P+u)}var E=!1;function x(){E=!0,(r!==e||t!==a)&&b()}var D=function(P){return E||x(),r===e&&t===a?P:P===0?0:P===1?1:p(S(P),e,a)};D.getControlPoints=function(){return[{x:r,y:e},{x:t,y:a}]};var C="generateBezier("+[r,e,t,a]+")";return D.toString=function(){return C},D}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var Gh=function(){function r(a){return-a.tension*a.x-a.friction*a.v}function e(a,n,i){var s={x:a.x+i.dx*n,v:a.v+i.dv*n,tension:a.tension,friction:a.friction};return{dx:s.v,dv:r(s)}}function t(a,n){var i={dx:a.v,dv:r(a)},s=e(a,n*.5,i),o=e(a,n*.5,s),l=e(a,n,o),u=1/6*(i.dx+2*(s.dx+o.dx)+l.dx),v=1/6*(i.dv+2*(s.dv+o.dv)+l.dv);return a.x=a.x+u*n,a.v=a.v+v*n,a}return function a(n,i,s){var o={x:-1,v:0,tension:null,friction:null},l=[0],u=0,v=1/1e4,f=16/1e3,c,h,d;for(n=parseFloat(n)||500,i=parseFloat(i)||20,s=s||null,o.tension=n,o.friction=i,c=s!==null,c?(u=a(n,i),h=u/s*f):h=f;d=t(d||o,h),l.push(1+d.x),u+=16,Math.abs(d.x)>v&&Math.abs(d.v)>v;);return c?function(y){return l[y*(l.length-1)|0]}:u}}(),ze=function(e,t,a,n){var i=Hh(e,t,a,n);return function(s,o,l){return s+(o-s)*i(l)}},Ya={linear:function(e,t,a){return e+(t-e)*a},ease:ze(.25,.1,.25,1),"ease-in":ze(.42,0,1,1),"ease-out":ze(0,0,.58,1),"ease-in-out":ze(.42,0,.58,1),"ease-in-sine":ze(.47,0,.745,.715),"ease-out-sine":ze(.39,.575,.565,1),"ease-in-out-sine":ze(.445,.05,.55,.95),"ease-in-quad":ze(.55,.085,.68,.53),"ease-out-quad":ze(.25,.46,.45,.94),"ease-in-out-quad":ze(.455,.03,.515,.955),"ease-in-cubic":ze(.55,.055,.675,.19),"ease-out-cubic":ze(.215,.61,.355,1),"ease-in-out-cubic":ze(.645,.045,.355,1),"ease-in-quart":ze(.895,.03,.685,.22),"ease-out-quart":ze(.165,.84,.44,1),"ease-in-out-quart":ze(.77,0,.175,1),"ease-in-quint":ze(.755,.05,.855,.06),"ease-out-quint":ze(.23,1,.32,1),"ease-in-out-quint":ze(.86,0,.07,1),"ease-in-expo":ze(.95,.05,.795,.035),"ease-out-expo":ze(.19,1,.22,1),"ease-in-out-expo":ze(1,0,0,1),"ease-in-circ":ze(.6,.04,.98,.335),"ease-out-circ":ze(.075,.82,.165,1),"ease-in-out-circ":ze(.785,.135,.15,.86),spring:function(e,t,a){if(a===0)return Ya.linear;var n=Gh(e,t,a);return function(i,s,o){return i+(s-i)*n(o)}},"cubic-bezier":ze};function Cs(r,e,t,a,n){if(a===1||e===t)return t;var i=n(e,t,a);return r==null||((r.roundValue||r.color)&&(i=Math.round(i)),r.min!==void 0&&(i=Math.max(i,r.min)),r.max!==void 0&&(i=Math.min(i,r.max))),i}function Ss(r,e){return r.pfValue!=null||r.value!=null?r.pfValue!=null&&(e==null||e.type.units!=="%")?r.pfValue:r.value:r}function Ct(r,e,t,a,n){var i=n!=null?n.type:null;t<0?t=0:t>1&&(t=1);var s=Ss(r,n),o=Ss(e,n);if(ne(s)&&ne(o))return Cs(i,s,o,t,a);if(Oe(s)&&Oe(o)){for(var l=[],u=0;u0?(h==="spring"&&d.push(s.duration),s.easingImpl=Ya[h].apply(null,d)):s.easingImpl=Ya[h]}var y=s.easingImpl,p;if(s.duration===0?p=1:p=(t-l)/s.duration,s.applying&&(p=s.progress),p<0?p=0:p>1&&(p=1),s.delay==null){var g=s.startPosition,m=s.position;if(m&&n&&!r.locked()){var b={};ra(g.x,m.x)&&(b.x=Ct(g.x,m.x,p,y)),ra(g.y,m.y)&&(b.y=Ct(g.y,m.y,p,y)),r.position(b)}var w=s.startPan,S=s.pan,E=i.pan,x=S!=null&&a;x&&(ra(w.x,S.x)&&(E.x=Ct(w.x,S.x,p,y)),ra(w.y,S.y)&&(E.y=Ct(w.y,S.y,p,y)),r.emit("pan"));var D=s.startZoom,C=s.zoom,M=C!=null&&a;M&&(ra(D,C)&&(i.zoom=da(i.minZoom,Ct(D,C,p,y),i.maxZoom)),r.emit("zoom")),(x||M)&&r.emit("viewport");var P=s.style;if(P&&P.length>0&&n){for(var B=0;B=0;x--){var D=E[x];D()}E.splice(0,E.length)},m=h.length-1;m>=0;m--){var b=h[m],w=b._private;if(w.stopped){h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,g(w.frames);continue}!w.playing&&!w.applying||(w.playing&&w.applying&&(w.applying=!1),w.started||Wh(v,b,r),Kh(v,b,r,f),w.applying&&(w.applying=!1),g(w.frames),w.step!=null&&w.step(r),b.completed()&&(h.splice(m,1),w.hooked=!1,w.playing=!1,w.started=!1,g(w.completes)),y=!0)}return!f&&h.length===0&&d.length===0&&a.push(v),y}for(var i=!1,s=0;s0?e.notify("draw",t):e.notify("draw")),t.unmerge(a),e.emit("step")}var Uh={animate:Be.animate(),animation:Be.animation(),animated:Be.animated(),clearQueue:Be.clearQueue(),delay:Be.delay(),delayAnimation:Be.delayAnimation(),stop:Be.stop(),addToAnimationPool:function(e){var t=this;t.styleEnabled()&&t._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function t(){e._private.animationsRunning&&ja(function(i){Ts(i,e),t()})}var a=e.renderer();a&&a.beforeRender?a.beforeRender(function(i,s){Ts(s,e)},a.beforeRenderPriorities.animations):t()}},Yh={qualifierCompare:function(e,t){return e==null||t==null?e==null&&t==null:e.sameText(t)},eventMatches:function(e,t,a){var n=t.qualifier;return n!=null?e!==a.target&&xa(a.target)&&n.matches(a.target):!0},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,a){return t.qualifier!=null?a.target:e}},qa=function(e){return ce(e)?new rt(e):e},eu={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new wn(Yh,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,a){return this.emitter().on(e,qa(t),a),this},removeListener:function(e,t,a){return this.emitter().removeListener(e,qa(t),a),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,a){return this.emitter().one(e,qa(t),a),this},once:function(e,t,a){return this.emitter().one(e,qa(t),a),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}};Be.eventAliasesOn(eu);var Zn={png:function(e){var t=this._private.renderer;return e=e||{},t.png(e)},jpg:function(e){var t=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",t.jpg(e)}};Zn.jpeg=Zn.jpg;var Xa={layout:function(e){var t=this;if(e==null){$e("Layout options must be specified to make a layout");return}if(e.name==null){$e("A `name` must be specified to make a layout");return}var a=e.name,n=t.extension("layout",a);if(n==null){$e("No such layout `"+a+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var i;ce(e.eles)?i=t.$(e.eles):i=e.eles!=null?e.eles:t.$();var s=new n(pe({},e,{cy:t,eles:i}));return s}};Xa.createLayout=Xa.makeLayout=Xa.layout;var Xh={notify:function(e,t){var a=this._private;if(this.batching()){a.batchNotifications=a.batchNotifications||{};var n=a.batchNotifications[e]=a.batchNotifications[e]||this.collection();t!=null&&n.merge(t);return}if(a.notificationsEnabled){var i=this.renderer();this.destroyed()||!i||i.notify(e,t)}},notifications:function(e){var t=this._private;return e===void 0?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 e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach(function(a){var n=e.batchNotifications[a];n.empty()?t.notify(a):t.notify(a,n)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch(function(){for(var a=Object.keys(e),n=0;n0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(a){var n=a._private;n.rscratch={},n.rstyle={},n.animation.current=[],n.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};Qn.invalidateDimensions=Qn.resize;var Za={collection:function(e,t){return ce(e)?this.$(e):yr(e)?e.collection():Oe(e)?(t||(t={}),new er(this,e,t.unique,t.removed)):new er(this)},nodes:function(e){var t=this.$(function(a){return a.isNode()});return e?t.filter(e):t},edges:function(e){var t=this.$(function(a){return a.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}};Za.elements=Za.filter=Za.$;var or={},oa="t",Qh="f";or.apply=function(r){for(var e=this,t=e._private,a=t.cy,n=a.collection(),i=0;i0;if(c||f&&h){var d=void 0;c&&h||c?d=u.properties:h&&(d=u.mappedProperties);for(var y=0;y1&&(w=1),o.color){var E=a.valueMin[0],x=a.valueMax[0],D=a.valueMin[1],C=a.valueMax[1],M=a.valueMin[2],P=a.valueMax[2],B=a.valueMin[3]==null?1:a.valueMin[3],L=a.valueMax[3]==null?1:a.valueMax[3],k=[Math.round(E+(x-E)*w),Math.round(D+(C-D)*w),Math.round(M+(P-M)*w),Math.round(B+(L-B)*w)];i={bypass:a.bypass,name:a.name,value:k,strValue:"rgb("+k[0]+", "+k[1]+", "+k[2]+")"}}else if(o.number){var O=a.valueMin+(a.valueMax-a.valueMin)*w;i=this.parse(a.name,O,a.bypass,c)}else return!1;if(!i)return y(),!1;i.mapping=a,a=i;break}case s.data:{for(var A=a.field.split("."),R=f.data,I=0;I0&&i>0){for(var o={},l=!1,u=0;u0?r.delayAnimation(s).play().promise().then(b):b()}).then(function(){return r.animation({style:o,duration:i,easing:r.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){t.removeBypasses(r,n),r.emitAndNotify("style"),a.transitioning=!1})}else a.transitioning&&(this.removeBypasses(r,n),r.emitAndNotify("style"),a.transitioning=!1)};or.checkTrigger=function(r,e,t,a,n,i){var s=this.properties[e],o=n(s);o!=null&&o(t,a)&&i(s)};or.checkZOrderTrigger=function(r,e,t,a){var n=this;this.checkTrigger(r,e,t,a,function(i){return i.triggersZOrder},function(){n._private.cy.notify("zorder",r)})};or.checkBoundsTrigger=function(r,e,t,a){this.checkTrigger(r,e,t,a,function(n){return n.triggersBounds},function(n){r.dirtyCompoundBoundsCache(),r.dirtyBoundingBoxCache(),n.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(t==="bezier"||a==="bezier")&&r.parallelEdges().forEach(function(i){i.dirtyBoundingBoxCache()}),n.triggersBoundsOfConnectedEdges&&e==="display"&&(t==="none"||a==="none")&&r.connectedEdges().forEach(function(i){i.dirtyBoundingBoxCache()})})};or.checkTriggers=function(r,e,t,a){r.dirtyStyleCache(),this.checkZOrderTrigger(r,e,t,a),this.checkBoundsTrigger(r,e,t,a)};var Ta={};Ta.applyBypass=function(r,e,t,a){var n=this,i=[],s=!0;if(e==="*"||e==="**"){if(t!==void 0)for(var o=0;on.length?a=a.substr(n.length):a=""}function l(){i.length>s.length?i=i.substr(s.length):i=""}for(;;){var u=a.match(/^\s*$/);if(u)break;var v=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!v){Me("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}n=v[0];var f=v[1];if(f!=="core"){var c=new rt(f);if(c.invalid){Me("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),o();continue}}var h=v[2],d=!1;i=h;for(var y=[];;){var p=i.match(/^\s*$/);if(p)break;var g=i.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!g){Me("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+h),d=!0;break}s=g[0];var m=g[1],b=g[2],w=e.properties[m];if(!w){Me("Skipping property: Invalid property name in: "+s),l();continue}var S=t.parse(m,b);if(!S){Me("Skipping property: Invalid property definition in: "+s),l();continue}y.push({name:m,val:b}),l()}if(d){o();break}t.selector(f);for(var E=0;E=7&&e[0]==="d"&&(v=new RegExp(o.data.regex).exec(e))){if(t)return!1;var c=o.data;return{name:r,value:v,strValue:""+e,mapped:c,field:v[1],bypass:t}}else if(e.length>=10&&e[0]==="m"&&(f=new RegExp(o.mapData.regex).exec(e))){if(t||u.multiple)return!1;var h=o.mapData;if(!(u.color||u.number))return!1;var d=this.parse(r,f[4]);if(!d||d.mapped)return!1;var y=this.parse(r,f[5]);if(!y||y.mapped)return!1;if(d.pfValue===y.pfValue||d.strValue===y.strValue)return Me("`"+r+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+r+": "+d.strValue+"`"),this.parse(r,d.strValue);if(u.color){var p=d.value,g=y.value,m=p[0]===g[0]&&p[1]===g[1]&&p[2]===g[2]&&(p[3]===g[3]||(p[3]==null||p[3]===1)&&(g[3]==null||g[3]===1));if(m)return!1}return{name:r,value:f,strValue:""+e,mapped:h,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:d.value,valueMax:y.value,bypass:t}}}if(u.multiple&&a!=="multiple"){var b;if(l?b=e.split(/\s+/):Oe(e)?b=e:b=[e],u.evenMultiple&&b.length%2!==0)return null;for(var w=[],S=[],E=[],x="",D=!1,C=0;C0?" ":"")+M.strValue}return u.validate&&!u.validate(w,S)?null:u.singleEnum&&D?w.length===1&&ce(w[0])?{name:r,value:w[0],strValue:w[0],bypass:t}:null:{name:r,value:w,pfValue:E,strValue:x,bypass:t,units:S}}var P=function(){for(var z=0;zu.max||u.strictMax&&e===u.max))return null;var A={name:r,value:e,strValue:""+e+(B||""),units:B,bypass:t};return u.unitless||B!=="px"&&B!=="em"?A.pfValue=e:A.pfValue=B==="px"||!B?e:this.getEmSizeInPixels()*e,(B==="ms"||B==="s")&&(A.pfValue=B==="ms"?e:1e3*e),(B==="deg"||B==="rad")&&(A.pfValue=B==="rad"?e:Mv(e)),B==="%"&&(A.pfValue=e/100),A}else if(u.propList){var R=[],I=""+e;if(I!=="none"){for(var V=I.split(/\s*,\s*|\s+/),G=0;G0&&o>0&&!isNaN(a.w)&&!isNaN(a.h)&&a.w>0&&a.h>0){l=Math.min((s-2*t)/a.w,(o-2*t)/a.h),l=l>this._private.maxZoom?this._private.maxZoom:l,l=l=a.minZoom&&(a.maxZoom=t),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t=this._private,a=t.pan,n=t.zoom,i,s,o=!1;if(t.zoomingEnabled||(o=!0),ne(e)?s=e:Te(e)&&(s=e.level,e.position!=null?i=hn(e.position,n,a):e.renderedPosition!=null&&(i=e.renderedPosition),i!=null&&!t.panningEnabled&&(o=!0)),s=s>t.maxZoom?t.maxZoom:s,s=st.maxZoom||!t.zoomingEnabled?s=!0:(t.zoom=l,i.push("zoom"))}if(n&&(!s||!e.cancelOnFailedZoom)&&t.panningEnabled){var u=e.pan;ne(u.x)&&(t.pan.x=u.x,o=!1),ne(u.y)&&(t.pan.y=u.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.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(ce(e)){var a=e;e=this.mutableElements().filter(a)}else yr(e)||(e=this.mutableElements());if(e.length!==0){var n=e.boundingBox(),i=this.width(),s=this.height();t=t===void 0?this._private.zoom:t;var o={x:(i-t*(n.x1+n.x2))/2,y:(s-t*(n.y1+n.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,t=e.container,a=this;return e.sizeCache=e.sizeCache||(t?function(){var n=a.window().getComputedStyle(t),i=function(o){return parseFloat(n.getPropertyValue(o))};return{width:t.clientWidth-i("padding-left")-i("padding-right"),height:t.clientHeight-i("padding-top")-i("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,a=this.renderedExtent(),n={x1:(a.x1-e.x)/t,x2:(a.x2-e.x)/t,y1:(a.y1-e.y)/t,y2:(a.y2-e.y)/t};return n.w=n.x2-n.x1,n.h=n.y2-n.y1,n},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){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};yt.centre=yt.center;yt.autolockNodes=yt.autolock;yt.autoungrabifyNodes=yt.autoungrabify;var ma={data:Be.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Be.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Be.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Be.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};ma.attr=ma.data;ma.removeAttr=ma.removeData;var ba=function(e){var t=this;e=pe({},e);var a=e.container;a&&!_a(a)&&_a(a[0])&&(a=a[0]);var n=a?a._cyreg:null;n=n||{},n&&n.cy&&(n.cy.destroy(),n={});var i=n.readies=n.readies||[];a&&(a._cyreg=n),n.cy=t;var s=Ke!==void 0&&a!==void 0&&!e.headless,o=e;o.layout=pe({name:s?"grid":"null"},o.layout),o.renderer=pe({name:s?"canvas":"null"},o.renderer);var l=function(d,y,p){return y!==void 0?y:p!==void 0?p:d},u=this._private={container:a,ready:!1,options:o,elements:new er(this),listeners:[],aniEles:new er(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,o.zoomingEnabled),userZoomingEnabled:l(!0,o.userZoomingEnabled),panningEnabled:l(!0,o.panningEnabled),userPanningEnabled:l(!0,o.userPanningEnabled),boxSelectionEnabled:l(!0,o.boxSelectionEnabled),autolock:l(!1,o.autolock,o.autolockNodes),autoungrabify:l(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:l(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:ne(o.zoom)?o.zoom:1,pan:{x:Te(o.pan)&&ne(o.pan.x)?o.pan.x:0,y:Te(o.pan)&&ne(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:l(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var v=function(d,y){var p=d.some(el);if(p)return qt.all(d).then(y);y(d)};u.styleEnabled&&t.setStyle([]);var f=pe({},o,o.renderer);t.initRenderer(f);var c=function(d,y,p){t.notifications(!1);var g=t.mutableElements();g.length>0&&g.remove(),d!=null&&(Te(d)||Oe(d))&&t.add(d),t.one("layoutready",function(b){t.notifications(!0),t.emit(b),t.one("load",y),t.emitAndNotify("load")}).one("layoutstop",function(){t.one("done",p),t.emit("done")});var m=pe({},t._private.options.layout);m.eles=t.elements(),t.layout(m).run()};v([o.style,o.elements],function(h){var d=h[0],y=h[1];u.styleEnabled&&t.style().append(d),c(y,function(){t.startAnimationLoop(),u.ready=!0,qe(o.ready)&&t.on("ready",o.ready);for(var p=0;p0,l=hr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),u;if(yr(e.roots))u=e.roots;else if(Oe(e.roots)){for(var v=[],f=0;f0;){var O=k(),A=M(O,B);if(A)O.outgoers().filter(function(te){return te.isNode()&&a.has(te)}).forEach(L);else if(A===null){Me("Detected double maximal shift for node `"+O.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}C();var R=0;if(e.avoidOverlap)for(var I=0;I0&&g[0].length<=3?xe/2:0),Pe=2*Math.PI/g[le].length*oe;return le===0&&g[0].length===1&&(Ee=1),{x:X.x+Ee*Math.cos(Pe),y:X.y+Ee*Math.sin(Pe)}}else{var Ae={x:X.x+(oe+1-(de+1)/2)*Le,y:(le+1)*Ce};return Ae}};return a.nodes().layoutPositions(this,e,he),this};var rg={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*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(r){this.options=pe({},rg,r)}tu.prototype.run=function(){var r=this.options,e=r,t=r.cy,a=e.eles,n=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,i=a.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));for(var s=hr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=e.sweep===void 0?2*Math.PI-2*Math.PI/i.length:e.sweep,u=l/Math.max(1,i.length-1),v,f=0,c=0;c1&&e.avoidOverlap){f*=1.75;var g=Math.cos(u)-Math.cos(0),m=Math.sin(u)-Math.sin(0),b=Math.sqrt(f*f/(g*g+m*m));v=Math.max(b,v)}var w=function(E,x){var D=e.startAngle+x*u*(n?1:-1),C=v*Math.cos(D),M=v*Math.sin(D),P={x:o.x+C,y:o.y+M};return P};return a.nodes().layoutPositions(this,e,w),this};var tg={fit:!0,padding:30,startAngle:3/2*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 au(r){this.options=pe({},tg,r)}au.prototype.run=function(){for(var r=this.options,e=r,t=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=r.cy,n=e.eles,i=n.nodes().not(":parent"),s=hr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:a.width(),h:a.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=[],u=0,v=0;v0){var S=Math.abs(m[0].value-w.value);S>=p&&(m=[],g.push(m))}m.push(w)}var E=u+e.minNodeSpacing;if(!e.avoidOverlap){var x=g.length>0&&g[0].length>1,D=Math.min(s.w,s.h)/2-E,C=D/(g.length+x?1:0);E=Math.min(E,C)}for(var M=0,P=0;P1&&e.avoidOverlap){var O=Math.cos(k)-Math.cos(0),A=Math.sin(k)-Math.sin(0),R=Math.sqrt(E*E/(O*O+A*A));M=Math.max(R,M)}B.r=M,M+=E}if(e.equidistant){for(var I=0,V=0,G=0;G=r.numIter||(vg(a,r),a.temperature=a.temperature*r.coolingFactor,a.temperature=r.animationThreshold&&i(),ja(f)}};v()}else{for(;u;)u=s(l),l++;Ps(a,r),o()}return this};Tn.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};Tn.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var ng=function(e,t,a){for(var n=a.eles.edges(),i=a.eles.nodes(),s=hr(a.boundingBox?a.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:n.size(),temperature:a.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},l=a.eles.components(),u={},v=0;v0){o.graphSet.push(D);for(var v=0;vn.count?0:n.graph},sg=function r(e,t,a,n){var i=n.graphSet[a];if(-10)var f=n.nodeOverlap*v,c=Math.sqrt(o*o+l*l),h=f*o/c,d=f*l/c;else var y=on(e,o,l),p=on(t,-1*o,-1*l),g=p.x-y.x,m=p.y-y.y,b=g*g+m*m,c=Math.sqrt(b),f=(e.nodeRepulsion+t.nodeRepulsion)/b,h=f*g/c,d=f*m/c;e.isLocked||(e.offsetX-=h,e.offsetY-=d),t.isLocked||(t.offsetX+=h,t.offsetY+=d)}},dg=function(e,t,a,n){if(a>0)var i=e.maxX-t.minX;else var i=t.maxX-e.minX;if(n>0)var s=e.maxY-t.minY;else var s=t.maxY-e.minY;return i>=0&&s>=0?Math.sqrt(i*i+s*s):0},on=function(e,t,a){var n=e.positionX,i=e.positionY,s=e.height||1,o=e.width||1,l=a/t,u=s/o,v={};return t===0&&0a?(v.x=n,v.y=i+s/2,v):0t&&-1*u<=l&&l<=u?(v.x=n-o/2,v.y=i-o*a/2/t,v):0=u)?(v.x=n+s*t/2/a,v.y=i+s/2,v):(0>a&&(l<=-1*u||l>=u)&&(v.x=n-s*t/2/a,v.y=i-s/2),v)},hg=function(e,t){for(var a=0;aa){var p=t.gravity*h/y,g=t.gravity*d/y;c.offsetX+=p,c.offsetY+=g}}}}},pg=function(e,t){var a=[],n=0,i=-1;for(a.push.apply(a,e.graphSet[0]),i+=e.graphSet[0].length;n<=i;){var s=a[n++],o=e.idToIndex[s],l=e.layoutNodes[o],u=l.children;if(0a)var i={x:a*e/n,y:a*t/n};else var i={x:e,y:t};return i},bg=function r(e,t){var a=e.parentId;if(a!=null){var n=t.layoutNodes[t.idToIndex[a]],i=!1;if((n.maxX==null||e.maxX+n.padRight>n.maxX)&&(n.maxX=e.maxX+n.padRight,i=!0),(n.minX==null||e.minX-n.padLeftn.maxY)&&(n.maxY=e.maxY+n.padBottom,i=!0),(n.minY==null||e.minY-n.padTopg&&(d+=p+t.componentSpacing,h=0,y=0,p=0)}}},wg={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 iu(r){this.options=pe({},wg,r)}iu.prototype.run=function(){var r=this.options,e=r,t=r.cy,a=e.eles,n=a.nodes().not(":parent");e.sort&&(n=n.sort(e.sort));var i=hr(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:t.width(),h:t.height()});if(i.h===0||i.w===0)a.nodes().layoutPositions(this,e,function(Y){return{x:i.x1,y:i.y1}});else{var s=n.size(),o=Math.sqrt(s*i.h/i.w),l=Math.round(o),u=Math.round(i.w/i.h*o),v=function(Q){if(Q==null)return Math.min(l,u);var J=Math.min(l,u);J==l?l=Q:u=Q},f=function(Q){if(Q==null)return Math.max(l,u);var J=Math.max(l,u);J==l?l=Q:u=Q},c=e.rows,h=e.cols!=null?e.cols:e.columns;if(c!=null&&h!=null)l=c,u=h;else if(c!=null&&h==null)l=c,u=Math.ceil(s/l);else if(c==null&&h!=null)u=h,l=Math.ceil(s/u);else if(u*l>s){var d=v(),y=f();(d-1)*y>=s?v(d-1):(y-1)*d>=s&&f(y-1)}else for(;u*l=s?f(g+1):v(p+1)}var m=i.w/u,b=i.h/l;if(e.condense&&(m=0,b=0),e.avoidOverlap)for(var w=0;w=u&&(O=0,k++)},R={},I=0;I(O=Gv(r,e,A[R],A[R+1],A[R+2],A[R+3])))return p(x,O),!0}else if(C.edgeType==="bezier"||C.edgeType==="multibezier"||C.edgeType==="self"||C.edgeType==="compound"){for(var A=C.allpts,R=0;R+5(O=Hv(r,e,A[R],A[R+1],A[R+2],A[R+3],A[R+4],A[R+5])))return p(x,O),!0}for(var I=I||D.source,V=V||D.target,G=n.getArrowWidth(M,P),F=[{name:"source",x:C.arrowStartX,y:C.arrowStartY,angle:C.srcArrowAngle},{name:"target",x:C.arrowEndX,y:C.arrowEndY,angle:C.tgtArrowAngle},{name:"mid-source",x:C.midX,y:C.midY,angle:C.midsrcArrowAngle},{name:"mid-target",x:C.midX,y:C.midY,angle:C.midtgtArrowAngle}],R=0;R0&&(g(I),g(V))}function b(x,D,C){return kr(x,D,C)}function w(x,D){var C=x._private,M=c,P;D?P=D+"-":P="",x.boundingBox();var B=C.labelBounds[D||"main"],L=x.pstyle(P+"label").value,k=x.pstyle("text-events").strValue==="yes";if(!(!k||!L)){var O=b(C.rscratch,"labelX",D),A=b(C.rscratch,"labelY",D),R=b(C.rscratch,"labelAngle",D),I=x.pstyle(P+"text-margin-x").pfValue,V=x.pstyle(P+"text-margin-y").pfValue,G=B.x1-M-I,F=B.x2+M-I,q=B.y1-M-V,Y=B.y2+M-V;if(R){var Q=Math.cos(R),J=Math.sin(R),_=function(he,te){return he=he-O,te=te-A,{x:he*Q-te*J+O,y:he*J+te*Q+A}},j=_(G,q),W=_(G,Y),z=_(F,q),K=_(F,Y),X=[j.x+I,j.y+V,z.x+I,z.y+V,K.x+I,K.y+V,W.x+I,W.y+V];if(dr(r,e,X))return p(x),!0}else if(It(B,r,e))return p(x),!0}}for(var S=s.length-1;S>=0;S--){var E=s[S];E.isNode()?g(E)||w(E):m(E)||w(E)||w(E,"source")||w(E,"target")}return o};bt.getAllInBox=function(r,e,t,a){var n=this.getCachedZSortedEles().interactive,i=[],s=Math.min(r,t),o=Math.max(r,t),l=Math.min(e,a),u=Math.max(e,a);r=s,t=o,e=l,a=u;for(var v=hr({x1:r,y1:e,x2:t,y2:a}),f=0;f0?-(Math.PI-e.ang):Math.PI+e.ang},Dg=function(e,t,a,n,i){if(e!==Rs?Os(t,e,Rr):Tg(wr,Rr),Os(t,a,wr),Ls=Rr.nx*wr.ny-Rr.ny*wr.nx,As=Rr.nx*wr.nx-Rr.ny*-wr.ny,$r=Math.asin(Math.max(-1,Math.min(1,Ls))),Math.abs($r)<1e-6){Jn=t.x,_n=t.y,lt=Tt=0;return}vt=1,Qa=!1,As<0?$r<0?$r=Math.PI+$r:($r=Math.PI-$r,vt=-1,Qa=!0):$r>0&&(vt=-1,Qa=!0),t.radius!==void 0?Tt=t.radius:Tt=n,st=$r/2,$a=Math.min(Rr.len/2,wr.len/2),i?(Ar=Math.abs(Math.cos(st)*Tt/Math.sin(st)),Ar>$a?(Ar=$a,lt=Math.abs(Ar*Math.sin(st)/Math.cos(st))):lt=Tt):(Ar=Math.min($a,Tt),lt=Math.abs(Ar*Math.sin(st)/Math.cos(st))),jn=t.x+wr.nx*Ar,ei=t.y+wr.ny*Ar,Jn=jn-wr.ny*lt*vt,_n=ei+wr.nx*lt*vt,lu=t.x+Rr.nx*Ar,vu=t.y+Rr.ny*Ar,Rs=t};function fu(r,e){e.radius===0?r.lineTo(e.cx,e.cy):r.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function Di(r,e,t,a){var n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return a===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(Dg(r,e,t,a,n),{cx:Jn,cy:_n,radius:lt,startX:lu,startY:vu,stopX:jn,stopY:ei,startAngle:Rr.ang+Math.PI/2*vt,endAngle:wr.ang-Math.PI/2*vt,counterClockwise:Qa})}var ur={};ur.findMidptPtsEtc=function(r,e){var t=e.posPts,a=e.intersectionPts,n=e.vectorNormInverse,i,s=r.pstyle("source-endpoint"),o=r.pstyle("target-endpoint"),l=s.units!=null&&o.units!=null,u=function(S,E,x,D){var C=D-E,M=x-S,P=Math.sqrt(M*M+C*C);return{x:-C/P,y:M/P}},v=r.pstyle("edge-distances").value;switch(v){case"node-position":i=t;break;case"intersection":i=a;break;case"endpoints":{if(l){var f=this.manualEndptToPx(r.source()[0],s),c=Tr(f,2),h=c[0],d=c[1],y=this.manualEndptToPx(r.target()[0],o),p=Tr(y,2),g=p[0],m=p[1],b={x1:h,y1:d,x2:g,y2:m};n=u(h,d,g,m),i=b}else Me("Edge ".concat(r.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),i=a;break}}return{midptPts:i,vectorNormInverse:n}};ur.findHaystackPoints=function(r){for(var e=0;e0?Math.max(Z-se,0):Math.min(Z+se,0)},L=B(M,D),k=B(P,C),O=!1;m===u?g=Math.abs(L)>Math.abs(k)?n:a:m===l||m===o?(g=a,O=!0):(m===i||m===s)&&(g=n,O=!0);var A=g===a,R=A?k:L,I=A?P:M,V=go(I),G=!1;!(O&&(w||E))&&(m===o&&I<0||m===l&&I>0||m===i&&I>0||m===s&&I<0)&&(V*=-1,R=V*Math.abs(R),G=!0);var F;if(w){var q=S<0?1+S:S;F=q*R}else{var Y=S<0?R:0;F=Y+S*V}var Q=function(Z){return Math.abs(Z)=Math.abs(R)},J=Q(F),_=Q(Math.abs(R)-Math.abs(F)),j=J||_;if(j&&!G)if(A){var W=Math.abs(I)<=c/2,z=Math.abs(M)<=h/2;if(W){var K=(v.x1+v.x2)/2,X=v.y1,ae=v.y2;t.segpts=[K,X,K,ae]}else if(z){var he=(v.y1+v.y2)/2,te=v.x1,re=v.x2;t.segpts=[te,he,re,he]}else t.segpts=[v.x1,v.y2]}else{var ve=Math.abs(I)<=f/2,le=Math.abs(P)<=d/2;if(ve){var oe=(v.y1+v.y2)/2,de=v.x1,Le=v.x2;t.segpts=[de,oe,Le,oe]}else if(le){var Ce=(v.x1+v.x2)/2,xe=v.y1,Ae=v.y2;t.segpts=[Ce,xe,Ce,Ae]}else t.segpts=[v.x2,v.y1]}else if(A){var Ee=v.y1+F+(p?c/2*V:0),Pe=v.x1,ee=v.x2;t.segpts=[Pe,Ee,ee,Ee]}else{var T=v.x1+F+(p?f/2*V:0),$=v.y1,U=v.y2;t.segpts=[T,$,T,U]}if(t.isRound){var N=r.pstyle("taxi-radius").value,H=r.pstyle("radius-type").value[0]==="arc-radius";t.radii=new Array(t.segpts.length/2).fill(N),t.isArcRadius=new Array(t.segpts.length/2).fill(H)}};ur.tryToCorrectInvalidPoints=function(r,e){var t=r._private.rscratch;if(t.edgeType==="bezier"){var a=e.srcPos,n=e.tgtPos,i=e.srcW,s=e.srcH,o=e.tgtW,l=e.tgtH,u=e.srcShape,v=e.tgtShape,f=e.srcCornerRadius,c=e.tgtCornerRadius,h=e.srcRs,d=e.tgtRs,y=!ne(t.startX)||!ne(t.startY),p=!ne(t.arrowStartX)||!ne(t.arrowStartY),g=!ne(t.endX)||!ne(t.endY),m=!ne(t.arrowEndX)||!ne(t.arrowEndY),b=3,w=this.getArrowWidth(r.pstyle("width").pfValue,r.pstyle("arrow-scale").value)*this.arrowShapeWidth,S=b*w,E=ht({x:t.ctrlpts[0],y:t.ctrlpts[1]},{x:t.startX,y:t.startY}),x=Ek.poolIndex()){var O=L;L=k,k=O}var A=C.srcPos=L.position(),R=C.tgtPos=k.position(),I=C.srcW=L.outerWidth(),V=C.srcH=L.outerHeight(),G=C.tgtW=k.outerWidth(),F=C.tgtH=k.outerHeight(),q=C.srcShape=t.nodeShapes[e.getNodeShape(L)],Y=C.tgtShape=t.nodeShapes[e.getNodeShape(k)],Q=C.srcCornerRadius=L.pstyle("corner-radius").value==="auto"?"auto":L.pstyle("corner-radius").pfValue,J=C.tgtCornerRadius=k.pstyle("corner-radius").value==="auto"?"auto":k.pstyle("corner-radius").pfValue,_=C.tgtRs=k._private.rscratch,j=C.srcRs=L._private.rscratch;C.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var W=0;W0){var ae=i,he=ot(ae,Pt(t)),te=ot(ae,Pt(X)),re=he;if(te2){var ve=ot(ae,{x:X[2],y:X[3]});ve0){var U=s,N=ot(U,Pt(t)),H=ot(U,Pt($)),ie=N;if(H2){var Z=ot(U,{x:$[2],y:$[3]});Z=d||x){p={cp:w,segment:E};break}}if(p)break}var D=p.cp,C=p.segment,M=(d-g)/C.length,P=C.t1-C.t0,B=h?C.t0+P*M:C.t1-P*M;B=da(0,B,1),e=Mt(D.p0,D.p1,D.p2,B),c=Pg(D.p0,D.p1,D.p2,B);break}case"straight":case"segments":case"haystack":{for(var L=0,k,O,A,R,I=a.allpts.length,V=0;V+3=d));V+=2);var G=d-O,F=G/k;F=da(0,F,1),e=Av(A,R,F),c=hu(A,R);break}}s("labelX",f,e.x),s("labelY",f,e.y),s("labelAutoAngle",f,c)}};u("source"),u("target"),this.applyLabelDimensions(r)}};Nr.applyLabelDimensions=function(r){this.applyPrefixedLabelDimensions(r),r.isEdge()&&(this.applyPrefixedLabelDimensions(r,"source"),this.applyPrefixedLabelDimensions(r,"target"))};Nr.applyPrefixedLabelDimensions=function(r,e){var t=r._private,a=this.getLabelText(r,e),n=this.calculateLabelDimensions(r,a),i=r.pstyle("line-height").pfValue,s=r.pstyle("text-wrap").strValue,o=kr(t.rscratch,"labelWrapCachedLines",e)||[],l=s!=="wrap"?1:Math.max(o.length,1),u=n.height/l,v=u*i,f=n.width,c=n.height+(l-1)*(i-1)*u;Zr(t.rstyle,"labelWidth",e,f),Zr(t.rscratch,"labelWidth",e,f),Zr(t.rstyle,"labelHeight",e,c),Zr(t.rscratch,"labelHeight",e,c),Zr(t.rscratch,"labelLineHeight",e,v)};Nr.getLabelText=function(r,e){var t=r._private,a=e?e+"-":"",n=r.pstyle(a+"label").strValue,i=r.pstyle("text-transform").value,s=function(Y,Q){return Q?(Zr(t.rscratch,Y,e,Q),Q):kr(t.rscratch,Y,e)};if(!n)return"";i=="none"||(i=="uppercase"?n=n.toUpperCase():i=="lowercase"&&(n=n.toLowerCase()));var o=r.pstyle("text-wrap").value;if(o==="wrap"){var l=s("labelKey");if(l!=null&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var u="​",v=n.split(` +`),f=r.pstyle("text-max-width").pfValue,c=r.pstyle("text-overflow-wrap").value,h=c==="anywhere",d=[],y=/[\s\u200b]+|$/g,p=0;pf){var S=g.matchAll(y),E="",x=0,D=Zs(S),C;try{for(D.s();!(C=D.n()).done;){var M=C.value,P=M[0],B=g.substring(x,M.index);x=M.index+P.length;var L=E.length===0?B:E+B+P,k=this.calculateLabelDimensions(r,L),O=k.width;O<=f?E+=B+P:(E&&d.push(E),E=B+P)}}catch(q){D.e(q)}finally{D.f()}E.match(/^[\s\u200b]+$/)||d.push(E)}else d.push(g)}s("labelWrapCachedLines",d),n=s("labelWrapCachedText",d.join(` +`)),s("labelWrapKey",l)}else if(o==="ellipsis"){var A=r.pstyle("text-max-width").pfValue,R="",I="…",V=!1;if(this.calculateLabelDimensions(r,n).widthA)break;R+=n[G],G===n.length-1&&(V=!0)}return V||(R+=I),R}return n};Nr.getLabelJustification=function(r){var e=r.pstyle("text-justification").strValue,t=r.pstyle("text-halign").strValue;if(e==="auto")if(r.isNode())switch(t){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Nr.calculateLabelDimensions=function(r,e){var t=this,a=t.cy.window(),n=a.document,i=dt(e,r._private.labelDimsKey),s=t.labelDimCache||(t.labelDimCache=[]),o=s[i];if(o!=null)return o;var l=0,u=r.pstyle("font-style").strValue,v=r.pstyle("font-size").pfValue,f=r.pstyle("font-family").strValue,c=r.pstyle("font-weight").strValue,h=this.labelCalcCanvas,d=this.labelCalcCanvasContext;if(!h){h=this.labelCalcCanvas=n.createElement("canvas"),d=this.labelCalcCanvasContext=h.getContext("2d");var y=h.style;y.position="absolute",y.left="-9999px",y.top="-9999px",y.zIndex="-1",y.visibility="hidden",y.pointerEvents="none"}d.font="".concat(u," ").concat(c," ").concat(v,"px ").concat(f);for(var p=0,g=0,m=e.split(` +`),b=0;b1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var l=0;l=r.desktopTapThreshold2}var lr=i(T);Ve&&(r.hoverData.tapholdCancelled=!0);var vr=function(){var Lr=r.hoverData.dragDelta=r.hoverData.dragDelta||[];Lr.length===0?(Lr.push(ye[0]),Lr.push(ye[1])):(Lr[0]+=ye[0],Lr[1]+=ye[1])};U=!0,n(fe,["mousemove","vmousemove","tapdrag"],T,{x:Z[0],y:Z[1]});var Br=function(){r.data.bgActivePosistion=void 0,r.hoverData.selecting||N.emit({originalEvent:T,type:"boxstart",position:{x:Z[0],y:Z[1]}}),we[4]=1,r.hoverData.selecting=!0,r.redrawHint("select",!0),r.redraw()};if(r.hoverData.which===3){if(Ve){var br={originalEvent:T,type:"cxtdrag",position:{x:Z[0],y:Z[1]}};be?be.emit(br):N.emit(br),r.hoverData.cxtDragged=!0,(!r.hoverData.cxtOver||fe!==r.hoverData.cxtOver)&&(r.hoverData.cxtOver&&r.hoverData.cxtOver.emit({originalEvent:T,type:"cxtdragout",position:{x:Z[0],y:Z[1]}}),r.hoverData.cxtOver=fe,fe&&fe.emit({originalEvent:T,type:"cxtdragover",position:{x:Z[0],y:Z[1]}}))}}else if(r.hoverData.dragging){if(U=!0,N.panningEnabled()&&N.userPanningEnabled()){var Mr;if(r.hoverData.justStartedPan){var Vr=r.hoverData.mdownPos;Mr={x:(Z[0]-Vr[0])*H,y:(Z[1]-Vr[1])*H},r.hoverData.justStartedPan=!1}else Mr={x:ye[0]*H,y:ye[1]*H};N.panBy(Mr),N.emit("dragpan"),r.hoverData.dragged=!0}Z=r.projectIntoViewport(T.clientX,T.clientY)}else if(we[4]==1&&(be==null||be.pannable())){if(Ve){if(!r.hoverData.dragging&&N.boxSelectionEnabled()&&(lr||!N.panningEnabled()||!N.userPanningEnabled()))Br();else if(!r.hoverData.selecting&&N.panningEnabled()&&N.userPanningEnabled()){var qr=s(be,r.hoverData.downs);qr&&(r.hoverData.dragging=!0,r.hoverData.justStartedPan=!0,we[4]=0,r.data.bgActivePosistion=Pt(se),r.redrawHint("select",!0),r.redraw())}be&&be.pannable()&&be.active()&&be.unactivate()}}else{if(be&&be.pannable()&&be.active()&&be.unactivate(),(!be||!be.grabbed())&&fe!=me&&(me&&n(me,["mouseout","tapdragout"],T,{x:Z[0],y:Z[1]}),fe&&n(fe,["mouseover","tapdragover"],T,{x:Z[0],y:Z[1]}),r.hoverData.last=fe),be)if(Ve){if(N.boxSelectionEnabled()&&lr)be&&be.grabbed()&&(g(Ie),be.emit("freeon"),Ie.emit("free"),r.dragData.didDrag&&(be.emit("dragfreeon"),Ie.emit("dragfree"))),Br();else if(be&&be.grabbed()&&r.nodeIsDraggable(be)){var ar=!r.dragData.didDrag;ar&&r.redrawHint("eles",!0),r.dragData.didDrag=!0,r.hoverData.draggingEles||y(Ie,{inDragLayer:!0});var Qe={x:0,y:0};if(ne(ye[0])&&ne(ye[1])&&(Qe.x+=ye[0],Qe.y+=ye[1],ar)){var cr=r.hoverData.dragDelta;cr&&ne(cr[0])&&ne(cr[1])&&(Qe.x+=cr[0],Qe.y+=cr[1])}r.hoverData.draggingEles=!0,Ie.silentShift(Qe).emit("position drag"),r.redrawHint("drag",!0),r.redraw()}}else vr();U=!0}if(we[2]=Z[0],we[3]=Z[1],U)return T.stopPropagation&&T.stopPropagation(),T.preventDefault&&T.preventDefault(),!1}},!1);var B,L,k;r.registerBinding(e,"mouseup",function(T){if(!(r.hoverData.which===1&&T.which!==1&&r.hoverData.capture)){var $=r.hoverData.capture;if($){r.hoverData.capture=!1;var U=r.cy,N=r.projectIntoViewport(T.clientX,T.clientY),H=r.selection,ie=r.findNearestElement(N[0],N[1],!0,!1),Z=r.dragData.possibleDragElements,se=r.hoverData.down,ge=i(T);if(r.data.bgActivePosistion&&(r.redrawHint("select",!0),r.redraw()),r.hoverData.tapholdCancelled=!0,r.data.bgActivePosistion=void 0,se&&se.unactivate(),r.hoverData.which===3){var we={originalEvent:T,type:"cxttapend",position:{x:N[0],y:N[1]}};if(se?se.emit(we):U.emit(we),!r.hoverData.cxtDragged){var fe={originalEvent:T,type:"cxttap",position:{x:N[0],y:N[1]}};se?se.emit(fe):U.emit(fe)}r.hoverData.cxtDragged=!1,r.hoverData.which=null}else if(r.hoverData.which===1){if(n(ie,["mouseup","tapend","vmouseup"],T,{x:N[0],y:N[1]}),!r.dragData.didDrag&&!r.hoverData.dragged&&!r.hoverData.selecting&&!r.hoverData.isOverThresholdDrag&&(n(se,["click","tap","vclick"],T,{x:N[0],y:N[1]}),L=!1,T.timeStamp-k<=U.multiClickDebounceTime()?(B&&clearTimeout(B),L=!0,k=null,n(se,["dblclick","dbltap","vdblclick"],T,{x:N[0],y:N[1]})):(B=setTimeout(function(){L||n(se,["oneclick","onetap","voneclick"],T,{x:N[0],y:N[1]})},U.multiClickDebounceTime()),k=T.timeStamp)),se==null&&!r.dragData.didDrag&&!r.hoverData.selecting&&!r.hoverData.dragged&&!i(T)&&(U.$(t).unselect(["tapunselect"]),Z.length>0&&r.redrawHint("eles",!0),r.dragData.possibleDragElements=Z=U.collection()),ie==se&&!r.dragData.didDrag&&!r.hoverData.selecting&&ie!=null&&ie._private.selectable&&(r.hoverData.dragging||(U.selectionType()==="additive"||ge?ie.selected()?ie.unselect(["tapunselect"]):ie.select(["tapselect"]):ge||(U.$(t).unmerge(ie).unselect(["tapunselect"]),ie.select(["tapselect"]))),r.redrawHint("eles",!0)),r.hoverData.selecting){var me=U.collection(r.getAllInBox(H[0],H[1],H[2],H[3]));r.redrawHint("select",!0),me.length>0&&r.redrawHint("eles",!0),U.emit({type:"boxend",originalEvent:T,position:{x:N[0],y:N[1]}});var be=function(Ve){return Ve.selectable()&&!Ve.selected()};U.selectionType()==="additive"||ge||U.$(t).unmerge(me).unselect(),me.emit("box").stdFilter(be).select().emit("boxselect"),r.redraw()}if(r.hoverData.dragging&&(r.hoverData.dragging=!1,r.redrawHint("select",!0),r.redrawHint("eles",!0),r.redraw()),!H[4]){r.redrawHint("drag",!0),r.redrawHint("eles",!0);var ye=se&&se.grabbed();g(Z),ye&&(se.emit("freeon"),Z.emit("free"),r.dragData.didDrag&&(se.emit("dragfreeon"),Z.emit("dragfree")))}}H[4]=0,r.hoverData.down=null,r.hoverData.cxtStarted=!1,r.hoverData.draggingEles=!1,r.hoverData.selecting=!1,r.hoverData.isOverThresholdDrag=!1,r.dragData.didDrag=!1,r.hoverData.dragged=!1,r.hoverData.dragDelta=[],r.hoverData.mdownPos=null,r.hoverData.mdownGPos=null,r.hoverData.which=null}}},!1);var O=function(T){if(!r.scrollingPage){var $=r.cy,U=$.zoom(),N=$.pan(),H=r.projectIntoViewport(T.clientX,T.clientY),ie=[H[0]*U+N.x,H[1]*U+N.y];if(r.hoverData.draggingEles||r.hoverData.dragging||r.hoverData.cxtStarted||C()){T.preventDefault();return}if($.panningEnabled()&&$.userPanningEnabled()&&$.zoomingEnabled()&&$.userZoomingEnabled()){T.preventDefault(),r.data.wheelZooming=!0,clearTimeout(r.data.wheelTimeout),r.data.wheelTimeout=setTimeout(function(){r.data.wheelZooming=!1,r.redrawHint("eles",!0),r.redraw()},150);var Z;T.deltaY!=null?Z=T.deltaY/-250:T.wheelDeltaY!=null?Z=T.wheelDeltaY/1e3:Z=T.wheelDelta/1e3,Z=Z*r.wheelSensitivity;var se=T.deltaMode===1;se&&(Z*=33);var ge=$.zoom()*Math.pow(10,Z);T.type==="gesturechange"&&(ge=r.gestureStartZoom*T.scale),$.zoom({level:ge,renderedPosition:{x:ie[0],y:ie[1]}}),$.emit(T.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};r.registerBinding(r.container,"wheel",O,!0),r.registerBinding(e,"scroll",function(T){r.scrollingPage=!0,clearTimeout(r.scrollingPageTimeout),r.scrollingPageTimeout=setTimeout(function(){r.scrollingPage=!1},250)},!0),r.registerBinding(r.container,"gesturestart",function(T){r.gestureStartZoom=r.cy.zoom(),r.hasTouchStarted||T.preventDefault()},!0),r.registerBinding(r.container,"gesturechange",function(ee){r.hasTouchStarted||O(ee)},!0),r.registerBinding(r.container,"mouseout",function(T){var $=r.projectIntoViewport(T.clientX,T.clientY);r.cy.emit({originalEvent:T,type:"mouseout",position:{x:$[0],y:$[1]}})},!1),r.registerBinding(r.container,"mouseover",function(T){var $=r.projectIntoViewport(T.clientX,T.clientY);r.cy.emit({originalEvent:T,type:"mouseover",position:{x:$[0],y:$[1]}})},!1);var A,R,I,V,G,F,q,Y,Q,J,_,j,W,z=function(T,$,U,N){return Math.sqrt((U-T)*(U-T)+(N-$)*(N-$))},K=function(T,$,U,N){return(U-T)*(U-T)+(N-$)*(N-$)},X;r.registerBinding(r.container,"touchstart",X=function(T){if(r.hasTouchStarted=!0,!!M(T)){b(),r.touchData.capture=!0,r.data.bgActivePosistion=void 0;var $=r.cy,U=r.touchData.now,N=r.touchData.earlier;if(T.touches[0]){var H=r.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);U[0]=H[0],U[1]=H[1]}if(T.touches[1]){var H=r.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);U[2]=H[0],U[3]=H[1]}if(T.touches[2]){var H=r.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);U[4]=H[0],U[5]=H[1]}if(T.touches[1]){r.touchData.singleTouchMoved=!0,g(r.dragData.touchDragEles);var ie=r.findContainerClientCoords();Q=ie[0],J=ie[1],_=ie[2],j=ie[3],A=T.touches[0].clientX-Q,R=T.touches[0].clientY-J,I=T.touches[1].clientX-Q,V=T.touches[1].clientY-J,W=0<=A&&A<=_&&0<=I&&I<=_&&0<=R&&R<=j&&0<=V&&V<=j;var Z=$.pan(),se=$.zoom();G=z(A,R,I,V),F=K(A,R,I,V),q=[(A+I)/2,(R+V)/2],Y=[(q[0]-Z.x)/se,(q[1]-Z.y)/se];var ge=200,we=ge*ge;if(F=1){for(var pr=r.touchData.startPosition=[null,null,null,null,null,null],Ge=0;Ge=r.touchTapThreshold2}if($&&r.touchData.cxt){T.preventDefault();var pr=T.touches[0].clientX-Q,Ge=T.touches[0].clientY-J,Xe=T.touches[1].clientX-Q,Ze=T.touches[1].clientY-J,lr=K(pr,Ge,Xe,Ze),vr=lr/F,Br=150,br=Br*Br,Mr=1.5,Vr=Mr*Mr;if(vr>=Vr||lr>=br){r.touchData.cxt=!1,r.data.bgActivePosistion=void 0,r.redrawHint("select",!0);var qr={originalEvent:T,type:"cxttapend",position:{x:H[0],y:H[1]}};r.touchData.start?(r.touchData.start.unactivate().emit(qr),r.touchData.start=null):N.emit(qr)}}if($&&r.touchData.cxt){var qr={originalEvent:T,type:"cxtdrag",position:{x:H[0],y:H[1]}};r.data.bgActivePosistion=void 0,r.redrawHint("select",!0),r.touchData.start?r.touchData.start.emit(qr):N.emit(qr),r.touchData.start&&(r.touchData.start._private.grabbed=!1),r.touchData.cxtDragged=!0;var ar=r.findNearestElement(H[0],H[1],!0,!0);(!r.touchData.cxtOver||ar!==r.touchData.cxtOver)&&(r.touchData.cxtOver&&r.touchData.cxtOver.emit({originalEvent:T,type:"cxtdragout",position:{x:H[0],y:H[1]}}),r.touchData.cxtOver=ar,ar&&ar.emit({originalEvent:T,type:"cxtdragover",position:{x:H[0],y:H[1]}}))}else if($&&T.touches[2]&&N.boxSelectionEnabled())T.preventDefault(),r.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,r.touchData.selecting||N.emit({originalEvent:T,type:"boxstart",position:{x:H[0],y:H[1]}}),r.touchData.selecting=!0,r.touchData.didSelect=!0,U[4]=1,!U||U.length===0||U[0]===void 0?(U[0]=(H[0]+H[2]+H[4])/3,U[1]=(H[1]+H[3]+H[5])/3,U[2]=(H[0]+H[2]+H[4])/3+1,U[3]=(H[1]+H[3]+H[5])/3+1):(U[2]=(H[0]+H[2]+H[4])/3,U[3]=(H[1]+H[3]+H[5])/3),r.redrawHint("select",!0),r.redraw();else if($&&T.touches[1]&&!r.touchData.didSelect&&N.zoomingEnabled()&&N.panningEnabled()&&N.userZoomingEnabled()&&N.userPanningEnabled()){T.preventDefault(),r.data.bgActivePosistion=void 0,r.redrawHint("select",!0);var Qe=r.dragData.touchDragEles;if(Qe){r.redrawHint("drag",!0);for(var cr=0;cr0&&!r.hoverData.draggingEles&&!r.swipePanning&&r.data.bgActivePosistion!=null&&(r.data.bgActivePosistion=void 0,r.redrawHint("select",!0),r.redraw())}},!1);var he;r.registerBinding(e,"touchcancel",he=function(T){var $=r.touchData.start;r.touchData.capture=!1,$&&$.unactivate()});var te,re,ve,le;if(r.registerBinding(e,"touchend",te=function(T){var $=r.touchData.start,U=r.touchData.capture;if(U)T.touches.length===0&&(r.touchData.capture=!1),T.preventDefault();else return;var N=r.selection;r.swipePanning=!1,r.hoverData.draggingEles=!1;var H=r.cy,ie=H.zoom(),Z=r.touchData.now,se=r.touchData.earlier;if(T.touches[0]){var ge=r.projectIntoViewport(T.touches[0].clientX,T.touches[0].clientY);Z[0]=ge[0],Z[1]=ge[1]}if(T.touches[1]){var ge=r.projectIntoViewport(T.touches[1].clientX,T.touches[1].clientY);Z[2]=ge[0],Z[3]=ge[1]}if(T.touches[2]){var ge=r.projectIntoViewport(T.touches[2].clientX,T.touches[2].clientY);Z[4]=ge[0],Z[5]=ge[1]}$&&$.unactivate();var we;if(r.touchData.cxt){if(we={originalEvent:T,type:"cxttapend",position:{x:Z[0],y:Z[1]}},$?$.emit(we):H.emit(we),!r.touchData.cxtDragged){var fe={originalEvent:T,type:"cxttap",position:{x:Z[0],y:Z[1]}};$?$.emit(fe):H.emit(fe)}r.touchData.start&&(r.touchData.start._private.grabbed=!1),r.touchData.cxt=!1,r.touchData.start=null,r.redraw();return}if(!T.touches[2]&&H.boxSelectionEnabled()&&r.touchData.selecting){r.touchData.selecting=!1;var me=H.collection(r.getAllInBox(N[0],N[1],N[2],N[3]));N[0]=void 0,N[1]=void 0,N[2]=void 0,N[3]=void 0,N[4]=0,r.redrawHint("select",!0),H.emit({type:"boxend",originalEvent:T,position:{x:Z[0],y:Z[1]}});var be=function(br){return br.selectable()&&!br.selected()};me.emit("box").stdFilter(be).select().emit("boxselect"),me.nonempty()&&r.redrawHint("eles",!0),r.redraw()}if($!=null&&$.unactivate(),T.touches[2])r.data.bgActivePosistion=void 0,r.redrawHint("select",!0);else if(!T.touches[1]){if(!T.touches[0]){if(!T.touches[0]){r.data.bgActivePosistion=void 0,r.redrawHint("select",!0);var ye=r.dragData.touchDragEles;if($!=null){var Ie=$._private.grabbed;g(ye),r.redrawHint("drag",!0),r.redrawHint("eles",!0),Ie&&($.emit("freeon"),ye.emit("free"),r.dragData.didDrag&&($.emit("dragfreeon"),ye.emit("dragfree"))),n($,["touchend","tapend","vmouseup","tapdragout"],T,{x:Z[0],y:Z[1]}),$.unactivate(),r.touchData.start=null}else{var Ve=r.findNearestElement(Z[0],Z[1],!0,!0);n(Ve,["touchend","tapend","vmouseup","tapdragout"],T,{x:Z[0],y:Z[1]})}var gr=r.touchData.startPosition[0]-Z[0],pr=gr*gr,Ge=r.touchData.startPosition[1]-Z[1],Xe=Ge*Ge,Ze=pr+Xe,lr=Ze*ie*ie;r.touchData.singleTouchMoved||($||H.$(":selected").unselect(["tapunselect"]),n($,["tap","vclick"],T,{x:Z[0],y:Z[1]}),re=!1,T.timeStamp-le<=H.multiClickDebounceTime()?(ve&&clearTimeout(ve),re=!0,le=null,n($,["dbltap","vdblclick"],T,{x:Z[0],y:Z[1]})):(ve=setTimeout(function(){re||n($,["onetap","voneclick"],T,{x:Z[0],y:Z[1]})},H.multiClickDebounceTime()),le=T.timeStamp)),$!=null&&!r.dragData.didDrag&&$._private.selectable&&lr"u"){var oe=[],de=function(T){return{clientX:T.clientX,clientY:T.clientY,force:1,identifier:T.pointerId,pageX:T.pageX,pageY:T.pageY,radiusX:T.width/2,radiusY:T.height/2,screenX:T.screenX,screenY:T.screenY,target:T.target}},Le=function(T){return{event:T,touch:de(T)}},Ce=function(T){oe.push(Le(T))},xe=function(T){for(var $=0;$0)return q[0]}return null},d=Object.keys(c),y=0;y0?h:mo(i,s,e,t,a,n,o,l)},checkPoint:function(e,t,a,n,i,s,o,l){l=l==="auto"?gt(n,i):l;var u=2*l;if(Gr(e,t,this.points,s,o,n,i-u,[0,-1],a)||Gr(e,t,this.points,s,o,n-u,i,[0,-1],a))return!0;var v=n/2+2*a,f=i/2+2*a,c=[s-v,o-f,s-v,o,s+v,o,s+v,o-f];return!!(dr(e,t,c)||ft(e,t,u,u,s+n/2-l,o+i/2-l,a)||ft(e,t,u,u,s-n/2+l,o+i/2-l,a))}}};Wr.registerNodeShapes=function(){var r=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",fr(3,0)),this.generateRoundPolygon("round-triangle",fr(3,0)),this.generatePolygon("rectangle",fr(4,0)),r.square=r.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var t=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",t),this.generateRoundPolygon("round-diamond",t)}this.generatePolygon("pentagon",fr(5,0)),this.generateRoundPolygon("round-pentagon",fr(5,0)),this.generatePolygon("hexagon",fr(6,0)),this.generateRoundPolygon("round-hexagon",fr(6,0)),this.generatePolygon("heptagon",fr(7,0)),this.generateRoundPolygon("round-heptagon",fr(7,0)),this.generatePolygon("octagon",fr(8,0)),this.generateRoundPolygon("round-octagon",fr(8,0));var a=new Array(20);{var n=Gn(5,0),i=Gn(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o=e.deqFastCost*w)break}else if(u){if(m>=e.deqCost*h||m>=e.deqAvgCost*c)break}else if(b>=e.deqNoDrawCost*qn)break;var S=e.deq(a,p,y);if(S.length>0)for(var E=0;E0&&(e.onDeqd(a,d),!u&&e.shouldRedraw(a,d,p,y)&&i())},o=e.priority||vi;n.beforeRender(s,o(a))}}}},Mg=function(){function r(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:en;ii(this,r),this.idsByKey=new Ir,this.keyForId=new Ir,this.cachesByLvl=new Ir,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=t}return si(r,[{key:"getIdsFor",value:function(t){t==null&&$e("Can not get id list for null key");var a=this.idsByKey,n=this.idsByKey.get(t);return n||(n=new Vt,a.set(t,n)),n}},{key:"addIdForKey",value:function(t,a){t!=null&&this.getIdsFor(t).add(a)}},{key:"deleteIdForKey",value:function(t,a){t!=null&&this.getIdsFor(t).delete(a)}},{key:"getNumberOfIdsForKey",value:function(t){return t==null?0:this.getIdsFor(t).size}},{key:"updateKeyMappingFor",value:function(t){var a=t.id(),n=this.keyForId.get(a),i=this.getKey(t);this.deleteIdForKey(n,a),this.addIdForKey(i,a),this.keyForId.set(a,i)}},{key:"deleteKeyMappingFor",value:function(t){var a=t.id(),n=this.keyForId.get(a);this.deleteIdForKey(n,a),this.keyForId.delete(a)}},{key:"keyHasChangedFor",value:function(t){var a=t.id(),n=this.keyForId.get(a),i=this.getKey(t);return n!==i}},{key:"isInvalid",value:function(t){return this.keyHasChangedFor(t)||this.doesEleInvalidateKey(t)}},{key:"getCachesAt",value:function(t){var a=this.cachesByLvl,n=this.lvls,i=a.get(t);return i||(i=new Ir,a.set(t,i),n.push(t)),i}},{key:"getCache",value:function(t,a){return this.getCachesAt(a).get(t)}},{key:"get",value:function(t,a){var n=this.getKey(t),i=this.getCache(n,a);return i!=null&&this.updateKeyMappingFor(t),i}},{key:"getForCachedKey",value:function(t,a){var n=this.keyForId.get(t.id()),i=this.getCache(n,a);return i}},{key:"hasCache",value:function(t,a){return this.getCachesAt(a).has(t)}},{key:"has",value:function(t,a){var n=this.getKey(t);return this.hasCache(n,a)}},{key:"setCache",value:function(t,a,n){n.key=t,this.getCachesAt(a).set(t,n)}},{key:"set",value:function(t,a,n){var i=this.getKey(t);this.setCache(i,a,n),this.updateKeyMappingFor(t)}},{key:"deleteCache",value:function(t,a){this.getCachesAt(a).delete(t)}},{key:"delete",value:function(t,a){var n=this.getKey(t);this.deleteCache(n,a)}},{key:"invalidateKey",value:function(t){var a=this;this.lvls.forEach(function(n){return a.deleteCache(t,n)})}},{key:"invalidate",value:function(t){var a=t.id(),n=this.keyForId.get(a);this.deleteKeyMappingFor(t);var i=this.doesEleInvalidateKey(t);return i&&this.invalidateKey(n),i||this.getNumberOfIdsForKey(n)===0}}]),r}(),Fs=25,Ha=50,Ja=-4,ri=3,Lg=7.99,Ag=8,Rg=1024,Og=1024,Ig=1024,zg=.2,Ng=.8,Fg=10,Vg=.15,qg=.1,$g=.9,Hg=.9,Gg=100,Kg=1,Bt={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Wg=rr({getKey:null,doesEleInvalidateKey:en,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:lo,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),sa=function(e,t){var a=this;a.renderer=e,a.onDequeues=[];var n=Wg(t);pe(a,n),a.lookup=new Mg(n.getKey,n.doesEleInvalidateKey),a.setupDequeueing()},Ye=sa.prototype;Ye.reasons=Bt;Ye.getTextureQueue=function(r){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[r]=e.eleImgCaches[r]||[]};Ye.getRetiredTextureQueue=function(r){var e=this,t=e.eleImgCaches.retired=e.eleImgCaches.retired||{},a=t[r]=t[r]||[];return a};Ye.getElementQueue=function(){var r=this,e=r.eleCacheQueue=r.eleCacheQueue||new Ca(function(t,a){return a.reqs-t.reqs});return e};Ye.getElementKeyToQueue=function(){var r=this,e=r.eleKeyToCacheQueue=r.eleKeyToCacheQueue||{};return e};Ye.getElement=function(r,e,t,a,n){var i=this,s=this.renderer,o=s.cy.zoom(),l=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!r.visible()||r.removed()||!i.allowEdgeTxrCaching&&r.isEdge()||!i.allowParentTxrCaching&&r.isParent())return null;if(a==null&&(a=Math.ceil(ci(o*t))),a=Lg||a>ri)return null;var u=Math.pow(2,a),v=e.h*u,f=e.w*u,c=s.eleTextBiggerThanMin(r,u);if(!this.isVisible(r,c))return null;var h=l.get(r,a);if(h&&h.invalidated&&(h.invalidated=!1,h.texture.invalidatedWidth-=h.width),h)return h;var d;if(v<=Fs?d=Fs:v<=Ha?d=Ha:d=Math.ceil(v/Ha)*Ha,v>Ig||f>Og)return null;var y=i.getTextureQueue(d),p=y[y.length-2],g=function(){return i.recycleTexture(d,f)||i.addTexture(d,f)};p||(p=y[y.length-1]),p||(p=g()),p.width-p.usedWidtha;P--)C=i.getElement(r,e,t,P,Bt.downscale);M()}else return i.queueElement(r,E.level-1),E;else{var B;if(!b&&!w&&!S)for(var L=a-1;L>=Ja;L--){var k=l.get(r,L);if(k){B=k;break}}if(m(B))return i.queueElement(r,a),B;p.context.translate(p.usedWidth,0),p.context.scale(u,u),this.drawElement(p.context,r,e,c,!1),p.context.scale(1/u,1/u),p.context.translate(-p.usedWidth,0)}return h={x:p.usedWidth,texture:p,level:a,scale:u,width:f,height:v,scaledLabelShown:c},p.usedWidth+=Math.ceil(f+Ag),p.eleCaches.push(h),l.set(r,a,h),i.checkTextureFullness(p),h};Ye.invalidateElements=function(r){for(var e=0;e=zg*r.width&&this.retireTexture(r)};Ye.checkTextureFullness=function(r){var e=this,t=e.getTextureQueue(r.height);r.usedWidth/r.width>Ng&&r.fullnessChecks>=Fg?et(t,r):r.fullnessChecks++};Ye.retireTexture=function(r){var e=this,t=r.height,a=e.getTextureQueue(t),n=this.lookup;et(a,r),r.retired=!0;for(var i=r.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,fi(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),et(n,s),a.push(s),s}};Ye.queueElement=function(r,e){var t=this,a=t.getElementQueue(),n=t.getElementKeyToQueue(),i=this.getKey(r),s=n[i];if(s)s.level=Math.max(s.level,e),s.eles.merge(r),s.reqs++,a.updateItem(s);else{var o={eles:r.spawn().merge(r),level:e,reqs:1,key:i};a.push(o),n[i]=o}};Ye.dequeue=function(r){for(var e=this,t=e.getElementQueue(),a=e.getElementKeyToQueue(),n=[],i=e.lookup,s=0;s0;s++){var o=t.pop(),l=o.key,u=o.eles[0],v=i.hasCache(u,o.level);if(a[l]=null,v)continue;n.push(o);var f=e.getBoundingBox(u);e.getElement(u,f,r,o.level,Bt.dequeue)}return n};Ye.removeFromQueue=function(r){var e=this,t=e.getElementQueue(),a=e.getElementKeyToQueue(),n=this.getKey(r),i=a[n];i!=null&&(i.eles.length===1?(i.reqs=li,t.updateItem(i),t.pop(),a[n]=null):i.eles.unmerge(r))};Ye.onDequeue=function(r){this.onDequeues.push(r)};Ye.offDequeue=function(r){et(this.onDequeues,r)};Ye.setupDequeueing=bu.setupDequeueing({deqRedrawThreshold:Gg,deqCost:Vg,deqAvgCost:qg,deqNoDrawCost:$g,deqFastCost:Hg,deq:function(e,t,a){return e.dequeue(t,a)},onDeqd:function(e,t){for(var a=0;a=Yg||t>ln)return null}a.validateLayersElesOrdering(t,r);var l=a.layersByLevel,u=Math.pow(2,t),v=l[t]=l[t]||[],f,c=a.levelIsComplete(t,r),h,d=function(){var M=function(O){if(a.validateLayersElesOrdering(O,r),a.levelIsComplete(O,r))return h=l[O],!0},P=function(O){if(!h)for(var A=t+O;ua<=A&&A<=ln&&!M(A);A+=O);};P(1),P(-1);for(var B=v.length-1;B>=0;B--){var L=v[B];L.invalid&&et(v,L)}};if(!c)d();else return v;var y=function(){if(!f){f=hr();for(var M=0;Mqs||L>qs)return null;var k=B*L;if(k>rp)return null;var O=a.makeLayer(f,t);if(P!=null){var A=v.indexOf(P)+1;v.splice(A,0,O)}else(M.insert===void 0||M.insert)&&v.unshift(O);return O};if(a.skipping&&!o)return null;for(var g=null,m=r.length/Ug,b=!o,w=0;w=m||!yo(g.bb,S.boundingBox()))&&(g=p({insert:!0,after:g}),!g))return null;h||b?a.queueLayer(g,S):a.drawEleInLayer(g,S,t,e),g.eles.push(S),x[t]=g}return h||(b?null:v)};tr.getEleLevelForLayerLevel=function(r,e){return r};tr.drawEleInLayer=function(r,e,t,a){var n=this,i=this.renderer,s=r.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(t=n.getEleLevelForLayerLevel(t,a),i.setImgSmoothing(s,!1),i.drawCachedElement(s,e,null,null,t,tp),i.setImgSmoothing(s,!0))};tr.levelIsComplete=function(r,e){var t=this,a=t.layersByLevel[r];if(!a||a.length===0)return!1;for(var n=0,i=0;i0||s.invalid)return!1;n+=s.eles.length}return n===e.length};tr.validateLayersElesOrdering=function(r,e){var t=this.layersByLevel[r];if(t)for(var a=0;a0){e=!0;break}}return e};tr.invalidateElements=function(r){var e=this;r.length!==0&&(e.lastInvalidationTime=Hr(),!(r.length===0||!e.haveLayers())&&e.updateElementsInLayers(r,function(a,n,i){e.invalidateLayer(a)}))};tr.invalidateLayer=function(r){if(this.lastInvalidationTime=Hr(),!r.invalid){var e=r.level,t=r.eles,a=this.layersByLevel[e];et(a,r),r.elesQueue=[],r.invalid=!0,r.replacement&&(r.replacement.invalid=!0);for(var n=0;n3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(i&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var l;t&&(l=t,r.translate(-l.x1,-l.y1));var u=i?e.pstyle("opacity").value:1,v=i?e.pstyle("line-opacity").value:1,f=e.pstyle("curve-style").value,c=e.pstyle("line-style").value,h=e.pstyle("width").pfValue,d=e.pstyle("line-cap").value,y=e.pstyle("line-outline-width").value,p=e.pstyle("line-outline-color").value,g=u*v,m=u*v,b=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:g;f==="straight-triangle"?(s.eleStrokeStyle(r,e,O),s.drawEdgeTrianglePath(e,r,o.allpts)):(r.lineWidth=h,r.lineCap=d,s.eleStrokeStyle(r,e,O),s.drawEdgePath(e,r,o.allpts,c),r.lineCap="butt")},w=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:g;if(r.lineWidth=h+y,r.lineCap=d,y>0)s.colorStrokeStyle(r,p[0],p[1],p[2],O);else{r.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(e,r,o.allpts):(s.drawEdgePath(e,r,o.allpts,c),r.lineCap="butt")},S=function(){n&&s.drawEdgeOverlay(r,e)},E=function(){n&&s.drawEdgeUnderlay(r,e)},x=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:m;s.drawArrowheads(r,e,O)},D=function(){s.drawElementText(r,e,null,a)};r.lineJoin="round";var C=e.pstyle("ghost").value==="yes";if(C){var M=e.pstyle("ghost-offset-x").pfValue,P=e.pstyle("ghost-offset-y").pfValue,B=e.pstyle("ghost-opacity").value,L=g*B;r.translate(M,P),b(L),x(L),r.translate(-M,-P)}else w();E(),b(),x(),S(),D(),t&&r.translate(l.x1,l.y1)}};var Eu=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,a){if(a.visible()){var n=a.pstyle("".concat(e,"-opacity")).value;if(n!==0){var i=this,s=i.usePaths(),o=a._private.rscratch,l=a.pstyle("".concat(e,"-padding")).pfValue,u=2*l,v=a.pstyle("".concat(e,"-color")).value;t.lineWidth=u,o.edgeType==="self"&&!s?t.lineCap="butt":t.lineCap="round",i.colorStrokeStyle(t,v[0],v[1],v[2],n),i.drawEdgePath(a,t,o.allpts,"solid")}}}};Ur.drawEdgeOverlay=Eu("overlay");Ur.drawEdgeUnderlay=Eu("underlay");Ur.drawEdgePath=function(r,e,t,a){var n=r._private.rscratch,i=e,s,o=!1,l=this.usePaths(),u=r.pstyle("line-dash-pattern").pfValue,v=r.pstyle("line-dash-offset").pfValue;if(l){var f=t.join("$"),c=n.pathCacheKey&&n.pathCacheKey===f;c?(s=e=n.pathCache,o=!0):(s=e=new Path2D,n.pathCacheKey=f,n.pathCache=s)}if(i.setLineDash)switch(a){case"dotted":i.setLineDash([1,1]);break;case"dashed":i.setLineDash(u),i.lineDashOffset=v;break;case"solid":i.setLineDash([]);break}if(!o&&!n.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(t[0],t[1]),n.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var h=2;h+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(a==null){if(i&&!s.eleTextBiggerThanMin(e))return}else if(a===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var l=s.getLabelJustification(e);r.textAlign=l,r.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,v=e.pstyle("label"),f=e.pstyle("source-label"),c=e.pstyle("target-label");if(u||(!v||!v.value)&&(!f||!f.value)&&(!c||!c.value))return;r.textAlign="center",r.textBaseline="bottom"}var h=!t,d;t&&(d=t,r.translate(-d.x1,-d.y1)),n==null?(s.drawText(r,e,null,h,i),e.isEdge()&&(s.drawText(r,e,"source",h,i),s.drawText(r,e,"target",h,i))):s.drawText(r,e,n,h,i),t&&r.translate(d.x1,d.y1)};wt.getFontCache=function(r){var e;this.fontCaches=this.fontCaches||[];for(var t=0;t2&&arguments[2]!==void 0?arguments[2]:!0,a=e.pstyle("font-style").strValue,n=e.pstyle("font-size").pfValue+"px",i=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=t?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,l=e.pstyle("text-outline-opacity").value*o,u=e.pstyle("color").value,v=e.pstyle("text-outline-color").value;r.font=a+" "+s+" "+n+" "+i,r.lineJoin="round",this.colorFillStyle(r,u[0],u[1],u[2],o),this.colorStrokeStyle(r,v[0],v[1],v[2],l)};function Hn(r,e,t,a,n){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;r.beginPath(),r.moveTo(e+i,t),r.lineTo(e+a-i,t),r.quadraticCurveTo(e+a,t,e+a,t+i),r.lineTo(e+a,t+n-i),r.quadraticCurveTo(e+a,t+n,e+a-i,t+n),r.lineTo(e+i,t+n),r.quadraticCurveTo(e,t+n,e,t+n-i),r.lineTo(e,t+i),r.quadraticCurveTo(e,t,e+i,t),r.closePath(),s?r.stroke():r.fill()}wt.getTextAngle=function(r,e){var t,a=r._private,n=a.rscratch,i=e?e+"-":"",s=r.pstyle(i+"text-rotation"),o=kr(n,"labelAngle",e);return s.strValue==="autorotate"?t=r.isEdge()?o:0:s.strValue==="none"?t=0:t=s.pfValue,t};wt.drawText=function(r,e,t){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=e._private,s=i.rscratch,o=n?e.effectiveOpacity():1;if(!(n&&(o===0||e.pstyle("text-opacity").value===0))){t==="main"&&(t=null);var l=kr(s,"labelX",t),u=kr(s,"labelY",t),v,f,c=this.getLabelText(e,t);if(c!=null&&c!==""&&!isNaN(l)&&!isNaN(u)){this.setupTextStyle(r,e,n);var h=t?t+"-":"",d=kr(s,"labelWidth",t),y=kr(s,"labelHeight",t),p=e.pstyle(h+"text-margin-x").pfValue,g=e.pstyle(h+"text-margin-y").pfValue,m=e.isEdge(),b=e.pstyle("text-halign").value,w=e.pstyle("text-valign").value;m&&(b="center",w="center"),l+=p,u+=g;var S;switch(a?S=this.getTextAngle(e,t):S=0,S!==0&&(v=l,f=u,r.translate(v,f),r.rotate(S),l=0,u=0),w){case"top":break;case"center":u+=y/2;break;case"bottom":u+=y;break}var E=e.pstyle("text-background-opacity").value,x=e.pstyle("text-border-opacity").value,D=e.pstyle("text-border-width").pfValue,C=e.pstyle("text-background-padding").pfValue,M=e.pstyle("text-background-shape").strValue,P=M.indexOf("round")===0,B=2;if(E>0||D>0&&x>0){var L=l-C;switch(b){case"left":L-=d;break;case"center":L-=d/2;break}var k=u-y-C,O=d+2*C,A=y+2*C;if(E>0){var R=r.fillStyle,I=e.pstyle("text-background-color").value;r.fillStyle="rgba("+I[0]+","+I[1]+","+I[2]+","+E*o+")",P?Hn(r,L,k,O,A,B):r.fillRect(L,k,O,A),r.fillStyle=R}if(D>0&&x>0){var V=r.strokeStyle,G=r.lineWidth,F=e.pstyle("text-border-color").value,q=e.pstyle("text-border-style").value;if(r.strokeStyle="rgba("+F[0]+","+F[1]+","+F[2]+","+x*o+")",r.lineWidth=D,r.setLineDash)switch(q){case"dotted":r.setLineDash([1,1]);break;case"dashed":r.setLineDash([4,2]);break;case"double":r.lineWidth=D/4,r.setLineDash([]);break;case"solid":r.setLineDash([]);break}if(P?Hn(r,L,k,O,A,B,"stroke"):r.strokeRect(L,k,O,A),q==="double"){var Y=D/2;P?Hn(r,L+Y,k+Y,O-Y*2,A-Y*2,B,"stroke"):r.strokeRect(L+Y,k+Y,O-Y*2,A-Y*2)}r.setLineDash&&r.setLineDash([]),r.lineWidth=G,r.strokeStyle=V}}var Q=2*e.pstyle("text-outline-width").pfValue;if(Q>0&&(r.lineWidth=Q),e.pstyle("text-wrap").value==="wrap"){var J=kr(s,"labelWrapCachedLines",t),_=kr(s,"labelLineHeight",t),j=d/2,W=this.getLabelJustification(e);switch(W==="auto"||(b==="left"?W==="left"?l+=-d:W==="center"&&(l+=-j):b==="center"?W==="left"?l+=-j:W==="right"&&(l+=j):b==="right"&&(W==="center"?l+=j:W==="right"&&(l+=d))),w){case"top":u-=(J.length-1)*_;break;case"center":case"bottom":u-=(J.length-1)*_;break}for(var z=0;z0&&r.strokeText(J[z],l,u),r.fillText(J[z],l,u),u+=_}else Q>0&&r.strokeText(c,l,u),r.fillText(c,l,u);S!==0&&(r.rotate(-S),r.translate(-v,-f))}}};var Xt={};Xt.drawNode=function(r,e,t){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,l,u=e._private,v=u.rscratch,f=e.position();if(!(!ne(f.x)||!ne(f.y))&&!(i&&!e.visible())){var c=i?e.effectiveOpacity():1,h=s.usePaths(),d,y=!1,p=e.padding();o=e.width()+2*p,l=e.height()+2*p;var g;t&&(g=t,r.translate(-g.x1,-g.y1));for(var m=e.pstyle("background-image"),b=m.value,w=new Array(b.length),S=new Array(b.length),E=0,x=0;x0&&arguments[0]!==void 0?arguments[0]:L;s.eleFillStyle(r,e,N)},z=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:F;s.colorStrokeStyle(r,k[0],k[1],k[2],N)},K=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:J;s.colorStrokeStyle(r,Y[0],Y[1],Y[2],N)},X=function(N,H,ie,Z){var se=s.nodePathCache=s.nodePathCache||[],ge=uo(ie==="polygon"?ie+","+Z.join(","):ie,""+H,""+N,""+j),we=se[ge],fe,me=!1;return we!=null?(fe=we,me=!0,v.pathCache=fe):(fe=new Path2D,se[ge]=v.pathCache=fe),{path:fe,cacheHit:me}},ae=e.pstyle("shape").strValue,he=e.pstyle("shape-polygon-points").pfValue;if(h){r.translate(f.x,f.y);var te=X(o,l,ae,he);d=te.path,y=te.cacheHit}var re=function(){if(!y){var N=f;h&&(N={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(d||r,N.x,N.y,o,l,j,v)}h?r.fill(d):r.fill()},ve=function(){for(var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,H=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ie=u.backgrounding,Z=0,se=0;se0&&arguments[0]!==void 0?arguments[0]:!1,H=arguments.length>1&&arguments[1]!==void 0?arguments[1]:c;s.hasPie(e)&&(s.drawPie(r,e,H),N&&(h||s.nodeShapes[s.getNodeShape(e)].draw(r,f.x,f.y,o,l,j,v)))},oe=function(){var N=arguments.length>0&&arguments[0]!==void 0?arguments[0]:c,H=(P>0?P:-P)*N,ie=P>0?0:255;P!==0&&(s.colorFillStyle(r,ie,ie,ie,H),h?r.fill(d):r.fill())},de=function(){if(B>0){if(r.lineWidth=B,r.lineCap=R,r.lineJoin=A,r.setLineDash)switch(O){case"dotted":r.setLineDash([1,1]);break;case"dashed":r.setLineDash(V),r.lineDashOffset=G;break;case"solid":case"double":r.setLineDash([]);break}if(I!=="center"){if(r.save(),r.lineWidth*=2,I==="inside")h?r.clip(d):r.clip();else{var N=new Path2D;N.rect(-o/2-B,-l/2-B,o+2*B,l+2*B),N.addPath(d),r.clip(N,"evenodd")}h?r.stroke(d):r.stroke(),r.restore()}else h?r.stroke(d):r.stroke();if(O==="double"){r.lineWidth=B/3;var H=r.globalCompositeOperation;r.globalCompositeOperation="destination-out",h?r.stroke(d):r.stroke(),r.globalCompositeOperation=H}r.setLineDash&&r.setLineDash([])}},Le=function(){if(q>0){if(r.lineWidth=q,r.lineCap="butt",r.setLineDash)switch(Q){case"dotted":r.setLineDash([1,1]);break;case"dashed":r.setLineDash([4,2]);break;case"solid":case"double":r.setLineDash([]);break}var N=f;h&&(N={x:0,y:0});var H=s.getNodeShape(e),ie=B;I==="inside"&&(ie=0),I==="outside"&&(ie*=2);var Z=(o+ie+(q+_))/o,se=(l+ie+(q+_))/l,ge=o*Z,we=l*se,fe=s.nodeShapes[H].points,me;if(h){var be=X(ge,we,H,fe);me=be.path}if(H==="ellipse")s.drawEllipsePath(me||r,N.x,N.y,ge,we);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(H)){var ye=0,Ie=0,Ve=0;H==="round-diamond"?ye=(ie+_+q)*1.4:H==="round-heptagon"?(ye=(ie+_+q)*1.075,Ve=-(ie/2+_+q)/35):H==="round-hexagon"?ye=(ie+_+q)*1.12:H==="round-pentagon"?(ye=(ie+_+q)*1.13,Ve=-(ie/2+_+q)/15):H==="round-tag"?(ye=(ie+_+q)*1.12,Ie=(ie/2+q+_)*.07):H==="round-triangle"&&(ye=(ie+_+q)*(Math.PI/2),Ve=-(ie+_/2+q)/Math.PI),ye!==0&&(Z=(o+ye)/o,ge=o*Z,["round-hexagon","round-tag"].includes(H)||(se=(l+ye)/l,we=l*se)),j=j==="auto"?wo(ge,we):j;for(var gr=ge/2,pr=we/2,Ge=j+(ie+q+_)/2,Xe=new Array(fe.length/2),Ze=new Array(fe.length/2),lr=0;lr0){if(n=n||a.position(),i==null||s==null){var h=a.padding();i=a.width()+2*h,s=a.height()+2*h}o.colorFillStyle(t,v[0],v[1],v[2],u),o.nodeShapes[f].draw(t,n.x,n.y,i+l*2,s+l*2,c),t.fill()}}}};Xt.drawNodeOverlay=Cu("overlay");Xt.drawNodeUnderlay=Cu("underlay");Xt.hasPie=function(r){return r=r[0],r._private.hasPie};Xt.drawPie=function(r,e,t,a){e=e[0],a=a||e.position();var n=e.cy().style(),i=e.pstyle("pie-size"),s=a.x,o=a.y,l=e.width(),u=e.height(),v=Math.min(l,u)/2,f=0,c=this.usePaths();c&&(s=0,o=0),i.units==="%"?v=v*i.pfValue:i.pfValue!==void 0&&(v=i.pfValue/2);for(var h=1;h<=n.pieBackgroundN;h++){var d=e.pstyle("pie-"+h+"-background-size").value,y=e.pstyle("pie-"+h+"-background-color").value,p=e.pstyle("pie-"+h+"-background-opacity").value*t,g=d/100;g+f>1&&(g=1-f);var m=1.5*Math.PI+2*Math.PI*f,b=2*Math.PI*g,w=m+b;d===0||f>=1||f+g>1||(r.beginPath(),r.moveTo(s,o),r.arc(s,o,v,m,w),r.closePath(),this.colorFillStyle(r,y[0],y[1],y[2],p),r.fill(),f+=g)}};var mr={},dp=100;mr.getPixelRatio=function(){var r=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),t=r.backingStorePixelRatio||r.webkitBackingStorePixelRatio||r.mozBackingStorePixelRatio||r.msBackingStorePixelRatio||r.oBackingStorePixelRatio||r.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/t};mr.paintCache=function(r){for(var e=this.paintCaches=this.paintCaches||[],t=!0,a,n=0;ns.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!f&&(v[s.NODE]=!0,v[s.SELECT_BOX]=!0);var m=l.style(),b=l.zoom(),w=n!==void 0?n:b,S=l.pan(),E={x:S.x,y:S.y},x={zoom:b,pan:{x:S.x,y:S.y}},D=s.prevViewport,C=D===void 0||x.zoom!==D.zoom||x.pan.x!==D.pan.x||x.pan.y!==D.pan.y;!C&&!(y&&!d)&&(s.motionBlurPxRatio=1),i&&(E=i),w*=o,E.x*=o,E.y*=o;var M=s.getCachedZSortedEles();function P(te,re,ve,le,oe){var de=te.globalCompositeOperation;te.globalCompositeOperation="destination-out",s.colorFillStyle(te,255,255,255,s.motionBlurTransparency),te.fillRect(re,ve,le,oe),te.globalCompositeOperation=de}function B(te,re){var ve,le,oe,de;!s.clearingMotionBlur&&(te===u.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||te===u.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?(ve={x:S.x*h,y:S.y*h},le=b*h,oe=s.canvasWidth*h,de=s.canvasHeight*h):(ve=E,le=w,oe=s.canvasWidth,de=s.canvasHeight),te.setTransform(1,0,0,1,0,0),re==="motionBlur"?P(te,0,0,oe,de):!e&&(re===void 0||re)&&te.clearRect(0,0,oe,de),t||(te.translate(ve.x,ve.y),te.scale(le,le)),i&&te.translate(i.x,i.y),n&&te.scale(n,n)}if(f||(s.textureDrawLastFrame=!1),f){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=l.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var L=s.data.bufferContexts[s.TEXTURE_BUFFER];L.setTransform(1,0,0,1,0,0),L.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:L,drawOnlyNodeLayer:!0,forcedPxRatio:o*s.textureMult});var x=s.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:s.canvasWidth,height:s.canvasHeight};x.mpan={x:(0-x.pan.x)/x.zoom,y:(0-x.pan.y)/x.zoom}}v[s.DRAG]=!1,v[s.NODE]=!1;var k=u.contexts[s.NODE],O=s.textureCache.texture,x=s.textureCache.viewport;k.setTransform(1,0,0,1,0,0),c?P(k,0,0,x.width,x.height):k.clearRect(0,0,x.width,x.height);var A=m.core("outside-texture-bg-color").value,R=m.core("outside-texture-bg-opacity").value;s.colorFillStyle(k,A[0],A[1],A[2],R),k.fillRect(0,0,x.width,x.height);var b=l.zoom();B(k,!1),k.clearRect(x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o),k.drawImage(O,x.mpan.x,x.mpan.y,x.width/x.zoom/o,x.height/x.zoom/o)}else s.textureOnViewport&&!e&&(s.textureCache=null);var I=l.extent(),V=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),G=s.hideEdgesOnViewport&&V,F=[];if(F[s.NODE]=!v[s.NODE]&&c&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,F[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),F[s.DRAG]=!v[s.DRAG]&&c&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,F[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),v[s.NODE]||t||a||F[s.NODE]){var q=c&&!F[s.NODE]&&h!==1,k=e||(q?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:u.contexts[s.NODE]),Y=c&&!q?"motionBlur":void 0;B(k,Y),G?s.drawCachedNodes(k,M.nondrag,o,I):s.drawLayeredElements(k,M.nondrag,o,I),s.debug&&s.drawDebugPoints(k,M.nondrag),!t&&!c&&(v[s.NODE]=!1)}if(!a&&(v[s.DRAG]||t||F[s.DRAG])){var q=c&&!F[s.DRAG]&&h!==1,k=e||(q?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:u.contexts[s.DRAG]);B(k,c&&!q?"motionBlur":void 0),G?s.drawCachedNodes(k,M.drag,o,I):s.drawCachedElements(k,M.drag,o,I),s.debug&&s.drawDebugPoints(k,M.drag),!t&&!c&&(v[s.DRAG]=!1)}if(s.showFps||!a&&v[s.SELECT_BOX]&&!t){var k=e||u.contexts[s.SELECT_BOX];if(B(k),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var b=s.cy.zoom(),Q=m.core("selection-box-border-width").value/b;k.lineWidth=Q,k.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",k.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),Q>0&&(k.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",k.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(u.bgActivePosistion&&!s.hoverData.selecting){var b=s.cy.zoom(),J=u.bgActivePosistion;k.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",k.beginPath(),k.arc(J.x,J.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),k.fill()}var _=s.lastRedrawTime;if(s.showFps&&_){_=Math.round(_);var j=Math.round(1e3/_);k.setTransform(1,0,0,1,0,0),k.fillStyle="rgba(255, 0, 0, 0.75)",k.strokeStyle="rgba(255, 0, 0, 0.75)",k.lineWidth=1,k.fillText("1 frame = "+_+" ms = "+j+" fps",0,20);var W=60;k.strokeRect(0,30,250,20),k.fillRect(0,30,250*Math.min(j/W,1),20)}t||(v[s.SELECT_BOX]=!1)}if(c&&h!==1){var z=u.contexts[s.NODE],K=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],X=u.contexts[s.DRAG],ae=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],he=function(re,ve,le){re.setTransform(1,0,0,1,0,0),le||!g?re.clearRect(0,0,s.canvasWidth,s.canvasHeight):P(re,0,0,s.canvasWidth,s.canvasHeight);var oe=h;re.drawImage(ve,0,0,s.canvasWidth*oe,s.canvasHeight*oe,0,0,s.canvasWidth,s.canvasHeight)};(v[s.NODE]||F[s.NODE])&&(he(z,K,F[s.NODE]),v[s.NODE]=!1),(v[s.DRAG]||F[s.DRAG])&&(he(X,ae,F[s.DRAG]),v[s.DRAG]=!1)}s.prevViewport=x,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),c&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!f,s.mbFrames=0,v[s.NODE]=!0,v[s.DRAG]=!0,s.redraw()},dp)),e||l.emit("render")};var it={};it.drawPolygonPath=function(r,e,t,a,n,i){var s=a/2,o=n/2;r.beginPath&&r.beginPath(),r.moveTo(e+s*i[0],t+o*i[1]);for(var l=1;l0&&s>0){h.clearRect(0,0,i,s),h.globalCompositeOperation="source-over";var d=this.getCachedZSortedEles();if(r.full)h.translate(-a.x1*u,-a.y1*u),h.scale(u,u),this.drawElements(h,d),h.scale(1/u,1/u),h.translate(a.x1*u,a.y1*u);else{var y=e.pan(),p={x:y.x*u,y:y.y*u};u*=e.zoom(),h.translate(p.x,p.y),h.scale(u,u),this.drawElements(h,d),h.scale(1/u,1/u),h.translate(-p.x,-p.y)}r.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=r.bg,h.rect(0,0,i,s),h.fill())}return c};function hp(r,e){for(var t=atob(r),a=new ArrayBuffer(t.length),n=new Uint8Array(a),i=0;i"u"?"undefined":Ue(OffscreenCanvas))!=="undefined")t=new OffscreenCanvas(r,e);else{var a=this.cy.window(),n=a.document;t=n.createElement("canvas"),t.width=r,t.height=e}return t};[xu,Fr,Ur,Pi,wt,Xt,mr,it,Pa,Du].forEach(function(r){pe(De,r)});var yp=[{name:"null",impl:uu},{name:"base",impl:mu},{name:"canvas",impl:gp}],mp=[{type:"layout",extensions:Sg},{type:"renderer",extensions:yp}],Pu={},Bu={};function Mu(r,e,t){var a=t,n=function(D){Me("Can not register `"+e+"` for `"+r+"` since `"+D+"` already exists in the prototype and can not be overridden")};if(r==="core"){if(ba.prototype[e])return n(e);ba.prototype[e]=t}else if(r==="collection"){if(er.prototype[e])return n(e);er.prototype[e]=t}else if(r==="layout"){for(var i=function(D){this.options=D,t.call(this,D),Te(this._private)||(this._private={}),this._private.cy=D.cy,this._private.listeners=[],this.createEmitter()},s=i.prototype=Object.create(t.prototype),o=[],l=0;l{b.clear(),J.clear(),f.clear()},"clear"),O=X((e,t)=>{const n=b.get(t)||[];return i.trace("In isDescendant",t," ",e," = ",n.includes(e)),n.includes(e)},"isDescendant"),se=X((e,t)=>{const n=b.get(t)||[];return i.info("Descendants of ",t," is ",n),i.info("Edge is ",e),e.v===t||e.w===t?!1:n?n.includes(e.v)||O(e.v,t)||O(e.w,t)||n.includes(e.w):(i.debug("Tilt, ",t,",not in descendants"),!1)},"edgeInCluster"),G=X((e,t,n,o)=>{i.warn("Copying children of ",e,"root",o,"data",t.node(e),o);const c=t.children(e)||[];e!==o&&c.push(e),i.warn("Copying (nodes) clusterId",e,"nodes",c),c.forEach(a=>{if(t.children(a).length>0)G(a,t,n,o);else{const r=t.node(a);i.info("cp ",a," to ",o," with parent ",e),n.setNode(a,r),o!==t.parent(a)&&(i.warn("Setting parent",a,t.parent(a)),n.setParent(a,t.parent(a))),e!==o&&a!==e?(i.debug("Setting parent",a,e),n.setParent(a,e)):(i.info("In copy ",e,"root",o,"data",t.node(e),o),i.debug("Not Setting parent for node=",a,"cluster!==rootId",e!==o,"node!==clusterId",a!==e));const u=t.edges(a);i.debug("Copying Edges",u),u.forEach(l=>{i.info("Edge",l);const v=t.edge(l.v,l.w,l.name);i.info("Edge data",v,o);try{se(l,o)?(i.info("Copying as ",l.v,l.w,v,l.name),n.setEdge(l.v,l.w,v,l.name),i.info("newGraph edges ",n.edges(),n.edge(n.edges()[0]))):i.info("Skipping copy of edge ",l.v,"-->",l.w," rootId: ",o," clusterId:",e)}catch(C){i.error(C)}})}i.debug("Removing node",a),t.removeNode(a)})},"copy"),R=X((e,t)=>{const n=t.children(e);let o=[...n];for(const c of n)J.set(c,e),o=[...o,...R(c,t)];return o},"extractDescendants"),ie=X((e,t,n)=>{const o=e.edges().filter(l=>l.v===t||l.w===t),c=e.edges().filter(l=>l.v===n||l.w===n),a=o.map(l=>({v:l.v===t?n:l.v,w:l.w===t?t:l.w})),r=c.map(l=>({v:l.v,w:l.w}));return a.filter(l=>r.some(v=>l.v===v.v&&l.w===v.w))},"findCommonEdges"),D=X((e,t,n)=>{const o=t.children(e);if(i.trace("Searching children of id ",e,o),o.length<1)return e;let c;for(const a of o){const r=D(a,t,n),u=ie(t,n,r);if(r)if(u.length>0)c=r;else return r}return c},"findNonClusterChild"),k=X(e=>!f.has(e)||!f.get(e).externalConnections?e:f.has(e)?f.get(e).id:e,"getAnchorId"),re=X((e,t)=>{if(!e||t>10){i.debug("Opting out, no graph ");return}else i.debug("Opting in, graph ");e.nodes().forEach(function(n){e.children(n).length>0&&(i.warn("Cluster identified",n," Replacement id in edges: ",D(n,e,n)),b.set(n,R(n,e)),f.set(n,{id:D(n,e,n),clusterData:e.node(n)}))}),e.nodes().forEach(function(n){const o=e.children(n),c=e.edges();o.length>0?(i.debug("Cluster identified",n,b),c.forEach(a=>{const r=O(a.v,n),u=O(a.w,n);r^u&&(i.warn("Edge: ",a," leaves cluster ",n),i.warn("Descendants of XXX ",n,": ",b.get(n)),f.get(n).externalConnections=!0)})):i.debug("Not a cluster ",n,b)});for(let n of f.keys()){const o=f.get(n).id,c=e.parent(o);c!==n&&f.has(c)&&!f.get(c).externalConnections&&(f.get(n).id=c)}e.edges().forEach(function(n){const o=e.edge(n);i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),i.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let c=n.v,a=n.w;if(i.warn("Fix XXX",f,"ids:",n.v,n.w,"Translating: ",f.get(n.v)," --- ",f.get(n.w)),f.get(n.v)||f.get(n.w)){if(i.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),c=k(n.v),a=k(n.w),e.removeEdge(n.v,n.w,n.name),c!==n.v){const r=e.parent(c);f.get(r).externalConnections=!0,o.fromCluster=n.v}if(a!==n.w){const r=e.parent(a);f.get(r).externalConnections=!0,o.toCluster=n.w}i.warn("Fix Replacing with XXX",c,a,n.name),e.setEdge(c,a,o,n.name)}}),i.warn("Adjusted Graph",p(e)),T(e,0),i.trace(f)},"adjustClustersAndEdges"),T=X((e,t)=>{var c,a;if(i.warn("extractor - ",t,p(e),e.children("D")),t>10){i.error("Bailing out");return}let n=e.nodes(),o=!1;for(const r of n){const u=e.children(r);o=o||u.length>0}if(!o){i.debug("Done, no node has children",e.nodes());return}i.debug("Nodes = ",n,t);for(const r of n)if(i.debug("Extracting node",r,f,f.has(r)&&!f.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",t),!f.has(r))i.debug("Not a cluster",r,t);else if(!f.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){i.warn("Cluster without external connections, without a parent and with children",r,t);let l=e.graph().rankdir==="TB"?"LR":"TB";(a=(c=f.get(r))==null?void 0:c.clusterData)!=null&&a.dir&&(l=f.get(r).clusterData.dir,i.warn("Fixing dir",f.get(r).clusterData.dir,l));const v=new B({multigraph:!0,compound:!0}).setGraph({rankdir:l,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});i.warn("Old graph before copy",p(e)),G(r,e,v,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:f.get(r).clusterData,label:f.get(r).label,graph:v}),i.warn("New graph after copy node: (",r,")",p(v)),i.debug("Old graph after copy",p(e))}else i.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!f.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),t),i.debug(f);n=e.nodes(),i.warn("New list of nodes",n);for(const r of n){const u=e.node(r);i.warn(" Now next level",r,u),u!=null&&u.clusterNode&&T(u.graph,t+1)}},"extractor"),M=X((e,t)=>{if(t.length===0)return[];let n=Object.assign([],t);return t.forEach(o=>{const c=e.children(o),a=M(e,c);n=[...n,...a]}),n},"sorter"),oe=X(e=>M(e,e.children()),"sortNodesByHierarchy"),j=X(async(e,t,n,o,c,a)=>{i.warn("Graph in recursive render:XAX",p(t),c);const r=t.graph().rankdir;i.trace("Dir in recursive render - dir:",r);const u=e.insert("g").attr("class","root");t.nodes()?i.info("Recursive render XXX",t.nodes()):i.info("No nodes found for",t),t.edges().length>0&&i.info("Recursive edges",t.edge(t.edges()[0]));const l=u.insert("g").attr("class","clusters"),v=u.insert("g").attr("class","edgePaths"),C=u.insert("g").attr("class","edgeLabels"),g=u.insert("g").attr("class","nodes");await Promise.all(t.nodes().map(async function(d){const s=t.node(d);if(c!==void 0){const m=JSON.parse(JSON.stringify(c.clusterData));i.trace(`Setting data for parent cluster XXX + Node.id = `,d,` + data=`,m.height,` +Parent cluster`,c.height),t.setNode(c.id,m),t.parent(d)||(i.trace("Setting parent",d,c.id),t.setParent(d,c.id,m))}if(i.info("(Insert) Node XXX"+d+": "+JSON.stringify(t.node(d))),s!=null&&s.clusterNode){i.info("Cluster identified XBX",d,s.width,t.node(d));const{ranksep:m,nodesep:h}=t.graph();s.graph.setGraph({...s.graph.graph(),ranksep:m+25,nodesep:h});const N=await j(g,s.graph,n,o,t.node(d),a),x=N.elem;z(s,x),s.diff=N.diff||0,i.info("New compound node after recursive render XAX",d,"width",s.width,"height",s.height),U(x,s)}else t.children(d).length>0?(i.trace("Cluster - the non recursive path XBX",d,s.id,s,s.width,"Graph:",t),i.trace(D(s.id,t)),f.set(s.id,{id:D(s.id,t),node:s})):(i.trace("Node - the non recursive path XAX",d,g,t.node(d),r),await $(g,t.node(d),{config:a,dir:r}))})),await X(async()=>{const d=t.edges().map(async function(s){const m=t.edge(s.v,s.w,s.name);i.info("Edge "+s.v+" -> "+s.w+": "+JSON.stringify(s)),i.info("Edge "+s.v+" -> "+s.w+": ",s," ",JSON.stringify(t.edge(s))),i.info("Fix",f,"ids:",s.v,s.w,"Translating: ",f.get(s.v),f.get(s.w)),await Z(C,m)});await Promise.all(d)},"processEdges")(),i.info("Graph before layout:",JSON.stringify(p(t))),i.info("############################################# XXX"),i.info("### Layout ### XXX"),i.info("############################################# XXX"),I(t),i.info("Graph after layout:",JSON.stringify(p(t)));let E=0,{subGraphTitleTotalMargin:y}=q(a);return await Promise.all(oe(t).map(async function(d){var m;const s=t.node(d);if(i.info("Position XBX => "+d+": ("+s.x,","+s.y,") width: ",s.width," height: ",s.height),s!=null&&s.clusterNode)s.y+=y,i.info("A tainted cluster node XBX1",d,s.id,s.width,s.height,s.x,s.y,t.parent(d)),f.get(s.id).node=s,P(s);else if(t.children(d).length>0){i.info("A pure cluster node XBX1",d,s.id,s.x,s.y,s.width,s.height,t.parent(d)),s.height+=y,t.node(s.parentId);const h=(s==null?void 0:s.padding)/2||0,N=((m=s==null?void 0:s.labelBBox)==null?void 0:m.height)||0,x=N-h||0;i.debug("OffsetY",x,"labelHeight",N,"halfPadding",h),await K(l,s),f.get(s.id).node=s}else{const h=t.node(s.parentId);s.y+=y/2,i.info("A regular node XBX1 - using the padding",s.id,"parent",s.parentId,s.width,s.height,s.x,s.y,"offsetY",s.offsetY,"parent",h,h==null?void 0:h.offsetY,s),P(s)}})),t.edges().forEach(function(d){const s=t.edge(d);i.info("Edge "+d.v+" -> "+d.w+": "+JSON.stringify(s),s),s.points.forEach(x=>x.y+=y/2);const m=t.node(d.v);var h=t.node(d.w);const N=Q(v,s,f,n,m,h,o);W(s,N)}),t.nodes().forEach(function(d){const s=t.node(d);i.info(d,s.type,s.diff),s.isGroup&&(E=s.diff)}),i.warn("Returning from recursive render XAX",u,E),{elem:u,diff:E}},"recursiveRender"),me=X(async(e,t)=>{var a,r,u,l,v,C;const n=new B({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:((a=e.config)==null?void 0:a.nodeSpacing)||((u=(r=e.config)==null?void 0:r.flowchart)==null?void 0:u.nodeSpacing)||e.nodeSpacing,ranksep:((l=e.config)==null?void 0:l.rankSpacing)||((C=(v=e.config)==null?void 0:v.flowchart)==null?void 0:C.rankSpacing)||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),o=t.select("g");F(o,e.markers,e.type,e.diagramId),Y(),_(),H(),te(),e.nodes.forEach(g=>{n.setNode(g.id,{...g}),g.parentId&&n.setParent(g.id,g.parentId)}),i.debug("Edges:",e.edges),e.edges.forEach(g=>{if(g.start===g.end){const w=g.start,E=w+"---"+w+"---1",y=w+"---"+w+"---2",d=n.node(w);n.setNode(E,{domId:E,id:E,parentId:d.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),n.setParent(E,d.parentId),n.setNode(y,{domId:y,id:y,parentId:d.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),n.setParent(y,d.parentId);const s=structuredClone(g),m=structuredClone(g),h=structuredClone(g);s.label="",s.arrowTypeEnd="none",s.id=w+"-cyclic-special-1",m.arrowTypeEnd="none",m.id=w+"-cyclic-special-mid",h.label="",d.isGroup&&(s.fromCluster=w,h.toCluster=w),h.id=w+"-cyclic-special-2",n.setEdge(w,E,s,w+"-cyclic-special-0"),n.setEdge(E,y,m,w+"-cyclic-special-1"),n.setEdge(y,w,h,w+"-cyc{const t=v({...I,...T().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),Y=n(()=>m.packet,"getPacket"),M=n(t=>{t.length>0&&m.packet.push(t)},"pushWord"),O=n(()=>{E(),m=structuredClone(C)},"clear"),h={pushWord:M,getPacket:Y,getConfig:L,clear:O,setAccTitle:S,getAccTitle:F,setDiagramTitle:z,getDiagramTitle:P,getAccDescription:W,setAccDescription:D},q=1e4,G=n(t=>{w(t,h);let e=-1,o=[],s=1;const{bitsPerRow:i}=h.getConfig();for(let{start:a,end:r,label:p}of t.blocks){if(r&&r{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*o?[t,void 0]:[{start:t.start,end:e*o-1,label:t.label},{start:e*o,end:t.end,label:t.label}]},"getNextFittingBlock"),K={parse:n(async t=>{const e=await N("packet",t);x.debug(e),G(e)},"parse")},R=n((t,e,o,s)=>{const i=s.db,a=i.getConfig(),{rowHeight:r,paddingY:p,bitWidth:b,bitsPerRow:c}=a,u=i.getPacket(),l=i.getDiagramTitle(),g=r+p,d=g*(u.length+1)-(l?0:r),k=b*c+2,f=_(e);f.attr("viewbox",`0 0 ${k} ${d}`),A(f,d,k,a.useMaxWidth);for(const[$,y]of u.entries())U(f,y,$,a);f.append("text").text(l).attr("x",k/2).attr("y",d-g/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),U=n((t,e,o,{rowHeight:s,paddingX:i,paddingY:a,bitWidth:r,bitsPerRow:p,showBits:b})=>{const c=t.append("g"),u=o*(s+a)+a;for(const l of e){const g=l.start%p*r+1,d=(l.end-l.start+1)*r-i;if(c.append("rect").attr("x",g).attr("y",u).attr("width",d).attr("height",s).attr("class","packetBlock"),c.append("text").attr("x",g+d/2).attr("y",u+s/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(l.label),!b)continue;const k=l.end===l.start,f=u-2;c.append("text").attr("x",g+(k?d/2:0)).attr("y",f).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",k?"middle":"start").text(l.start),k||c.append("text").attr("x",g+d).attr("y",f).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(l.end)}},"drawWord"),X={draw:R},j={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},J=n(({packet:t}={})=>{const e=v(j,t);return` + .packetByte { + font-size: ${e.byteFontSize}; + } + .packetByte.start { + fill: ${e.startByteColor}; + } + .packetByte.end { + fill: ${e.endByteColor}; + } + .packetLabel { + fill: ${e.labelColor}; + font-size: ${e.labelFontSize}; + } + .packetTitle { + fill: ${e.titleColor}; + font-size: ${e.titleFontSize}; + } + .packetBlock { + stroke: ${e.blockStrokeColor}; + stroke-width: ${e.blockStrokeWidth}; + fill: ${e.blockFillColor}; + } + `},"styles"),lt={parser:K,db:h,renderer:X,styles:J};export{lt as diagram}; diff --git a/assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js b/assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js new file mode 100644 index 00000000..23109325 --- /dev/null +++ b/assets/chunks/erDiagram-6RL3IURR.CeQ13aq9.js @@ -0,0 +1,51 @@ +import{_ as u,d as U,s as kt,g as xt,c as Rt,b as Ot,q as bt,r as Nt,l as X,x as Tt,j as at,v as At,k as Mt,a1 as vt,a8 as St,a7 as wt}from"../app.BCWCbnje.js";import{G as It}from"./graph.DlH8fBwT.js";import{l as Dt}from"./layout.BFk54v6v.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";const Lt=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Bt(t){return typeof t=="string"&&Lt.test(t)}const v=[];for(let t=0;t<256;++t)v.push((t+256).toString(16).slice(1));function Ct(t,e=0){return v[t[e+0]]+v[t[e+1]]+v[t[e+2]]+v[t[e+3]]+"-"+v[t[e+4]]+v[t[e+5]]+"-"+v[t[e+6]]+v[t[e+7]]+"-"+v[t[e+8]]+v[t[e+9]]+"-"+v[t[e+10]]+v[t[e+11]]+v[t[e+12]]+v[t[e+13]]+v[t[e+14]]+v[t[e+15]]}function Pt(t){if(!Bt(t))throw TypeError("Invalid UUID");let e;const r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}function Yt(t){t=unescape(encodeURIComponent(t));const e=[];for(let r=0;r>>32-e}function Ht(t){const e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){const y=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;x=k,k=m,m=it(g,30)>>>0,g=h,h=b}r[0]=r[0]+h>>>0,r[1]=r[1]+g>>>0,r[2]=r[2]+m>>>0,r[3]=r[3]+k>>>0,r[4]=r[4]+x>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}const zt=Wt("v5",80,Ht);var nt=function(){var t=u(function(w,i,n,l){for(n=n||{},l=w.length;l--;n[w[l]]=i);return n},"o"),e=[6,8,10,20,22,24,26,27,28],r=[1,10],f=[1,11],c=[1,12],_=[1,13],y=[1,14],o=[1,15],h=[1,21],g=[1,22],m=[1,23],k=[1,24],x=[1,25],p=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],O=[1,34],b=[27,28,46,47],Y=[41,42,43,44,45],Z=[17,34],F=[1,54],M=[1,53],S=[17,34,36,38],N={trace:u(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,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:u(function(i,n,l,d,E,a,V){var s=a.length-1;switch(E){case 1:break;case 2:this.$=[];break;case 3:a[s-1].push(a[s]),this.$=a[s-1];break;case 4:case 5:this.$=a[s];break;case 6:case 7:this.$=[];break;case 8:d.addEntity(a[s-4]),d.addEntity(a[s-2]),d.addRelationship(a[s-4],a[s],a[s-2],a[s-3]);break;case 9:d.addEntity(a[s-3]),d.addAttributes(a[s-3],a[s-1]);break;case 10:d.addEntity(a[s-2]);break;case 11:d.addEntity(a[s]);break;case 12:d.addEntity(a[s-6],a[s-4]),d.addAttributes(a[s-6],a[s-1]);break;case 13:d.addEntity(a[s-5],a[s-3]);break;case 14:d.addEntity(a[s-3],a[s-1]);break;case 15:case 16:this.$=a[s].trim(),d.setAccTitle(this.$);break;case 17:case 18:this.$=a[s].trim(),d.setAccDescription(this.$);break;case 19:case 43:this.$=a[s];break;case 20:case 41:case 42:this.$=a[s].replace(/"/g,"");break;case 21:case 29:this.$=[a[s]];break;case 22:a[s].push(a[s-1]),this.$=a[s];break;case 23:this.$={attributeType:a[s-1],attributeName:a[s]};break;case 24:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeKeyTypeList:a[s]};break;case 25:this.$={attributeType:a[s-2],attributeName:a[s-1],attributeComment:a[s]};break;case 26:this.$={attributeType:a[s-3],attributeName:a[s-2],attributeKeyTypeList:a[s-1],attributeComment:a[s]};break;case 27:case 28:case 31:this.$=a[s];break;case 30:a[s-2].push(a[s]),this.$=a[s-2];break;case 32:this.$=a[s].replace(/"/g,"");break;case 33:this.$={cardA:a[s],relType:a[s-1],cardB:a[s-2]};break;case 34:this.$=d.Cardinality.ZERO_OR_ONE;break;case 35:this.$=d.Cardinality.ZERO_OR_MORE;break;case 36:this.$=d.Cardinality.ONE_OR_MORE;break;case 37:this.$=d.Cardinality.ONLY_ONE;break;case 38:this.$=d.Cardinality.MD_PARENT;break;case 39:this.$=d.Identification.NON_IDENTIFYING;break;case 40:this.$=d.Identification.IDENTIFYING;break}},"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,20:r,22:f,24:c,26:_,27:y,28:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:f,24:c,26:_,27:y,28:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:h,42:g,43:m,44:k,45:x}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(p,[2,19]),t(p,[2,20]),t(e,[2,4]),{11:29,27:y,28:o},{16:30,17:[1,31],29:32,30:33,34:O},{11:35,27:y,28:o},{40:36,46:[1,37],47:[1,38]},t(b,[2,34]),t(b,[2,35]),t(b,[2,36]),t(b,[2,37]),t(b,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:O},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:h,42:g,43:m,44:k,45:x},t(Y,[2,39]),t(Y,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(Z,[2,23],{32:50,33:51,35:52,37:F,38:M}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(Z,[2,24],{33:56,36:[1,57],38:M}),t(Z,[2,25]),t(S,[2,29]),t(Z,[2,32]),t(S,[2,31]),{16:58,17:[1,59],29:32,30:33,34:O},t(Z,[2,26]),{35:60,37:F},{17:[1,61]},t(e,[2,13]),t(S,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:u(function(i,n){if(n.recoverable)this.trace(i);else{var l=new Error(i);throw l.hash=n,l}},"parseError"),parse:u(function(i){var n=this,l=[0],d=[],E=[null],a=[],V=this.table,s="",j=0,lt=0,_t=2,ct=1,Et=a.slice.call(arguments,1),A=Object.create(this.lexer),H={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(H.yy[$]=this.yy[$]);A.setInput(i,H.yy),H.yy.lexer=A,H.yy.parser=this,typeof A.yylloc>"u"&&(A.yylloc={});var tt=A.yylloc;a.push(tt);var gt=A.options&&A.options.ranges;typeof H.yy.parseError=="function"?this.parseError=H.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function mt(D){l.length=l.length-2*D,E.length=E.length-D,a.length=a.length-D}u(mt,"popStack");function ht(){var D;return D=d.pop()||A.lex()||ct,typeof D!="number"&&(D instanceof Array&&(d=D,D=d.pop()),D=n.symbols_[D]||D),D}u(ht,"lex");for(var I,z,B,et,K={},q,W,dt,J;;){if(z=l[l.length-1],this.defaultActions[z]?B=this.defaultActions[z]:((I===null||typeof I>"u")&&(I=ht()),B=V[z]&&V[z][I]),typeof B>"u"||!B.length||!B[0]){var rt="";J=[];for(q in V[z])this.terminals_[q]&&q>_t&&J.push("'"+this.terminals_[q]+"'");A.showPosition?rt="Parse error on line "+(j+1)+`: +`+A.showPosition()+` +Expecting `+J.join(", ")+", got '"+(this.terminals_[I]||I)+"'":rt="Parse error on line "+(j+1)+": Unexpected "+(I==ct?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(rt,{text:A.match,token:this.terminals_[I]||I,line:A.yylineno,loc:tt,expected:J})}if(B[0]instanceof Array&&B.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+I);switch(B[0]){case 1:l.push(I),E.push(A.yytext),a.push(A.yylloc),l.push(B[1]),I=null,lt=A.yyleng,s=A.yytext,j=A.yylineno,tt=A.yylloc;break;case 2:if(W=this.productions_[B[1]][1],K.$=E[E.length-W],K._$={first_line:a[a.length-(W||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(W||1)].first_column,last_column:a[a.length-1].last_column},gt&&(K._$.range=[a[a.length-(W||1)].range[0],a[a.length-1].range[1]]),et=this.performAction.apply(K,[s,lt,j,H.yy,B[1],E,a].concat(Et)),typeof et<"u")return et;W&&(l=l.slice(0,-1*W*2),E=E.slice(0,-1*W),a=a.slice(0,-1*W)),l.push(this.productions_[B[1]][0]),E.push(K.$),a.push(K._$),dt=V[l[l.length-2]][l[l.length-1]],l.push(dt);break;case 3:return!0}}return!0},"parse")},T=function(){var w={EOF:1,parseError:u(function(n,l){if(this.yy.parser)this.yy.parser.parseError(n,l);else throw new Error(n)},"parseError"),setInput:u(function(i,n){return this.yy=n||this.yy||{},this._input=i,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:u(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var n=i.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:u(function(i){var n=i.length,l=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var d=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),l.length-1&&(this.yylineno-=l.length-1);var E=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:l?(l.length===d.length?this.yylloc.first_column:0)+d[d.length-l.length].length-l[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:u(function(){return this._more=!0,this},"more"),reject:u(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:u(function(i){this.unput(this.match.slice(i))},"less"),pastInput:u(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:u(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:u(function(){var i=this.pastInput(),n=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+n+"^"},"showPosition"),test_match:u(function(i,n){var l,d,E;if(this.options.backtrack_lexer&&(E={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&&(E.yylloc.range=this.yylloc.range.slice(0))),d=i[0].match(/(?:\r\n?|\n).*/g),d&&(this.yylineno+=d.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:d?d[d.length-1].length-d[d.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,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(i[0].length),this.matched+=i[0],l=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var a in E)this[a]=E[a];return!1}return!1},"test_match"),next:u(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,n,l,d;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),a=0;an[0].length)){if(n=l,d=a,this.options.backtrack_lexer){if(i=this.test_match(l,E[a]),i!==!1)return i;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(i=this.test_match(n,E[d]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:u(function(){var n=this.next();return n||this.lex()},"lex"),begin:u(function(n){this.conditionStack.push(n)},"begin"),popState:u(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:u(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:u(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:u(function(n){this.begin(n)},"pushState"),stateStackSize:u(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:u(function(n,l,d,E){switch(d){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;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 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return l.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return l.yytext[0];case 55:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/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,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,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],inclusive:!0}}};return w}();N.lexer=T;function L(){this.yy={}}return u(L,"Parser"),L.prototype=N,N.Parser=L,new L}();nt.parser=nt;var Gt=nt,G=new Map,ot=[],Kt={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"},Vt={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},ft=u(function(t,e=void 0){return G.has(t)?!G.get(t).alias&&e&&(G.get(t).alias=e,X.info(`Add alias '${e}' to entity '${t}'`)):(G.set(t,{attributes:[],alias:e}),X.info("Added new entity :",t)),G.get(t)},"addEntity"),Xt=u(()=>G,"getEntities"),Qt=u(function(t,e){let r=ft(t),f;for(f=e.length-1;f>=0;f--)r.attributes.push(e[f]),X.debug("Added attribute ",e[f].attributeName)},"addAttributes"),jt=u(function(t,e,r,f){let c={entityA:t,roleA:e,entityB:r,relSpec:f};ot.push(c),X.debug("Added new relationship :",c)},"addRelationship"),qt=u(()=>ot,"getRelationships"),Jt=u(function(){G=new Map,ot=[],Tt()},"clear"),$t={Cardinality:Kt,Identification:Vt,getConfig:u(()=>U().er,"getConfig"),addEntity:ft,addAttributes:Qt,getEntities:Xt,addRelationship:jt,getRelationships:qt,clear:Jt,setAccTitle:kt,getAccTitle:xt,setAccDescription:Rt,getAccDescription:Ot,setDiagramTitle:bt,getDiagramTitle:Nt},C={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},te=u(function(t,e){let r;t.append("defs").append("marker").attr("id",C.MD_PARENT_START).attr("refX",0).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",C.MD_PARENT_END).attr("refX",19).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"),t.append("defs").append("marker").attr("id",C.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",C.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",C.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",C.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",C.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").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",C.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",C.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",C.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"insertMarkers"),P={ERMarkers:C,insertMarkers:te},ee=/[^\dA-Za-z](\W)*/g,R={},Q=new Map,re=u(function(t){const e=Object.keys(t);for(const r of e)R[r]=t[r]},"setConf"),ae=u((t,e,r)=>{const f=R.entityPadding/3,c=R.entityPadding/3,_=R.fontSize*.85,y=e.node().getBBox(),o=[];let h=!1,g=!1,m=0,k=0,x=0,p=0,O=y.height+f*2,b=1;r.forEach(M=>{M.attributeKeyTypeList!==void 0&&M.attributeKeyTypeList.length>0&&(h=!0),M.attributeComment!==void 0&&(g=!0)}),r.forEach(M=>{const S=`${e.node().id}-attr-${b}`;let N=0;const T=wt(M.attributeType),L=t.append("text").classed("er entityLabel",!0).attr("id",`${S}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",U().fontFamily).style("font-size",_+"px").text(T),w=t.append("text").classed("er entityLabel",!0).attr("id",`${S}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",U().fontFamily).style("font-size",_+"px").text(M.attributeName),i={};i.tn=L,i.nn=w;const n=L.node().getBBox(),l=w.node().getBBox();if(m=Math.max(m,n.width),k=Math.max(k,l.width),N=Math.max(n.height,l.height),h){const d=M.attributeKeyTypeList!==void 0?M.attributeKeyTypeList.join(","):"",E=t.append("text").classed("er entityLabel",!0).attr("id",`${S}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",U().fontFamily).style("font-size",_+"px").text(d);i.kn=E;const a=E.node().getBBox();x=Math.max(x,a.width),N=Math.max(N,a.height)}if(g){const d=t.append("text").classed("er entityLabel",!0).attr("id",`${S}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",U().fontFamily).style("font-size",_+"px").text(M.attributeComment||"");i.cn=d;const E=d.node().getBBox();p=Math.max(p,E.width),N=Math.max(N,E.height)}i.height=N,o.push(i),O+=N+f*2,b+=1});let Y=4;h&&(Y+=2),g&&(Y+=2);const Z=m+k+x+p,F={width:Math.max(R.minEntityWidth,Math.max(y.width+R.entityPadding*2,Z+c*Y)),height:r.length>0?O:Math.max(R.minEntityHeight,y.height+R.entityPadding*2)};if(r.length>0){const M=Math.max(0,(F.width-Z-c*Y)/(Y/2));e.attr("transform","translate("+F.width/2+","+(f+y.height/2)+")");let S=y.height+f*2,N="attributeBoxOdd";o.forEach(T=>{const L=S+f+T.height/2;T.tn.attr("transform","translate("+c+","+L+")");const w=t.insert("rect","#"+T.tn.node().id).classed(`er ${N}`,!0).attr("x",0).attr("y",S).attr("width",m+c*2+M).attr("height",T.height+f*2),i=parseFloat(w.attr("x"))+parseFloat(w.attr("width"));T.nn.attr("transform","translate("+(i+c)+","+L+")");const n=t.insert("rect","#"+T.nn.node().id).classed(`er ${N}`,!0).attr("x",i).attr("y",S).attr("width",k+c*2+M).attr("height",T.height+f*2);let l=parseFloat(n.attr("x"))+parseFloat(n.attr("width"));if(h){T.kn.attr("transform","translate("+(l+c)+","+L+")");const d=t.insert("rect","#"+T.kn.node().id).classed(`er ${N}`,!0).attr("x",l).attr("y",S).attr("width",x+c*2+M).attr("height",T.height+f*2);l=parseFloat(d.attr("x"))+parseFloat(d.attr("width"))}g&&(T.cn.attr("transform","translate("+(l+c)+","+L+")"),t.insert("rect","#"+T.cn.node().id).classed(`er ${N}`,"true").attr("x",l).attr("y",S).attr("width",p+c*2+M).attr("height",T.height+f*2)),S+=T.height+f*2,N=N==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else F.height=Math.max(R.minEntityHeight,O),e.attr("transform","translate("+F.width/2+","+F.height/2+")");return F},"drawAttributes"),ie=u(function(t,e,r){const f=[...e.keys()];let c;return f.forEach(function(_){const y=pt(_,"entity");Q.set(_,y);const o=t.append("g").attr("id",y);c=c===void 0?y:c;const h="text-"+y,g=o.append("text").classed("er entityLabel",!0).attr("id",h).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",U().fontFamily).style("font-size",R.fontSize+"px").text(e.get(_).alias??_),{width:m,height:k}=ae(o,g,e.get(_).attributes),p=o.insert("rect","#"+h).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",m).attr("height",k).node().getBBox();r.setNode(y,{width:p.width,height:p.height,shape:"rect",id:y})}),c},"drawEntities"),ne=u(function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},"adjustEntities"),yt=u(function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},"getEdgeName"),se=u(function(t,e){return t.forEach(function(r){e.setEdge(Q.get(r.entityA),Q.get(r.entityB),{relationship:r},yt(r))}),t},"addRelationships"),ut=0,oe=u(function(t,e,r,f,c){ut++;const _=r.edge(Q.get(e.entityA),Q.get(e.entityB),yt(e)),y=vt().x(function(b){return b.x}).y(function(b){return b.y}).curve(St),o=t.insert("path","#"+f).classed("er relationshipLine",!0).attr("d",y(_.points)).style("stroke",R.stroke).style("fill","none");e.relSpec.relType===c.db.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");let h="";switch(R.arrowMarkerAbsolute&&(h=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,h=h.replace(/\(/g,"\\("),h=h.replace(/\)/g,"\\)")),e.relSpec.cardA){case c.db.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+h+"#"+P.ERMarkers.ZERO_OR_ONE_END+")");break;case c.db.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+h+"#"+P.ERMarkers.ZERO_OR_MORE_END+")");break;case c.db.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+h+"#"+P.ERMarkers.ONE_OR_MORE_END+")");break;case c.db.Cardinality.ONLY_ONE:o.attr("marker-end","url("+h+"#"+P.ERMarkers.ONLY_ONE_END+")");break;case c.db.Cardinality.MD_PARENT:o.attr("marker-end","url("+h+"#"+P.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case c.db.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+h+"#"+P.ERMarkers.ZERO_OR_ONE_START+")");break;case c.db.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+h+"#"+P.ERMarkers.ZERO_OR_MORE_START+")");break;case c.db.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+h+"#"+P.ERMarkers.ONE_OR_MORE_START+")");break;case c.db.Cardinality.ONLY_ONE:o.attr("marker-start","url("+h+"#"+P.ERMarkers.ONLY_ONE_START+")");break;case c.db.Cardinality.MD_PARENT:o.attr("marker-start","url("+h+"#"+P.ERMarkers.MD_PARENT_START+")");break}const g=o.node().getTotalLength(),m=o.node().getPointAtLength(g*.5),k="rel"+ut,x=e.roleA.split(/
    /g),p=t.append("text").classed("er relationshipLabel",!0).attr("id",k).attr("x",m.x).attr("y",m.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",U().fontFamily).style("font-size",R.fontSize+"px");if(x.length==1)p.text(e.roleA);else{const b=-(x.length-1)*.5;x.forEach((Y,Z)=>{p.append("tspan").attr("x",m.x).attr("dy",`${Z===0?b:1}em`).text(Y)})}const O=p.node().getBBox();t.insert("rect","#"+k).classed("er relationshipLabelBox",!0).attr("x",m.x-O.width/2).attr("y",m.y-O.height/2).attr("width",O.width).attr("height",O.height)},"drawRelationshipFromLayout"),le=u(function(t,e,r,f){R=U().er,X.info("Drawing ER diagram");const c=U().securityLevel;let _;c==="sandbox"&&(_=at("#i"+e));const o=(c==="sandbox"?at(_.nodes()[0].contentDocument.body):at("body")).select(`[id='${e}']`);P.insertMarkers(o,R);let h;h=new It({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:R.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const g=ie(o,f.db.getEntities(),h),m=se(f.db.getRelationships(),h);Dt(h),ne(o,h),m.forEach(function(b){oe(o,b,h,g,f)});const k=R.diagramPadding;At.insertTitle(o,"entityTitleText",R.titleTopMargin,f.db.getDiagramTitle());const x=o.node().getBBox(),p=x.width+k*2,O=x.height+k*2;Mt(o,O,p,R.useMaxWidth),o.attr("viewBox",`${x.x-k} ${x.y-k} ${p} ${O}`)},"draw"),ce="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function pt(t="",e=""){const r=t.replace(ee,"");return`${st(e)}${st(r)}${zt(t,ce)}`}u(pt,"generateId");function st(t=""){return t.length>0?`${t}-`:""}u(st,"strWithHyphen");var he={setConf:re,draw:le},de=u(t=>` + .entityBox { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${t.attributeBackgroundColorOdd}; + stroke: ${t.nodeBorder}; + } + + .attributeBoxEven { + fill: ${t.attributeBackgroundColorEven}; + stroke: ${t.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${t.tertiaryColor}; + opacity: 0.7; + background-color: ${t.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${t.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${t.lineColor} !important; + stroke-width: 1; + } + +`,"getStyles"),ue=de,ke={parser:Gt,db:$t,renderer:he,styles:ue};export{ke as diagram}; diff --git a/assets/chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js b/assets/chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js new file mode 100644 index 00000000..3901b799 --- /dev/null +++ b/assets/chunks/flowDiagram-7ASYPVHJ.B1su0uVS.js @@ -0,0 +1,160 @@ +import{g as gt,s as At}from"./chunk-5HRBRIJM.BLuRsvWo.js";import{d as U1,_ as l,o as Ze,p as bt,s as kt,g as mt,b as Et,c as St,q as Dt,r as xt,t as Ct,J as Tt,u as yt,l as e1,v as ge,x as Ft,y as vt,j as C1,z as _t,A as Bt,e as Vt,B as Lt}from"../app.BCWCbnje.js";import{c as wt}from"./channel.Yhn_4yNH.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var It="flowchart-",$e=0,M1=U1(),b1=new Map,K=[],K1=new Map,p1=[],Ae=new Map,be=new Map,ee=0,pe=!0,J,se,re=[],ie=l(e=>Vt.sanitizeText(e,M1),"sanitizeText"),ae=l(function(e){for(const r of b1.values())if(r.id===e)return r.domId;return e},"lookUpDomId"),Rt=l(function(e,r,i,a,u,d,g={},D){var v,z;if(!e||e.trim().length===0)return;let c,o=b1.get(e);if(o===void 0&&(o={id:e,labelType:"text",domId:It+e+"-"+$e,styles:[],classes:[]},b1.set(e,o)),$e++,r!==void 0?(M1=U1(),c=ie(r.text.trim()),o.labelType=r.type,c.startsWith('"')&&c.endsWith('"')&&(c=c.substring(1,c.length-1)),o.text=c):o.text===void 0&&(o.text=e),i!==void 0&&(o.type=i),a!=null&&a.forEach(function(_){o.styles.push(_)}),u!=null&&u.forEach(function(_){o.classes.push(_)}),d!==void 0&&(o.dir=d),o.props===void 0?o.props=g:g!==void 0&&Object.assign(o.props,g),D!==void 0){let _;D.includes(` +`)?_=D+` +`:_=`{ +`+D+` +}`;const h=Ct(_,{schema:Tt});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(!yt(h.shape))throw new Error(`No such shape: ${h.shape}.`);o.type=h==null?void 0:h.shape}h!=null&&h.label&&(o.text=h==null?void 0:h.label),h!=null&&h.icon&&(o.icon=h==null?void 0:h.icon,!((v=h.label)!=null&&v.trim())&&o.text===e&&(o.text="")),h!=null&&h.form&&(o.form=h==null?void 0:h.form),h!=null&&h.pos&&(o.pos=h==null?void 0:h.pos),h!=null&&h.img&&(o.img=h==null?void 0:h.img,!((z=h.label)!=null&&z.trim())&&o.text===e&&(o.text="")),h!=null&&h.constraint&&(o.constraint=h.constraint),h.w&&(o.assetWidth=Number(h.w)),h.h&&(o.assetHeight=Number(h.h))}},"addVertex"),Nt=l(function(e,r,i){const d={start:e,end:r,type:void 0,text:"",labelType:"text"};e1.info("abc78 Got edge...",d);const g=i.text;if(g!==void 0&&(d.text=ie(g.text.trim()),d.text.startsWith('"')&&d.text.endsWith('"')&&(d.text=d.text.substring(1,d.text.length-1)),d.labelType=g.type),i!==void 0&&(d.type=i.type,d.stroke=i.stroke,d.length=i.length>10?10:i.length),K.length<(M1.maxEdges??500))e1.info("Pushing edge..."),K.push(d);else throw new Error(`Edge limit exceeded. ${K.length} edges found, but the limit is ${M1.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)},"addSingleLink"),Pt=l(function(e,r,i){e1.info("addLink",e,r,i);for(const a of e)for(const u of r)Nt(a,u,i)},"addLink"),Ot=l(function(e,r){e.forEach(function(i){i==="default"?K.defaultInterpolate=r:K[i].interpolate=r})},"updateLinkInterpolate"),Gt=l(function(e,r){e.forEach(function(i){var a,u,d,g,D,c;if(typeof i=="number"&&i>=K.length)throw new Error(`The index ${i} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${K.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);i==="default"?K.defaultStyle=r:(K[i].style=r,(((u=(a=K[i])==null?void 0:a.style)==null?void 0:u.length)??0)>0&&!((g=(d=K[i])==null?void 0:d.style)!=null&&g.some(o=>o==null?void 0:o.startsWith("fill")))&&((c=(D=K[i])==null?void 0:D.style)==null||c.push("fill:none")))})},"updateLink"),Mt=l(function(e,r){e.split(",").forEach(function(i){let a=K1.get(i);a===void 0&&(a={id:i,styles:[],textStyles:[]},K1.set(i,a)),r!=null&&r.forEach(function(u){if(/color/.exec(u)){const d=u.replace("fill","bgFill");a.textStyles.push(d)}a.styles.push(u)})})},"addClass"),Ut=l(function(e){J=e,/.*/.exec(J)&&(J="LR"),/.*v/.exec(J)&&(J="TB"),J==="TD"&&(J="TB")},"setDirection"),ke=l(function(e,r){for(const i of e.split(",")){const a=b1.get(i);a&&a.classes.push(r);const u=Ae.get(i);u&&u.classes.push(r)}},"setClass"),Wt=l(function(e,r){if(r!==void 0){r=ie(r);for(const i of e.split(","))be.set(se==="gen-1"?ae(i):i,r)}},"setTooltip"),zt=l(function(e,r,i){const a=ae(e);if(U1().securityLevel!=="loose"||r===void 0)return;let u=[];if(typeof i=="string"){u=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let g=0;g")),u.classed("hover",!0)}).on("mouseout",function(){r.transition().duration(500).style("opacity",0),C1(this).classed("hover",!1)})},"setupToolTips");re.push(it);var Ht=l(function(e="gen-1"){b1=new Map,K1=new Map,K=[],re=[it],p1=[],Ae=new Map,ee=0,be=new Map,pe=!0,se=e,M1=U1(),Ft()},"clear"),Xt=l(e=>{se=e||"gen-2"},"setGen"),Qt=l(function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},"defaultStyle"),Jt=l(function(e,r,i){let a=e.text.trim(),u=i.text;e===i&&/\s/.exec(i.text)&&(a=void 0);function d(o){const v={boolean:{},number:{},string:{}},z=[];let _;return{nodeList:o.filter(function(b){const x=typeof b;return b.stmt&&b.stmt==="dir"?(_=b.value,!1):b.trim()===""?!1:x in v?v[x].hasOwnProperty(b)?!1:v[x][b]=!0:z.includes(b)?!1:z.push(b)}),dir:_}}l(d,"uniq");const{nodeList:g,dir:D}=d(r.flat());if(se==="gen-1")for(let o=0;o2e3)return{result:!1,count:0};if(at[j1]=r,p1[r].id===e)return{result:!0,count:0};let a=0,u=1;for(;a=0){const g=nt(e,d);if(g.result)return{result:!0,count:u+g.count};u=u+g.count}a=a+1}return{result:!1,count:u}},"indexNodes2"),$t=l(function(e){return at[e]},"getDepthFirstPos"),es=l(function(){j1=-1,p1.length>0&&nt("none",p1.length-1)},"indexNodes"),ut=l(function(){return p1},"getSubGraphs"),ts=l(()=>pe?(pe=!1,!0):!1,"firstGraph"),ss=l(e=>{let r=e.trim(),i="arrow_open";switch(r[0]){case"<":i="arrow_point",r=r.slice(1);break;case"x":i="arrow_cross",r=r.slice(1);break;case"o":i="arrow_circle",r=r.slice(1);break}let a="normal";return r.includes("=")&&(a="thick"),r.includes(".")&&(a="dotted"),{type:i,stroke:a}},"destructStartLink"),rs=l((e,r)=>{const i=r.length;let a=0;for(let u=0;u{const r=e.trim();let i=r.slice(0,-1),a="arrow_open";switch(r.slice(-1)){case"x":a="arrow_cross",r.startsWith("x")&&(a="double_"+a,i=i.slice(1));break;case">":a="arrow_point",r.startsWith("<")&&(a="double_"+a,i=i.slice(1));break;case"o":a="arrow_circle",r.startsWith("o")&&(a="double_"+a,i=i.slice(1));break}let u="normal",d=i.length-1;i.startsWith("=")&&(u="thick"),i.startsWith("~")&&(u="invisible");const g=rs(".",i);return g&&(u="dotted",d=g),{type:a,stroke:u,length:d}},"destructEndLink"),as=l((e,r)=>{const i=is(e);let a;if(r){if(a=ss(r),a.stroke!==i.stroke)return{type:"INVALID",stroke:"INVALID"};if(a.type==="arrow_open")a.type=i.type;else{if(a.type!==i.type)return{type:"INVALID",stroke:"INVALID"};a.type="double_"+a.type}return a.type==="double_arrow"&&(a.type="double_arrow_point"),a.length=i.length,a}return i},"destructLink"),lt=l((e,r)=>{for(const i of e)if(i.nodes.includes(r))return!0;return!1},"exists"),ot=l((e,r)=>{const i=[];return e.nodes.forEach((a,u)=>{lt(r,a)||i.push(e.nodes[u])}),{nodes:i}},"makeUniq"),ns={firstGraph:ts},us=l(e=>{if(e.img)return"imageSquare";if(e.icon)return e.form==="circle"?"iconCircle":e.form==="square"?"iconSquare":e.form==="rounded"?"iconRounded":"icon";switch(e.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return e.type}},"getTypeFromVertex"),ls=l((e,r)=>e.find(i=>i.id===r),"findNode"),os=l(e=>{let r="none",i="arrow_point";switch(e){case"arrow_point":case"arrow_circle":case"arrow_cross":i=e;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":r=e.replace("double_",""),i=r;break}return{arrowTypeStart:r,arrowTypeEnd:i}},"destructEdgeType"),cs=l((e,r,i,a,u,d)=>{var o;const g=i.get(e.id),D=a.get(e.id)??!1,c=ls(r,e.id);if(c)c.cssStyles=e.styles,c.cssCompiledStyles=te(e.classes),c.cssClasses=e.classes.join(" ");else{const v={id:e.id,label:e.text,labelStyle:"",parentId:g,padding:((o=u.flowchart)==null?void 0:o.padding)||8,cssStyles:e.styles,cssCompiledStyles:te(["default","node",...e.classes]),cssClasses:"default "+e.classes.join(" "),dir:e.dir,domId:e.domId,look:d,link:e.link,linkTarget:e.linkTarget,tooltip:et(e.id),icon:e.icon,pos:e.pos,img:e.img,assetWidth:e.assetWidth,assetHeight:e.assetHeight,constraint:e.constraint};D?r.push({...v,isGroup:!0,shape:"rect"}):r.push({...v,isGroup:!1,shape:us(e)})}},"addNodeFromVertex");function te(e){let r=[];for(const i of e){const a=K1.get(i);a!=null&&a.styles&&(r=[...r,...a.styles??[]].map(u=>u.trim())),a!=null&&a.textStyles&&(r=[...r,...a.textStyles??[]].map(u=>u.trim()))}return r}l(te,"getCompiledStyles");var hs=l(()=>{const e=U1(),r=[],i=[],a=ut(),u=new Map,d=new Map;for(let c=a.length-1;c>=0;c--){const o=a[c];o.nodes.length>0&&d.set(o.id,!0);for(const v of o.nodes)u.set(v,o.id)}for(let c=a.length-1;c>=0;c--){const o=a[c];r.push({id:o.id,label:o.title,labelStyle:"",parentId:u.get(o.id),padding:8,cssCompiledStyles:te(o.classes),cssClasses:o.classes.join(" "),shape:"rect",dir:o.dir,isGroup:!0,look:e.look})}st().forEach(c=>{cs(c,r,u,d,e,e.look||"classic")});const D=rt();return D.forEach((c,o)=>{const{arrowTypeStart:v,arrowTypeEnd:z}=os(c.type),_=[...D.defaultStyle??[]];c.style&&_.push(...c.style);const h={id:vt(c.start,c.end,{counter:o,prefix:"L"}),start:c.start,end:c.end,type:c.type??"normal",label:c.text,labelpos:"c",thickness:c.stroke,minlen:c.length,classes:(c==null?void 0:c.stroke)==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:(c==null?void 0:c.stroke)==="invisible"?"none":v,arrowTypeEnd:(c==null?void 0:c.stroke)==="invisible"?"none":z,arrowheadStyle:"fill: #333",labelStyle:_,style:_,pattern:c.stroke,look:e.look};i.push(h)}),{nodes:r,edges:i,other:{},config:e}},"getData"),de={defaultConfig:l(()=>bt.flowchart,"defaultConfig"),setAccTitle:kt,getAccTitle:mt,getAccDescription:Et,getData:hs,setAccDescription:St,addVertex:Rt,lookUpDomId:ae,addLink:Pt,updateLinkInterpolate:Ot,updateLink:Gt,addClass:Mt,setDirection:Ut,setClass:ke,setTooltip:Wt,getTooltip:et,setClickEvent:Kt,setLink:jt,bindFunctions:Yt,getDirection:tt,getVertices:st,getEdges:rt,getClasses:qt,clear:Ht,setGen:Xt,defaultStyle:Qt,addSubGraph:Jt,getDepthFirstPos:$t,indexNodes:es,getSubGraphs:ut,destructLink:as,lex:ns,exists:lt,makeUniq:ot,setDiagramTitle:Dt,getDiagramTitle:xt},ds=l(function(e,r){return r.db.getClasses()},"getClasses"),ps=l(async function(e,r,i,a){var h;e1.info("REF0:"),e1.info("Drawing state diagram (v2)",r);const{securityLevel:u,flowchart:d,layout:g}=U1();let D;u==="sandbox"&&(D=C1("#i"+r));const c=u==="sandbox"?D.nodes()[0].contentDocument:document;e1.debug("Before getData: ");const o=a.db.getData();e1.debug("Data: ",o);const v=gt(r,u),z=tt();o.type=a.type,o.layoutAlgorithm=_t(g),o.layoutAlgorithm==="dagre"&&g==="elk"&&e1.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."),o.direction=z,o.nodeSpacing=(d==null?void 0:d.nodeSpacing)||50,o.rankSpacing=(d==null?void 0:d.rankSpacing)||50,o.markers=["point","circle","cross"],o.diagramId=r,e1.debug("REF1:",o),await Bt(o,v);const _=((h=o.config.flowchart)==null?void 0:h.diagramPadding)??8;ge.insertTitle(v,"flowchartTitleText",(d==null?void 0:d.titleTopMargin)||0,a.db.getDiagramTitle()),At(v,_,"flowchart",(d==null?void 0:d.useMaxWidth)||!1);for(const b of o.nodes){const x=C1(`#${r} [id="${b.id}"]`);if(!x||!b.link)continue;const Z=c.createElementNS("http://www.w3.org/2000/svg","a");Z.setAttributeNS("http://www.w3.org/2000/svg","class",b.cssClasses),Z.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),u==="sandbox"?Z.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):b.linkTarget&&Z.setAttributeNS("http://www.w3.org/2000/svg","target",b.linkTarget);const k1=x.insert(function(){return Z},":first-child"),m1=x.select(".label-container");m1&&k1.append(function(){return m1.node()});const E1=x.select(".label");E1&&k1.append(function(){return E1.node()})}},"draw"),fs={getClasses:ds,draw:ps},fe=function(){var e=l(function(A1,p,f,A){for(f=f||{},A=A1.length;A--;f[A1[A]]=p);return f},"o"),r=[1,4],i=[1,3],a=[1,5],u=[1,8,9,10,11,27,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],d=[2,2],g=[1,13],D=[1,14],c=[1,15],o=[1,16],v=[1,23],z=[1,25],_=[1,26],h=[1,27],b=[1,49],x=[1,48],Z=[1,29],k1=[1,30],m1=[1,31],E1=[1,32],Y1=[1,33],B=[1,44],V=[1,46],L=[1,42],w=[1,47],I=[1,43],R=[1,50],N=[1,45],P=[1,51],O=[1,52],q1=[1,34],H1=[1,35],X1=[1,36],Q1=[1,37],f1=[1,57],C=[1,8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],t1=[1,61],s1=[1,60],r1=[1,62],T1=[8,9,11,75,77],me=[1,77],y1=[1,90],F1=[1,95],v1=[1,94],_1=[1,91],B1=[1,87],V1=[1,93],L1=[1,89],w1=[1,96],I1=[1,92],R1=[1,97],N1=[1,88],S1=[8,9,10,11,40,75,77],M=[8,9,10,11,40,46,75,77],Y=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,88,101,104,105,108,110,113,114,115],Ee=[8,9,11,44,60,75,77,88,101,104,105,108,110,113,114,115],W1=[44,60,88,101,104,105,108,110,113,114,115],Se=[1,123],De=[1,122],xe=[1,130],Ce=[1,144],Te=[1,145],ye=[1,146],Fe=[1,147],ve=[1,132],_e=[1,134],Be=[1,138],Ve=[1,139],Le=[1,140],we=[1,141],Ie=[1,142],Re=[1,143],Ne=[1,148],Pe=[1,149],Oe=[1,128],Ge=[1,129],Me=[1,136],Ue=[1,131],We=[1,135],ze=[1,133],ne=[8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],je=[1,151],Ke=[1,153],F=[8,9,11],q=[8,9,10,11,14,44,60,88,104,105,108,110,113,114,115],k=[1,173],U=[1,169],W=[1,170],m=[1,174],E=[1,171],S=[1,172],P1=[77,115,118],T=[8,9,10,11,12,14,27,29,32,44,60,75,83,84,85,86,87,88,89,104,108,110,113,114,115],Ye=[10,105],g1=[31,49,51,53,55,57,62,64,66,67,69,71,115,116,117],i1=[1,242],a1=[1,240],n1=[1,244],u1=[1,238],l1=[1,239],o1=[1,241],c1=[1,243],h1=[1,245],O1=[1,263],qe=[8,9,11,105],$=[8,9,10,11,60,83,104,105,108,109,110,111],ue={trace:l(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,edgeTextToken:78,STR:79,MD_STR:80,textToken:81,keywords:82,STYLE:83,LINKSTYLE:84,CLASSDEF:85,CLASS:86,CLICK:87,DOWN:88,UP:89,textNoTagsToken:90,stylesOpt:91,"idString[vertex]":92,"idString[class]":93,CALLBACKNAME:94,CALLBACKARGS:95,HREF:96,LINK_TARGET:97,"STR[link]":98,"STR[tooltip]":99,alphaNum:100,DEFAULT:101,numList:102,INTERPOLATE:103,NUM:104,COMMA:105,style:106,styleComponent:107,NODE_STRING:108,UNIT:109,BRKT:110,PCT:111,idStringToken:112,MINUS:113,MULT:114,UNICODE_TEXT:115,TEXT:116,TAGSTART:117,EDGE_TEXT:118,alphaNumToken:119,direction_tb:120,direction_bt:121,direction_rl:122,direction_lr:123,$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",79:"STR",80:"MD_STR",83:"STYLE",84:"LINKSTYLE",85:"CLASSDEF",86:"CLASS",87:"CLICK",88:"DOWN",89:"UP",92:"idString[vertex]",93:"idString[class]",94:"CALLBACKNAME",95:"CALLBACKARGS",96:"HREF",97:"LINK_TARGET",98:"STR[link]",99:"STR[tooltip]",101:"DEFAULT",103:"INTERPOLATE",104:"NUM",105:"COMMA",108:"NODE_STRING",109:"UNIT",110:"BRKT",111:"PCT",113:"MINUS",114:"MULT",115:"UNICODE_TEXT",116:"TEXT",117:"TAGSTART",118:"EDGE_TEXT",120:"direction_tb",121:"direction_bt",122:"direction_rl",123:"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],[76,1],[76,2],[76,1],[76,1],[72,1],[73,3],[30,1],[30,2],[30,1],[30,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,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],[102,1],[102,3],[91,1],[91,3],[106,1],[106,2],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[81,1],[81,1],[81,1],[81,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[78,1],[78,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[47,1],[47,2],[100,1],[100,2],[33,1],[33,1],[33,1],[33,1]],performAction:l(function(p,f,A,n,y,t,z1){var s=t.length-1;switch(y){case 2:this.$=[];break;case 3:(!Array.isArray(t[s])||t[s].length>0)&&t[s-1].push(t[s]),this.$=t[s-1];break;case 4:case 181:this.$=t[s];break;case 11:n.setDirection("TB"),this.$="TB";break;case 12:n.setDirection(t[s-1]),this.$=t[s-1];break;case 27:this.$=t[s-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=n.addSubGraph(t[s-6],t[s-1],t[s-4]);break;case 34:this.$=n.addSubGraph(t[s-3],t[s-1],t[s-3]);break;case 35:this.$=n.addSubGraph(void 0,t[s-1],void 0);break;case 37:this.$=t[s].trim(),n.setAccTitle(this.$);break;case 38:case 39:this.$=t[s].trim(),n.setAccDescription(this.$);break;case 43:this.$=t[s-1]+t[s];break;case 44:this.$=t[s];break;case 45:n.addVertex(t[s-1][0],void 0,void 0,void 0,void 0,void 0,void 0,t[s]),n.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 46:n.addLink(t[s-2].stmt,t[s],t[s-1]),this.$={stmt:t[s],nodes:t[s].concat(t[s-2].nodes)};break;case 47:n.addLink(t[s-3].stmt,t[s-1],t[s-2]),this.$={stmt:t[s-1],nodes:t[s-1].concat(t[s-3].nodes)};break;case 48:this.$={stmt:t[s-1],nodes:t[s-1]};break;case 49:n.addVertex(t[s-1][0],void 0,void 0,void 0,void 0,void 0,void 0,t[s]),this.$={stmt:t[s-1],nodes:t[s-1],shapeData:t[s]};break;case 50:this.$={stmt:t[s],nodes:t[s]};break;case 51:this.$=[t[s]];break;case 52:n.addVertex(t[s-5][0],void 0,void 0,void 0,void 0,void 0,void 0,t[s-4]),this.$=t[s-5].concat(t[s]);break;case 53:this.$=t[s-4].concat(t[s]);break;case 54:this.$=t[s];break;case 55:this.$=t[s-2],n.setClass(t[s-2],t[s]);break;case 56:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"square");break;case 57:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"doublecircle");break;case 58:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"circle");break;case 59:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"ellipse");break;case 60:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"stadium");break;case 61:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"subroutine");break;case 62:this.$=t[s-7],n.addVertex(t[s-7],t[s-1],"rect",void 0,void 0,void 0,Object.fromEntries([[t[s-5],t[s-3]]]));break;case 63:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"cylinder");break;case 64:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"round");break;case 65:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"diamond");break;case 66:this.$=t[s-5],n.addVertex(t[s-5],t[s-2],"hexagon");break;case 67:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"odd");break;case 68:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"trapezoid");break;case 69:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"inv_trapezoid");break;case 70:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_right");break;case 71:this.$=t[s-3],n.addVertex(t[s-3],t[s-1],"lean_left");break;case 72:this.$=t[s],n.addVertex(t[s]);break;case 73:t[s-1].text=t[s],this.$=t[s-1];break;case 74:case 75:t[s-2].text=t[s-1],this.$=t[s-2];break;case 76:this.$=t[s];break;case 77:var X=n.destructLink(t[s],t[s-2]);this.$={type:X.type,stroke:X.stroke,length:X.length,text:t[s-1]};break;case 78:this.$={text:t[s],type:"text"};break;case 79:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 80:this.$={text:t[s],type:"string"};break;case 81:this.$={text:t[s],type:"markdown"};break;case 82:var X=n.destructLink(t[s]);this.$={type:X.type,stroke:X.stroke,length:X.length};break;case 83:this.$=t[s-1];break;case 84:this.$={text:t[s],type:"text"};break;case 85:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 86:this.$={text:t[s],type:"string"};break;case 87:case 102:this.$={text:t[s],type:"markdown"};break;case 99:this.$={text:t[s],type:"text"};break;case 100:this.$={text:t[s-1].text+""+t[s],type:t[s-1].type};break;case 101:this.$={text:t[s],type:"text"};break;case 103:this.$=t[s-4],n.addClass(t[s-2],t[s]);break;case 104:this.$=t[s-4],n.setClass(t[s-2],t[s]);break;case 105:case 113:this.$=t[s-1],n.setClickEvent(t[s-1],t[s]);break;case 106:case 114:this.$=t[s-3],n.setClickEvent(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 107:this.$=t[s-2],n.setClickEvent(t[s-2],t[s-1],t[s]);break;case 108:this.$=t[s-4],n.setClickEvent(t[s-4],t[s-3],t[s-2]),n.setTooltip(t[s-4],t[s]);break;case 109:this.$=t[s-2],n.setLink(t[s-2],t[s]);break;case 110:this.$=t[s-4],n.setLink(t[s-4],t[s-2]),n.setTooltip(t[s-4],t[s]);break;case 111:this.$=t[s-4],n.setLink(t[s-4],t[s-2],t[s]);break;case 112:this.$=t[s-6],n.setLink(t[s-6],t[s-4],t[s]),n.setTooltip(t[s-6],t[s-2]);break;case 115:this.$=t[s-1],n.setLink(t[s-1],t[s]);break;case 116:this.$=t[s-3],n.setLink(t[s-3],t[s-2]),n.setTooltip(t[s-3],t[s]);break;case 117:this.$=t[s-3],n.setLink(t[s-3],t[s-2],t[s]);break;case 118:this.$=t[s-5],n.setLink(t[s-5],t[s-4],t[s]),n.setTooltip(t[s-5],t[s-2]);break;case 119:this.$=t[s-4],n.addVertex(t[s-2],void 0,void 0,t[s]);break;case 120:this.$=t[s-4],n.updateLink([t[s-2]],t[s]);break;case 121:this.$=t[s-4],n.updateLink(t[s-2],t[s]);break;case 122:this.$=t[s-8],n.updateLinkInterpolate([t[s-6]],t[s-2]),n.updateLink([t[s-6]],t[s]);break;case 123:this.$=t[s-8],n.updateLinkInterpolate(t[s-6],t[s-2]),n.updateLink(t[s-6],t[s]);break;case 124:this.$=t[s-6],n.updateLinkInterpolate([t[s-4]],t[s]);break;case 125:this.$=t[s-6],n.updateLinkInterpolate(t[s-4],t[s]);break;case 126:case 128:this.$=[t[s]];break;case 127:case 129:t[s-2].push(t[s]),this.$=t[s-2];break;case 131:this.$=t[s-1]+t[s];break;case 179:this.$=t[s];break;case 180:this.$=t[s-1]+""+t[s];break;case 182:this.$=t[s-1]+""+t[s];break;case 183:this.$={stmt:"dir",value:"TB"};break;case 184:this.$={stmt:"dir",value:"BT"};break;case 185:this.$={stmt:"dir",value:"RL"};break;case 186:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:r,10:i,12:a},{1:[3]},e(u,d,{5:6}),{4:7,9:r,10:i,12:a},{4:8,9:r,10:i,12:a},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:g,9:D,10:c,11:o,20:17,22:18,23:19,24:20,25:21,26:22,27:v,33:24,34:z,36:_,38:h,42:28,43:38,44:b,45:39,47:40,60:x,83:Z,84:k1,85:m1,86:E1,87:Y1,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O,120:q1,121:H1,122:X1,123:Q1},e(u,[2,9]),e(u,[2,10]),e(u,[2,11]),{8:[1,54],9:[1,55],10:f1,15:53,18:56},e(C,[2,3]),e(C,[2,4]),e(C,[2,5]),e(C,[2,6]),e(C,[2,7]),e(C,[2,8]),{8:t1,9:s1,11:r1,21:58,41:59,72:63,75:[1,64],77:[1,65]},{8:t1,9:s1,11:r1,21:66},{8:t1,9:s1,11:r1,21:67},{8:t1,9:s1,11:r1,21:68},{8:t1,9:s1,11:r1,21:69},{8:t1,9:s1,11:r1,21:70},{8:t1,9:s1,10:[1,71],11:r1,21:72},e(C,[2,36]),{35:[1,73]},{37:[1,74]},e(C,[2,39]),e(T1,[2,50],{18:75,39:76,10:f1,40:me}),{10:[1,78]},{10:[1,79]},{10:[1,80]},{10:[1,81]},{14:y1,44:F1,60:v1,79:[1,85],88:_1,94:[1,82],96:[1,83],100:84,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1,119:86},e(C,[2,183]),e(C,[2,184]),e(C,[2,185]),e(C,[2,186]),e(S1,[2,51]),e(S1,[2,54],{46:[1,98]}),e(M,[2,72],{112:111,29:[1,99],44:b,48:[1,100],50:[1,101],52:[1,102],54:[1,103],56:[1,104],58:[1,105],60:x,63:[1,106],65:[1,107],67:[1,108],68:[1,109],70:[1,110],88:B,101:V,104:L,105:w,108:I,110:R,113:N,114:P,115:O}),e(Y,[2,179]),e(Y,[2,140]),e(Y,[2,141]),e(Y,[2,142]),e(Y,[2,143]),e(Y,[2,144]),e(Y,[2,145]),e(Y,[2,146]),e(Y,[2,147]),e(Y,[2,148]),e(Y,[2,149]),e(Y,[2,150]),e(u,[2,12]),e(u,[2,18]),e(u,[2,19]),{9:[1,112]},e(Ee,[2,26],{18:113,10:f1}),e(C,[2,27]),{42:114,43:38,44:b,45:39,47:40,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},e(C,[2,40]),e(C,[2,41]),e(C,[2,42]),e(W1,[2,76],{73:115,62:[1,117],74:[1,116]}),{76:118,78:119,79:[1,120],80:[1,121],115:Se,118:De},e([44,60,62,74,88,101,104,105,108,110,113,114,115],[2,82]),e(C,[2,28]),e(C,[2,29]),e(C,[2,30]),e(C,[2,31]),e(C,[2,32]),{10:xe,12:Ce,14:Te,27:ye,28:124,32:Fe,44:ve,60:_e,75:Be,79:[1,126],80:[1,127],82:137,83:Ve,84:Le,85:we,86:Ie,87:Re,88:Ne,89:Pe,90:125,104:Oe,108:Ge,110:Me,113:Ue,114:We,115:ze},e(ne,d,{5:150}),e(C,[2,37]),e(C,[2,38]),e(T1,[2,48],{44:je}),e(T1,[2,49],{18:152,10:f1,40:Ke}),e(S1,[2,44]),{44:b,47:154,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},{101:[1,155],102:156,104:[1,157]},{44:b,47:158,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},{44:b,47:159,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},e(F,[2,105],{10:[1,160],95:[1,161]}),{79:[1,162]},e(F,[2,113],{119:164,10:[1,163],14:y1,44:F1,60:v1,88:_1,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1}),e(F,[2,115],{10:[1,165]}),e(q,[2,181]),e(q,[2,168]),e(q,[2,169]),e(q,[2,170]),e(q,[2,171]),e(q,[2,172]),e(q,[2,173]),e(q,[2,174]),e(q,[2,175]),e(q,[2,176]),e(q,[2,177]),e(q,[2,178]),{44:b,47:166,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},{30:167,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:175,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:177,50:[1,176],67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:178,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:179,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:180,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{108:[1,181]},{30:182,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:183,65:[1,184],67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:185,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:186,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{30:187,67:k,79:U,80:W,81:168,115:m,116:E,117:S},e(Y,[2,180]),e(u,[2,20]),e(Ee,[2,25]),e(T1,[2,46],{39:188,18:189,10:f1,40:me}),e(W1,[2,73],{10:[1,190]}),{10:[1,191]},{30:192,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{77:[1,193],78:194,115:Se,118:De},e(P1,[2,78]),e(P1,[2,80]),e(P1,[2,81]),e(P1,[2,166]),e(P1,[2,167]),{8:t1,9:s1,10:xe,11:r1,12:Ce,14:Te,21:196,27:ye,29:[1,195],32:Fe,44:ve,60:_e,75:Be,82:137,83:Ve,84:Le,85:we,86:Ie,87:Re,88:Ne,89:Pe,90:197,104:Oe,108:Ge,110:Me,113:Ue,114:We,115:ze},e(T,[2,99]),e(T,[2,101]),e(T,[2,102]),e(T,[2,155]),e(T,[2,156]),e(T,[2,157]),e(T,[2,158]),e(T,[2,159]),e(T,[2,160]),e(T,[2,161]),e(T,[2,162]),e(T,[2,163]),e(T,[2,164]),e(T,[2,165]),e(T,[2,88]),e(T,[2,89]),e(T,[2,90]),e(T,[2,91]),e(T,[2,92]),e(T,[2,93]),e(T,[2,94]),e(T,[2,95]),e(T,[2,96]),e(T,[2,97]),e(T,[2,98]),{6:11,7:12,8:g,9:D,10:c,11:o,20:17,22:18,23:19,24:20,25:21,26:22,27:v,32:[1,198],33:24,34:z,36:_,38:h,42:28,43:38,44:b,45:39,47:40,60:x,83:Z,84:k1,85:m1,86:E1,87:Y1,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O,120:q1,121:H1,122:X1,123:Q1},{10:f1,18:199},{44:[1,200]},e(S1,[2,43]),{10:[1,201],44:b,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:111,113:N,114:P,115:O},{10:[1,202]},{10:[1,203],105:[1,204]},e(Ye,[2,126]),{10:[1,205],44:b,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:111,113:N,114:P,115:O},{10:[1,206],44:b,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:111,113:N,114:P,115:O},{79:[1,207]},e(F,[2,107],{10:[1,208]}),e(F,[2,109],{10:[1,209]}),{79:[1,210]},e(q,[2,182]),{79:[1,211],97:[1,212]},e(S1,[2,55],{112:111,44:b,60:x,88:B,101:V,104:L,105:w,108:I,110:R,113:N,114:P,115:O}),{31:[1,213],67:k,81:214,115:m,116:E,117:S},e(g1,[2,84]),e(g1,[2,86]),e(g1,[2,87]),e(g1,[2,151]),e(g1,[2,152]),e(g1,[2,153]),e(g1,[2,154]),{49:[1,215],67:k,81:214,115:m,116:E,117:S},{30:216,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{51:[1,217],67:k,81:214,115:m,116:E,117:S},{53:[1,218],67:k,81:214,115:m,116:E,117:S},{55:[1,219],67:k,81:214,115:m,116:E,117:S},{57:[1,220],67:k,81:214,115:m,116:E,117:S},{60:[1,221]},{64:[1,222],67:k,81:214,115:m,116:E,117:S},{66:[1,223],67:k,81:214,115:m,116:E,117:S},{30:224,67:k,79:U,80:W,81:168,115:m,116:E,117:S},{31:[1,225],67:k,81:214,115:m,116:E,117:S},{67:k,69:[1,226],71:[1,227],81:214,115:m,116:E,117:S},{67:k,69:[1,229],71:[1,228],81:214,115:m,116:E,117:S},e(T1,[2,45],{18:152,10:f1,40:Ke}),e(T1,[2,47],{44:je}),e(W1,[2,75]),e(W1,[2,74]),{62:[1,230],67:k,81:214,115:m,116:E,117:S},e(W1,[2,77]),e(P1,[2,79]),{30:231,67:k,79:U,80:W,81:168,115:m,116:E,117:S},e(ne,d,{5:232}),e(T,[2,100]),e(C,[2,35]),{43:233,44:b,45:39,47:40,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},{10:f1,18:234},{10:i1,60:a1,83:n1,91:235,104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},{10:i1,60:a1,83:n1,91:246,103:[1,247],104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},{10:i1,60:a1,83:n1,91:248,103:[1,249],104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},{104:[1,250]},{10:i1,60:a1,83:n1,91:251,104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},{44:b,47:252,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},e(F,[2,106]),{79:[1,253]},{79:[1,254],97:[1,255]},e(F,[2,114]),e(F,[2,116],{10:[1,256]}),e(F,[2,117]),e(M,[2,56]),e(g1,[2,85]),e(M,[2,57]),{51:[1,257],67:k,81:214,115:m,116:E,117:S},e(M,[2,64]),e(M,[2,59]),e(M,[2,60]),e(M,[2,61]),{108:[1,258]},e(M,[2,63]),e(M,[2,65]),{66:[1,259],67:k,81:214,115:m,116:E,117:S},e(M,[2,67]),e(M,[2,68]),e(M,[2,70]),e(M,[2,69]),e(M,[2,71]),e([10,44,60,88,101,104,105,108,110,113,114,115],[2,83]),{31:[1,260],67:k,81:214,115:m,116:E,117:S},{6:11,7:12,8:g,9:D,10:c,11:o,20:17,22:18,23:19,24:20,25:21,26:22,27:v,32:[1,261],33:24,34:z,36:_,38:h,42:28,43:38,44:b,45:39,47:40,60:x,83:Z,84:k1,85:m1,86:E1,87:Y1,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O,120:q1,121:H1,122:X1,123:Q1},e(S1,[2,53]),{43:262,44:b,45:39,47:40,60:x,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O},e(F,[2,119],{105:O1}),e(qe,[2,128],{107:264,10:i1,60:a1,83:n1,104:u1,108:l1,109:o1,110:c1,111:h1}),e($,[2,130]),e($,[2,132]),e($,[2,133]),e($,[2,134]),e($,[2,135]),e($,[2,136]),e($,[2,137]),e($,[2,138]),e($,[2,139]),e(F,[2,120],{105:O1}),{10:[1,265]},e(F,[2,121],{105:O1}),{10:[1,266]},e(Ye,[2,127]),e(F,[2,103],{105:O1}),e(F,[2,104],{112:111,44:b,60:x,88:B,101:V,104:L,105:w,108:I,110:R,113:N,114:P,115:O}),e(F,[2,108]),e(F,[2,110],{10:[1,267]}),e(F,[2,111]),{97:[1,268]},{51:[1,269]},{62:[1,270]},{66:[1,271]},{8:t1,9:s1,11:r1,21:272},e(C,[2,34]),e(S1,[2,52]),{10:i1,60:a1,83:n1,104:u1,106:273,107:237,108:l1,109:o1,110:c1,111:h1},e($,[2,131]),{14:y1,44:F1,60:v1,88:_1,100:274,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1,119:86},{14:y1,44:F1,60:v1,88:_1,100:275,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1,119:86},{97:[1,276]},e(F,[2,118]),e(M,[2,58]),{30:277,67:k,79:U,80:W,81:168,115:m,116:E,117:S},e(M,[2,66]),e(ne,d,{5:278}),e(qe,[2,129],{107:264,10:i1,60:a1,83:n1,104:u1,108:l1,109:o1,110:c1,111:h1}),e(F,[2,124],{119:164,10:[1,279],14:y1,44:F1,60:v1,88:_1,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1}),e(F,[2,125],{119:164,10:[1,280],14:y1,44:F1,60:v1,88:_1,104:B1,105:V1,108:L1,110:w1,113:I1,114:R1,115:N1}),e(F,[2,112]),{31:[1,281],67:k,81:214,115:m,116:E,117:S},{6:11,7:12,8:g,9:D,10:c,11:o,20:17,22:18,23:19,24:20,25:21,26:22,27:v,32:[1,282],33:24,34:z,36:_,38:h,42:28,43:38,44:b,45:39,47:40,60:x,83:Z,84:k1,85:m1,86:E1,87:Y1,88:B,101:V,104:L,105:w,108:I,110:R,112:41,113:N,114:P,115:O,120:q1,121:H1,122:X1,123:Q1},{10:i1,60:a1,83:n1,91:283,104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},{10:i1,60:a1,83:n1,91:284,104:u1,106:236,107:237,108:l1,109:o1,110:c1,111:h1},e(M,[2,62]),e(C,[2,33]),e(F,[2,122],{105:O1}),e(F,[2,123],{105:O1})],defaultActions:{},parseError:l(function(p,f){if(f.recoverable)this.trace(p);else{var A=new Error(p);throw A.hash=f,A}},"parseError"),parse:l(function(p){var f=this,A=[0],n=[],y=[null],t=[],z1=this.table,s="",X=0,He=0,ht=2,Xe=1,dt=t.slice.call(arguments,1),G=Object.create(this.lexer),D1={yy:{}};for(var le in this.yy)Object.prototype.hasOwnProperty.call(this.yy,le)&&(D1.yy[le]=this.yy[le]);G.setInput(p,D1.yy),D1.yy.lexer=G,D1.yy.parser=this,typeof G.yylloc>"u"&&(G.yylloc={});var oe=G.yylloc;t.push(oe);var pt=G.options&&G.options.ranges;typeof D1.yy.parseError=="function"?this.parseError=D1.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ft(H){A.length=A.length-2*H,y.length=y.length-H,t.length=t.length-H}l(ft,"popStack");function Qe(){var H;return H=n.pop()||G.lex()||Xe,typeof H!="number"&&(H instanceof Array&&(n=H,H=n.pop()),H=f.symbols_[H]||H),H}l(Qe,"lex");for(var j,x1,Q,ce,G1={},Z1,d1,Je,$1;;){if(x1=A[A.length-1],this.defaultActions[x1]?Q=this.defaultActions[x1]:((j===null||typeof j>"u")&&(j=Qe()),Q=z1[x1]&&z1[x1][j]),typeof Q>"u"||!Q.length||!Q[0]){var he="";$1=[];for(Z1 in z1[x1])this.terminals_[Z1]&&Z1>ht&&$1.push("'"+this.terminals_[Z1]+"'");G.showPosition?he="Parse error on line "+(X+1)+`: +`+G.showPosition()+` +Expecting `+$1.join(", ")+", got '"+(this.terminals_[j]||j)+"'":he="Parse error on line "+(X+1)+": Unexpected "+(j==Xe?"end of input":"'"+(this.terminals_[j]||j)+"'"),this.parseError(he,{text:G.match,token:this.terminals_[j]||j,line:G.yylineno,loc:oe,expected:$1})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x1+", token: "+j);switch(Q[0]){case 1:A.push(j),y.push(G.yytext),t.push(G.yylloc),A.push(Q[1]),j=null,He=G.yyleng,s=G.yytext,X=G.yylineno,oe=G.yylloc;break;case 2:if(d1=this.productions_[Q[1]][1],G1.$=y[y.length-d1],G1._$={first_line:t[t.length-(d1||1)].first_line,last_line:t[t.length-1].last_line,first_column:t[t.length-(d1||1)].first_column,last_column:t[t.length-1].last_column},pt&&(G1._$.range=[t[t.length-(d1||1)].range[0],t[t.length-1].range[1]]),ce=this.performAction.apply(G1,[s,He,X,D1.yy,Q[1],y,t].concat(dt)),typeof ce<"u")return ce;d1&&(A=A.slice(0,-1*d1*2),y=y.slice(0,-1*d1),t=t.slice(0,-1*d1)),A.push(this.productions_[Q[1]][0]),y.push(G1.$),t.push(G1._$),Je=z1[A[A.length-2]][A[A.length-1]],A.push(Je);break;case 3:return!0}}return!0},"parse")},ct=function(){var A1={EOF:1,parseError:l(function(f,A){if(this.yy.parser)this.yy.parser.parseError(f,A);else throw new Error(f)},"parseError"),setInput:l(function(p,f){return this.yy=f||this.yy||{},this._input=p,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:l(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var f=p.match(/(?:\r\n?|\n).*/g);return f?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:l(function(p){var f=p.length,A=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-f),this.offset-=f;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 y=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-f},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-f]),this.yyleng=this.yytext.length,this},"unput"),more:l(function(){return this._more=!0,this},"more"),reject:l(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:l(function(p){this.unput(this.match.slice(p))},"less"),pastInput:l(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:l(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:l(function(){var p=this.pastInput(),f=new Array(p.length+1).join("-");return p+this.upcomingInput()+` +`+f+"^"},"showPosition"),test_match:l(function(p,f){var A,n,y;if(this.options.backtrack_lexer&&(y={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&&(y.yylloc.range=this.yylloc.range.slice(0))),n=p[0].match(/(?:\r\n?|\n).*/g),n&&(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+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,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(p[0].length),this.matched+=p[0],A=this.performAction.call(this,this.yy,this,f,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var t in y)this[t]=y[t];return!1}return!1},"test_match"),next:l(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,f,A,n;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),t=0;tf[0].length)){if(f=A,n=t,this.options.backtrack_lexer){if(p=this.test_match(A,y[t]),p!==!1)return p;if(this._backtrack){f=!1;continue}else return!1}else if(!this.options.flex)break}return f?(p=this.test_match(f,y[n]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:l(function(){var f=this.next();return f||this.lex()},"lex"),begin:l(function(f){this.conditionStack.push(f)},"begin"),popState:l(function(){var f=this.conditionStack.length-1;return f>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:l(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:l(function(f){return f=this.conditionStack.length-1-Math.abs(f||0),f>=0?this.conditionStack[f]:"INITIAL"},"topState"),pushState:l(function(f){this.begin(f)},"pushState"),stateStackSize:l(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:l(function(f,A,n,y){switch(n){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:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),A.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const t=/\n\s*/g;return A.yytext=A.yytext.replace(t,"
    "),40;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 94;case 17:this.popState();break;case 18:return 95;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 83;case 26:return 101;case 27:return 84;case 28:return 103;case 29:return 85;case 30:return 86;case 31:return 96;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 87;case 35:return f.lex.firstGraph()&&this.begin("dir"),12;case 36:return f.lex.firstGraph()&&this.begin("dir"),12;case 37:return f.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:return 97;case 41:return 97;case 42:return 97;case 43:return 97;case 44:return this.popState(),13;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return this.popState(),14;case 50:return this.popState(),14;case 51:return this.popState(),14;case 52:return this.popState(),14;case 53:return this.popState(),14;case 54:return this.popState(),14;case 55:return 120;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 104;case 60:return 110;case 61:return 46;case 62:return 60;case 63:return 44;case 64:return 8;case 65:return 105;case 66:return 114;case 67:return this.popState(),77;case 68:return this.pushState("edgeText"),75;case 69:return 118;case 70:return this.popState(),77;case 71:return this.pushState("thickEdgeText"),75;case 72:return 118;case 73:return this.popState(),77;case 74:return this.pushState("dottedEdgeText"),75;case 75:return 118;case 76:return 77;case 77:return this.popState(),53;case 78:return"TEXT";case 79:return this.pushState("ellipseText"),52;case 80:return this.popState(),55;case 81:return this.pushState("text"),54;case 82:return this.popState(),57;case 83:return this.pushState("text"),56;case 84:return 58;case 85:return this.pushState("text"),67;case 86:return this.popState(),64;case 87:return this.pushState("text"),63;case 88:return this.popState(),49;case 89:return this.pushState("text"),48;case 90:return this.popState(),69;case 91:return this.popState(),71;case 92:return 116;case 93:return this.pushState("trapText"),68;case 94:return this.pushState("trapText"),70;case 95:return 117;case 96:return 67;case 97:return 89;case 98:return"SEP";case 99:return 88;case 100:return 114;case 101:return 110;case 102:return 44;case 103:return 108;case 104:return 113;case 105:return 115;case 106:return this.popState(),62;case 107:return this.pushState("text"),62;case 108:return this.popState(),51;case 109:return this.pushState("text"),50;case 110:return this.popState(),31;case 111:return this.pushState("text"),29;case 112:return this.popState(),66;case 113:return this.pushState("text"),65;case 114:return"TEXT";case 115:return"QUOTE";case 116:return 9;case 117:return 10;case 118: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]*)/,/^(?:[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,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeData:{rules:[8,11,12,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackargs:{rules:[17,18,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackname:{rules:[14,15,16,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},href:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},click:{rules:[21,24,33,34,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dottedEdgeText:{rules:[21,24,73,75,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},thickEdgeText:{rules:[21,24,70,72,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},edgeText:{rules:[21,24,67,69,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},trapText:{rules:[21,24,76,79,81,83,87,89,90,91,92,93,94,107,109,111,113],inclusive:!1},ellipseText:{rules:[21,24,76,77,78,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},text:{rules:[21,24,76,79,80,81,82,83,86,87,88,89,93,94,106,107,108,109,110,111,112,113,114],inclusive:!1},vertex:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr:{rules:[3,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_title:{rules:[1,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},md_string:{rules:[19,20,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},string:{rules:[21,22,23,24,76,79,81,83,87,89,93,94,107,109,111,113],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,70,71,73,74,76,79,81,83,84,85,87,89,93,94,95,96,97,98,99,100,101,102,103,104,105,107,109,111,113,115,116,117,118],inclusive:!0}}};return A1}();ue.lexer=ct;function J1(){this.yy={}}return l(J1,"Parser"),J1.prototype=ue,ue.Parser=J1,new J1}();fe.parser=fe;var gs=fe,As=l((e,r)=>{const i=wt,a=i(e,"r"),u=i(e,"g"),d=i(e,"b");return Lt(a,u,d,r)},"fade"),bs=l(e=>`.label { + font-family: ${e.fontFamily}; + color: ${e.nodeTextColor||e.textColor}; + } + .cluster-label text { + fill: ${e.titleColor}; + } + .cluster-label span { + color: ${e.titleColor}; + } + .cluster-label span p { + background-color: transparent; + } + + .label text,span { + fill: ${e.nodeTextColor||e.textColor}; + color: ${e.nodeTextColor||e.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${e.mainBkg}; + stroke: ${e.nodeBorder}; + stroke-width: 1px; + } + .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .katex path { + fill: #000; + stroke: #000; + stroke-width: 1px; + } + + .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + + .root .anchor path { + fill: ${e.lineColor} !important; + stroke-width: 0; + stroke: ${e.lineColor}; + } + + .arrowheadPath { + fill: ${e.arrowheadColor}; + } + + .edgePath .path { + stroke: ${e.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${e.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${As(e.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${e.clusterBkg}; + stroke: ${e.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${e.titleColor}; + } + + .cluster span { + color: ${e.titleColor}; + } + /* .cluster div { + color: ${e.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${e.fontFamily}; + font-size: 12px; + background: ${e.tertiaryColor}; + border: 1px solid ${e.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.textColor}; + } + + rect.text { + fill: none; + stroke-width: 0; + } + + .icon-shape, .image-shape { + background-color: ${e.edgeLabelBackground}; + p { + background-color: ${e.edgeLabelBackground}; + padding: 2px; + } + rect { + opacity: 0.5; + background-color: ${e.edgeLabelBackground}; + fill: ${e.edgeLabelBackground}; + } + text-align: center; + } +`,"getStyles"),ks=bs,Cs={parser:gs,db:de,renderer:fs,styles:ks,init:l(e=>{e.flowchart||(e.flowchart={}),e.layout&&Ze({layout:e.layout}),e.flowchart.arrowMarkerAbsolute=e.arrowMarkerAbsolute,Ze({flowchart:{arrowMarkerAbsolute:e.arrowMarkerAbsolute}}),de.clear(),de.setGen("gen-2")},"init")};export{Cs as diagram}; diff --git a/assets/chunks/framework.BDUoXecB.js b/assets/chunks/framework.BDUoXecB.js new file mode 100644 index 00000000..6c633edf --- /dev/null +++ b/assets/chunks/framework.BDUoXecB.js @@ -0,0 +1,18 @@ +/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Bs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},xt=[],Ue=()=>{},Zo=()=>!1,sn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ks=e=>e.startsWith("onUpdate:"),ae=Object.assign,Vs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},el=Object.prototype.hasOwnProperty,Q=(e,t)=>el.call(e,t),K=Array.isArray,St=e=>Hn(e)==="[object Map]",ui=e=>Hn(e)==="[object Set]",q=e=>typeof e=="function",ie=e=>typeof e=="string",Je=e=>typeof e=="symbol",re=e=>e!==null&&typeof e=="object",di=e=>(re(e)||q(e))&&q(e.then)&&q(e.catch),hi=Object.prototype.toString,Hn=e=>hi.call(e),tl=e=>Hn(e).slice(8,-1),pi=e=>Hn(e)==="[object Object]",Us=e=>ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Dn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},nl=/-(\w)/g,Le=Dn(e=>e.replace(nl,(t,n)=>n?n.toUpperCase():"")),sl=/\B([A-Z])/g,rt=Dn(e=>e.replace(sl,"-$1").toLowerCase()),$n=Dn(e=>e.charAt(0).toUpperCase()+e.slice(1)),wn=Dn(e=>e?`on${$n(e)}`:""),nt=(e,t)=>!Object.is(e,t),En=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Es=e=>{const t=parseFloat(e);return isNaN(t)?e:t},mi=e=>{const t=ie(e)?Number(e):NaN;return isNaN(t)?e:t};let gr;const jn=()=>gr||(gr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ws(e){if(K(e)){const t={};for(let n=0;n{if(n){const s=n.split(il);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ks(e){let t="";if(ie(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),fl=e=>ie(e)?e:e==null?"":K(e)||re(e)&&(e.toString===hi||!q(e.toString))?vi(e)?fl(e.value):JSON.stringify(e,bi,2):String(e),bi=(e,t)=>vi(t)?bi(e,t.value):St(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[ts(s,i)+" =>"]=r,n),{})}:ui(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ts(n))}:Je(t)?ts(t):re(t)&&!K(t)&&!pi(t)?String(t):t,ts=(e,t="")=>{var n;return Je(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let we;class ul{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(Ut){let t=Ut;for(Ut=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Vt;){let t=Vt;for(Vt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function xi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Si(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ys(s),hl(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function Ts(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ci(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ci(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Xt))return;e.globalVersion=Xt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Ts(e)){e.flags&=-3;return}const n=se,s=Fe;se=e,Fe=!0;try{xi(e);const r=e.fn(e._value);(t.version===0||nt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{se=n,Fe=s,Si(e),e.flags&=-3}}function Ys(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)Ys(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function hl(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Fe=!0;const Ai=[];function it(){Ai.push(Fe),Fe=!1}function ot(){const e=Ai.pop();Fe=e===void 0?!0:e}function mr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=se;se=void 0;try{t()}finally{se=n}}}let Xt=0;class pl{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Bn{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!se||!Fe||se===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==se)n=this.activeLink=new pl(se,this),se.deps?(n.prevDep=se.depsTail,se.depsTail.nextDep=n,se.depsTail=n):se.deps=se.depsTail=n,Ri(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=se.depsTail,n.nextDep=void 0,se.depsTail.nextDep=n,se.depsTail=n,se.deps===n&&(se.deps=s)}return n}trigger(t){this.version++,Xt++,this.notify(t)}notify(t){qs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Gs()}}}function Ri(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)Ri(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Rn=new WeakMap,dt=Symbol(""),xs=Symbol(""),Jt=Symbol("");function ye(e,t,n){if(Fe&&se){let s=Rn.get(e);s||Rn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Bn),r.map=s,r.key=n),r.track()}}function Ye(e,t,n,s,r,i){const o=Rn.get(e);if(!o){Xt++;return}const l=c=>{c&&c.trigger()};if(qs(),t==="clear")o.forEach(l);else{const c=K(e),f=c&&Us(n);if(c&&n==="length"){const a=Number(s);o.forEach((u,g)=>{(g==="length"||g===Jt||!Je(g)&&g>=a)&&l(u)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(Jt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),St(e)&&l(o.get(xs)));break;case"delete":c||(l(o.get(dt)),St(e)&&l(o.get(xs)));break;case"set":St(e)&&l(o.get(dt));break}}Gs()}function gl(e,t){const n=Rn.get(e);return n&&n.get(t)}function bt(e){const t=z(e);return t===e?t:(ye(t,"iterate",Jt),Pe(e)?t:t.map(ve))}function kn(e){return ye(e=z(e),"iterate",Jt),e}const ml={__proto__:null,[Symbol.iterator](){return ss(this,Symbol.iterator,ve)},concat(...e){return bt(this).concat(...e.map(t=>K(t)?bt(t):t))},entries(){return ss(this,"entries",e=>(e[1]=ve(e[1]),e))},every(e,t){return Ke(this,"every",e,t,void 0,arguments)},filter(e,t){return Ke(this,"filter",e,t,n=>n.map(ve),arguments)},find(e,t){return Ke(this,"find",e,t,ve,arguments)},findIndex(e,t){return Ke(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ke(this,"findLast",e,t,ve,arguments)},findLastIndex(e,t){return Ke(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ke(this,"forEach",e,t,void 0,arguments)},includes(...e){return rs(this,"includes",e)},indexOf(...e){return rs(this,"indexOf",e)},join(e){return bt(this).join(e)},lastIndexOf(...e){return rs(this,"lastIndexOf",e)},map(e,t){return Ke(this,"map",e,t,void 0,arguments)},pop(){return jt(this,"pop")},push(...e){return jt(this,"push",e)},reduce(e,...t){return yr(this,"reduce",e,t)},reduceRight(e,...t){return yr(this,"reduceRight",e,t)},shift(){return jt(this,"shift")},some(e,t){return Ke(this,"some",e,t,void 0,arguments)},splice(...e){return jt(this,"splice",e)},toReversed(){return bt(this).toReversed()},toSorted(e){return bt(this).toSorted(e)},toSpliced(...e){return bt(this).toSpliced(...e)},unshift(...e){return jt(this,"unshift",e)},values(){return ss(this,"values",ve)}};function ss(e,t,n){const s=kn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const yl=Array.prototype;function Ke(e,t,n,s,r,i){const o=kn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==yl[t]){const u=c.apply(e,i);return l?ve(u):u}let f=n;o!==e&&(l?f=function(u,g){return n.call(this,ve(u),g,e)}:n.length>2&&(f=function(u,g){return n.call(this,u,g,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function yr(e,t,n,s){const r=kn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ve(l),c,e)}),r[t](i,...s)}function rs(e,t,n){const s=z(e);ye(s,"iterate",Jt);const r=s[t](...n);return(r===-1||r===!1)&&zs(n[0])?(n[0]=z(n[0]),s[t](...n)):r}function jt(e,t,n=[]){it(),qs();const s=z(e)[t].apply(e,n);return Gs(),ot(),s}const vl=Bs("__proto__,__v_isRef,__isVue"),Oi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je));function bl(e){Je(e)||(e=String(e));const t=z(this);return ye(t,"has",e),t.hasOwnProperty(e)}class Mi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Ol:Fi:i?Ii:Li).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=K(t);if(!r){let c;if(o&&(c=ml[n]))return c;if(n==="hasOwnProperty")return bl}const l=Reflect.get(t,n,fe(t)?t:s);return(Je(n)?Oi.has(n):vl(n))||(r||ye(t,"get",n),i)?l:fe(l)?o&&Us(n)?l:l.value:re(l)?r?Un(l):Vn(l):l}}class Pi extends Mi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=z(i),s=z(s)),!K(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=K(t)&&Us(n)?Number(n)e,fn=e=>Reflect.getPrototypeOf(e);function xl(e,t,n){return function(...s){const r=this.__v_raw,i=z(r),o=St(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?Ss:t?Cs:ve;return!t&&ye(i,"iterate",c?xs:dt),{next(){const{value:u,done:g}=f.next();return g?{value:u,done:g}:{value:l?[a(u[0]),a(u[1])]:a(u),done:g}},[Symbol.iterator](){return this}}}}function un(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Sl(e,t){const n={get(r){const i=this.__v_raw,o=z(i),l=z(r);e||(nt(r,l)&&ye(o,"get",r),ye(o,"get",l));const{has:c}=fn(o),f=t?Ss:e?Cs:ve;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ye(z(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=z(i),l=z(r);return e||(nt(r,l)&&ye(o,"has",r),ye(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=z(l),f=t?Ss:e?Cs:ve;return!e&&ye(c,"iterate",dt),l.forEach((a,u)=>r.call(i,f(a),f(u),o))}};return ae(n,e?{add:un("add"),set:un("set"),delete:un("delete"),clear:un("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=z(r));const i=z(this);return fn(i).has.call(i,r)||(i.add(r),Ye(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=z(i));const o=z(this),{has:l,get:c}=fn(o);let f=l.call(o,r);f||(r=z(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?nt(i,a)&&Ye(o,"set",r,i):Ye(o,"add",r,i),this},delete(r){const i=z(this),{has:o,get:l}=fn(i);let c=o.call(i,r);c||(r=z(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ye(i,"delete",r,void 0),f},clear(){const r=z(this),i=r.size!==0,o=r.clear();return i&&Ye(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=xl(r,e,t)}),n}function Xs(e,t){const n=Sl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(Q(n,r)&&r in s?n:s,r,i)}const Cl={get:Xs(!1,!1)},Al={get:Xs(!1,!0)},Rl={get:Xs(!0,!1)};const Li=new WeakMap,Ii=new WeakMap,Fi=new WeakMap,Ol=new WeakMap;function Ml(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Pl(e){return e.__v_skip||!Object.isExtensible(e)?0:Ml(tl(e))}function Vn(e){return yt(e)?e:Js(e,!1,wl,Cl,Li)}function Ll(e){return Js(e,!1,Tl,Al,Ii)}function Un(e){return Js(e,!0,El,Rl,Fi)}function Js(e,t,n,s,r){if(!re(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=Pl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function zs(e){return e?!!e.__v_raw:!1}function z(e){const t=e&&e.__v_raw;return t?z(t):e}function Tn(e){return!Q(e,"__v_skip")&&Object.isExtensible(e)&&gi(e,"__v_skip",!0),e}const ve=e=>re(e)?Vn(e):e,Cs=e=>re(e)?Un(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function le(e){return Ni(e,!1)}function Qs(e){return Ni(e,!0)}function Ni(e,t){return fe(e)?e:new Il(e,t)}class Il{constructor(t,n){this.dep=new Bn,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:z(t),this._value=n?t:ve(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:z(t),nt(t,n)&&(this._rawValue=t,this._value=s?t:ve(t),this.dep.trigger())}}function Hi(e){return fe(e)?e.value:e}const Fl={get:(e,t,n)=>t==="__v_raw"?e:Hi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Di(e){return ht(e)?e:new Proxy(e,Fl)}class Nl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Bn,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Hl(e){return new Nl(e)}class Dl{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return gl(z(this._object),this._key)}}class $l{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function jl(e,t,n){return fe(e)?e:q(e)?new $l(e):re(e)&&arguments.length>1?Bl(e,t,n):le(e)}function Bl(e,t,n){const s=e[t];return fe(s)?s:new Dl(e,t,n)}class kl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Bn(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Xt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&se!==this)return Ti(this,!0),!0}get value(){const t=this.dep.track();return Ci(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Vl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new kl(s,r,n)}const dn={},On=new WeakMap;let ut;function Ul(e,t=!1,n=ut){if(n){let s=On.get(n);s||On.set(n,s=[]),s.push(e)}}function Wl(e,t,n=ee){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=m=>r?m:Pe(m)||r===!1||r===0?Xe(m,1):Xe(m);let a,u,g,y,w=!1,b=!1;if(fe(e)?(u=()=>e.value,w=Pe(e)):ht(e)?(u=()=>f(e),w=!0):K(e)?(b=!0,w=e.some(m=>ht(m)||Pe(m)),u=()=>e.map(m=>{if(fe(m))return m.value;if(ht(m))return f(m);if(q(m))return c?c(m,2):m()})):q(e)?t?u=c?()=>c(e,2):e:u=()=>{if(g){it();try{g()}finally{ot()}}const m=ut;ut=a;try{return c?c(e,3,[y]):e(y)}finally{ut=m}}:u=Ue,t&&r){const m=u,E=r===!0?1/0:r;u=()=>Xe(m(),E)}const U=_i(),F=()=>{a.stop(),U&&U.active&&Vs(U.effects,a)};if(i&&t){const m=t;t=(...E)=>{m(...E),F()}}let $=b?new Array(e.length).fill(dn):dn;const p=m=>{if(!(!(a.flags&1)||!a.dirty&&!m))if(t){const E=a.run();if(r||w||(b?E.some((O,H)=>nt(O,$[H])):nt(E,$))){g&&g();const O=ut;ut=a;try{const H=[E,$===dn?void 0:b&&$[0]===dn?[]:$,y];c?c(t,3,H):t(...H),$=E}finally{ut=O}}}else a.run()};return l&&l(p),a=new wi(u),a.scheduler=o?()=>o(p,!1):p,y=m=>Ul(m,!1,a),g=a.onStop=()=>{const m=On.get(a);if(m){if(c)c(m,4);else for(const E of m)E();On.delete(a)}},t?s?p(!0):$=a.run():o?o(p.bind(null,!0),!0):a.run(),F.pause=a.pause.bind(a),F.resume=a.resume.bind(a),F.stop=F,F}function Xe(e,t=1/0,n){if(t<=0||!re(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Xe(e.value,t,n);else if(K(e))for(let s=0;s{Xe(s,t,n)});else if(pi(e)){for(const s in e)Xe(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Xe(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function rn(e,t,n,s){try{return s?e(...s):e()}catch(r){Nt(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=rn(e,t,n,s);return r&&di(r)&&r.catch(i=>{Nt(i,t,n)}),r}if(K(e)){const r=[];for(let i=0;i>>1,r=Ee[s],i=zt(r);i=zt(n)?Ee.push(e):Ee.splice(ql(t),0,e),e.flags|=1,ji()}}function ji(){Mn||(Mn=$i.then(Bi))}function As(e){K(e)?At.push(...e):Ze&&e.id===-1?Ze.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),ji()}function vr(e,t,n=Be+1){for(;nzt(n)-zt(s));if(At.length=0,Ze){Ze.push(...t);return}for(Ze=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Bi(e){try{for(Be=0;Be{s._d&&Fr(-1);const i=Ln(t);let o;try{o=e(...r)}finally{Ln(i),s._d&&Fr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pf(e,t){if(he===null)return e;const n=zn(he),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Wt=e=>e&&(e.disabled||e.disabled===""),br=e=>e&&(e.defer||e.defer===""),_r=e=>typeof SVGElement<"u"&&e instanceof SVGElement,wr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Rs=(e,t)=>{const n=e&&e.to;return ie(n)?t?t(n):null:n},Wi={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:u,pbc:g,o:{insert:y,querySelector:w,createText:b,createComment:U}}=f,F=Wt(t.props);let{shapeFlag:$,children:p,dynamicChildren:m}=t;if(e==null){const E=t.el=b(""),O=t.anchor=b("");y(E,n,s),y(O,n,s);const H=(C,_)=>{$&16&&(r&&r.isCE&&(r.ce._teleportTarget=C),a(p,C,_,r,i,o,l,c))},D=()=>{const C=t.target=Rs(t.props,w),_=Ki(C,t,b,y);C&&(o!=="svg"&&_r(C)?o="svg":o!=="mathml"&&wr(C)&&(o="mathml"),F||(H(C,_),xn(t,!1)))};F&&(H(n,O),xn(t,!0)),br(t.props)?_e(()=>{D(),t.el.__isMounted=!0},i):D()}else{if(br(t.props)&&!e.el.__isMounted){_e(()=>{Wi.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const E=t.anchor=e.anchor,O=t.target=e.target,H=t.targetAnchor=e.targetAnchor,D=Wt(e.props),C=D?n:O,_=D?E:H;if(o==="svg"||_r(O)?o="svg":(o==="mathml"||wr(O))&&(o="mathml"),m?(g(e.dynamicChildren,m,C,r,i,o,l),rr(e,t,!0)):c||u(e,t,C,_,r,i,o,l,!1),F)D?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):hn(t,n,E,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const L=t.target=Rs(t.props,w);L&&hn(t,L,null,f,0)}else D&&hn(t,O,H,f,1);xn(t,F)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:u,props:g}=e;if(u&&(r(f),r(a)),i&&r(c),o&16){const y=i||!Wt(g);for(let w=0;w{e.isMounted=!0}),Qi(()=>{e.isUnmounting=!0}),e}const Oe=[Function,Array],qi={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Oe,onEnter:Oe,onAfterEnter:Oe,onEnterCancelled:Oe,onBeforeLeave:Oe,onLeave:Oe,onAfterLeave:Oe,onLeaveCancelled:Oe,onBeforeAppear:Oe,onAppear:Oe,onAfterAppear:Oe,onAppearCancelled:Oe},Gi=e=>{const t=e.subTree;return t.component?Gi(t.component):t},Jl={name:"BaseTransition",props:qi,setup(e,{slots:t}){const n=Jn(),s=Xl();return()=>{const r=t.default&&Ji(t.default(),!0);if(!r||!r.length)return;const i=Yi(r),o=z(e),{mode:l}=o;if(s.isLeaving)return is(i);const c=Er(i);if(!c)return is(i);let f=Os(c,o,s,n,u=>f=u);c.type!==ue&&Qt(c,f);let a=n.subTree&&Er(n.subTree);if(a&&a.type!==ue&&!Ve(c,a)&&Gi(n).type!==ue){let u=Os(a,o,s,n);if(Qt(a,u),l==="out-in"&&c.type!==ue)return s.isLeaving=!0,u.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,a=void 0},is(i);l==="in-out"&&c.type!==ue?u.delayLeave=(g,y,w)=>{const b=Xi(s,a);b[String(a.key)]=a,g[et]=()=>{y(),g[et]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{w(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Yi(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ue){t=n;break}}return t}const zl=Jl;function Xi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Os(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:u,onBeforeLeave:g,onLeave:y,onAfterLeave:w,onLeaveCancelled:b,onBeforeAppear:U,onAppear:F,onAfterAppear:$,onAppearCancelled:p}=t,m=String(e.key),E=Xi(n,e),O=(C,_)=>{C&&He(C,s,9,_)},H=(C,_)=>{const L=_[1];O(C,_),K(C)?C.every(T=>T.length<=1)&&L():C.length<=1&&L()},D={mode:o,persisted:l,beforeEnter(C){let _=c;if(!n.isMounted)if(i)_=U||c;else return;C[et]&&C[et](!0);const L=E[m];L&&Ve(e,L)&&L.el[et]&&L.el[et](),O(_,[C])},enter(C){let _=f,L=a,T=u;if(!n.isMounted)if(i)_=F||f,L=$||a,T=p||u;else return;let B=!1;const J=C[pn]=te=>{B||(B=!0,te?O(T,[C]):O(L,[C]),D.delayedLeave&&D.delayedLeave(),C[pn]=void 0)};_?H(_,[C,J]):J()},leave(C,_){const L=String(e.key);if(C[pn]&&C[pn](!0),n.isUnmounting)return _();O(g,[C]);let T=!1;const B=C[et]=J=>{T||(T=!0,_(),J?O(b,[C]):O(w,[C]),C[et]=void 0,E[L]===e&&delete E[L])};E[L]=e,y?H(y,[C,B]):B()},clone(C){const _=Os(C,t,n,s,r);return r&&r(_),_}};return D}function is(e){if(on(e))return e=st(e),e.children=null,e}function Er(e){if(!on(e))return Ui(e.type)&&e.children?Yi(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Qt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Qt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ji(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iZt(w,t&&(K(t)?t[b]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Zt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?zn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===ee?l.refs={}:l.refs,u=l.setupState,g=z(u),y=u===ee?()=>!1:w=>Q(g,w);if(f!=null&&f!==c&&(ie(f)?(a[f]=null,y(f)&&(u[f]=null)):fe(f)&&(f.value=null)),q(c))rn(c,l,12,[o,a]);else{const w=ie(c),b=fe(c);if(w||b){const U=()=>{if(e.f){const F=w?y(c)?u[c]:a[c]:c.value;r?K(F)&&Vs(F,i):K(F)?F.includes(i)||F.push(i):w?(a[c]=[i],y(c)&&(u[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else w?(a[c]=o,y(c)&&(u[c]=o)):b&&(c.value=o,e.k&&(a[e.k]=o))};o?(U.id=-1,_e(U,n)):U()}}}let Tr=!1;const _t=()=>{Tr||(console.error("Hydration completed but contains mismatches."),Tr=!0)},Ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Zl=e=>e.namespaceURI.includes("MathML"),gn=e=>{if(e.nodeType===1){if(Ql(e))return"svg";if(Zl(e))return"mathml"}},Tt=e=>e.nodeType===8;function ec(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,m)=>{if(!m.hasChildNodes()){n(null,p,m),Pn(),m._vnode=p;return}u(m.firstChild,p,null,null,null),Pn(),m._vnode=p},u=(p,m,E,O,H,D=!1)=>{D=D||!!m.dynamicChildren;const C=Tt(p)&&p.data==="[",_=()=>b(p,m,E,O,H,C),{type:L,ref:T,shapeFlag:B,patchFlag:J}=m;let te=p.nodeType;m.el=p,J===-2&&(D=!1,m.dynamicChildren=null);let j=null;switch(L){case gt:te!==3?m.children===""?(c(m.el=r(""),o(p),p),j=p):j=_():(p.data!==m.children&&(_t(),p.data=m.children),j=i(p));break;case ue:$(p)?(j=i(p),F(m.el=p.content.firstChild,p,E)):te!==8||C?j=_():j=i(p);break;case qt:if(C&&(p=i(p),te=p.nodeType),te===1||te===3){j=p;const Y=!m.children.length;for(let V=0;V{D=D||!!m.dynamicChildren;const{type:C,props:_,patchFlag:L,shapeFlag:T,dirs:B,transition:J}=m,te=C==="input"||C==="option";if(te||L!==-1){B&&ke(m,null,E,"created");let j=!1;if($(p)){j=mo(null,J)&&E&&E.vnode.props&&E.vnode.props.appear;const V=p.content.firstChild;j&&J.beforeEnter(V),F(V,p,E),m.el=p=V}if(T&16&&!(_&&(_.innerHTML||_.textContent))){let V=y(p.firstChild,m,p,E,O,H,D);for(;V;){mn(p,1)||_t();const pe=V;V=V.nextSibling,l(pe)}}else if(T&8){let V=m.children;V[0]===` +`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(V=V.slice(1)),p.textContent!==V&&(mn(p,0)||_t(),p.textContent=m.children)}if(_){if(te||!D||L&48){const V=p.tagName.includes("-");for(const pe in _)(te&&(pe.endsWith("value")||pe==="indeterminate")||sn(pe)&&!Ct(pe)||pe[0]==="."||V)&&s(p,pe,null,_[pe],void 0,E)}else if(_.onClick)s(p,"onClick",null,_.onClick,void 0,E);else if(L&4&&ht(_.style))for(const V in _.style)_.style[V]}let Y;(Y=_&&_.onVnodeBeforeMount)&&Me(Y,E,m),B&&ke(m,null,E,"beforeMount"),((Y=_&&_.onVnodeMounted)||B||j)&&Eo(()=>{Y&&Me(Y,E,m),j&&J.enter(p),B&&ke(m,null,E,"mounted")},O)}return p.nextSibling},y=(p,m,E,O,H,D,C)=>{C=C||!!m.dynamicChildren;const _=m.children,L=_.length;for(let T=0;T{const{slotScopeIds:C}=m;C&&(H=H?H.concat(C):C);const _=o(p),L=y(i(p),m,_,E,O,H,D);return L&&Tt(L)&&L.data==="]"?i(m.anchor=L):(_t(),c(m.anchor=f("]"),_,L),L)},b=(p,m,E,O,H,D)=>{if(mn(p.parentElement,1)||_t(),m.el=null,D){const L=U(p);for(;;){const T=i(p);if(T&&T!==L)l(T);else break}}const C=i(p),_=o(p);return l(p),n(null,m,_,C,E,O,gn(_),H),E&&(E.vnode.el=m.el,Xn(E,m.el)),C},U=(p,m="[",E="]")=>{let O=0;for(;p;)if(p=i(p),p&&Tt(p)&&(p.data===m&&O++,p.data===E)){if(O===0)return i(p);O--}return p},F=(p,m,E)=>{const O=m.parentNode;O&&O.replaceChild(p,m);let H=E;for(;H;)H.vnode.el===m&&(H.vnode.el=H.subTree.el=p),H=H.parent},$=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,u]}const xr="data-allow-mismatch",tc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function mn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(xr);)e=e.parentElement;const n=e&&e.getAttribute(xr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(tc[t])}}jn().requestIdleCallback;jn().cancelIdleCallback;function nc(e,t){if(Tt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(Tt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function If(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,u=0;const g=()=>(u++,f=null,y()),y=()=>{let w;return f||(w=f=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),c)return new Promise((U,F)=>{c(b,()=>U(g()),()=>F(b),u+1)});throw b}).then(b=>w!==f&&f?f:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),a=b,b)))};return er({name:"AsyncComponentWrapper",__asyncLoader:y,__asyncHydrate(w,b,U){const F=i?()=>{const $=i(U,p=>nc(w,p));$&&(b.bum||(b.bum=[])).push($)}:U;a?F():y().then(()=>!b.isUnmounted&&F())},get __asyncResolved(){return a},setup(){const w=de;if(tr(w),a)return()=>os(a,w);const b=p=>{f=null,Nt(p,w,13,!s)};if(l&&w.suspense||It)return y().then(p=>()=>os(p,w)).catch(p=>(b(p),()=>s?ce(s,{error:p}):null));const U=le(!1),F=le(),$=le(!!r);return r&&setTimeout(()=>{$.value=!1},r),o!=null&&setTimeout(()=>{if(!U.value&&!F.value){const p=new Error(`Async component timed out after ${o}ms.`);b(p),F.value=p}},o),y().then(()=>{U.value=!0,w.parent&&on(w.parent.vnode)&&w.parent.update()}).catch(p=>{b(p),F.value=p}),()=>{if(U.value&&a)return os(a,w);if(F.value&&s)return ce(s,{error:F.value});if(n&&!$.value)return ce(n)}}})}function os(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const on=e=>e.type.__isKeepAlive;function sc(e,t){zi(e,"a",t)}function rc(e,t){zi(e,"da",t)}function zi(e,t,n=de){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)on(r.parent.vnode)&&ic(s,t,n,r),r=r.parent}}function ic(e,t,n,s){const r=Kn(t,e,s,!0);qn(()=>{Vs(s[t],r)},n)}function Kn(e,t,n=de,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{it();const l=ln(n),c=He(t,n,e,o);return l(),ot(),c});return s?r.unshift(i):r.push(i),i}}const ze=e=>(t,n=de)=>{(!It||e==="sp")&&Kn(e,(...s)=>t(...s),n)},oc=ze("bm"),Ht=ze("m"),lc=ze("bu"),cc=ze("u"),Qi=ze("bum"),qn=ze("um"),ac=ze("sp"),fc=ze("rtg"),uc=ze("rtc");function dc(e,t=de){Kn("ec",e,t)}const Zi="components";function Ff(e,t){return to(Zi,e,!0,t)||e}const eo=Symbol.for("v-ndc");function Nf(e){return ie(e)?to(Zi,e,!1)||e:e||eo}function to(e,t,n=!0,s=!1){const r=he||de;if(r){const i=r.type;{const l=na(i,!1);if(l&&(l===t||l===Le(t)||l===$n(Le(t))))return i}const o=Sr(r[e]||i[e],t)||Sr(r.appContext[e],t);return!o&&s?i:o}}function Sr(e,t){return e&&(e[t]||e[Le(t)]||e[$n(Le(t))])}function Hf(e,t,n,s){let r;const i=n,o=K(e);if(o||ie(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=kn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;cLt(t)?!(t.type===ue||t.type===Te&&!no(t.children)):!0)?e:null}function $f(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:wn(s)]=e[s];return n}const Ms=e=>e?Ro(e)?zn(e):Ms(e.parent):null,Kt=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ms(e.parent),$root:e=>Ms(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>nr(e),$forceUpdate:e=>e.f||(e.f=()=>{Zs(e.update)}),$nextTick:e=>e.n||(e.n=Wn.bind(e.proxy)),$watch:e=>Fc.bind(e)}),ls=(e,t)=>e!==ee&&!e.__isScriptSetup&&Q(e,t),hc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const y=o[t];if(y!==void 0)switch(y){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ls(s,t))return o[t]=1,s[t];if(r!==ee&&Q(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&Q(f,t))return o[t]=3,i[t];if(n!==ee&&Q(n,t))return o[t]=4,n[t];Ps&&(o[t]=0)}}const a=Kt[t];let u,g;if(a)return t==="$attrs"&&ye(e.attrs,"get",""),a(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==ee&&Q(n,t))return o[t]=4,n[t];if(g=c.config.globalProperties,Q(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ls(r,t)?(r[t]=n,!0):s!==ee&&Q(s,t)?(s[t]=n,!0):Q(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==ee&&Q(e,o)||ls(t,o)||(l=i[0])&&Q(l,o)||Q(s,o)||Q(Kt,o)||Q(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Q(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function jf(){return pc().slots}function pc(){const e=Jn();return e.setupContext||(e.setupContext=Mo(e))}function Cr(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Ps=!0;function gc(e){const t=nr(e),n=e.proxy,s=e.ctx;Ps=!1,t.beforeCreate&&Ar(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:u,mounted:g,beforeUpdate:y,updated:w,activated:b,deactivated:U,beforeDestroy:F,beforeUnmount:$,destroyed:p,unmounted:m,render:E,renderTracked:O,renderTriggered:H,errorCaptured:D,serverPrefetch:C,expose:_,inheritAttrs:L,components:T,directives:B,filters:J}=t;if(f&&mc(f,s,null),o)for(const Y in o){const V=o[Y];q(V)&&(s[Y]=V.bind(n))}if(r){const Y=r.call(n,n);re(Y)&&(e.data=Vn(Y))}if(Ps=!0,i)for(const Y in i){const V=i[Y],pe=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):Ue,cn=!q(V)&&q(V.set)?V.set.bind(n):Ue,lt=oe({get:pe,set:cn});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>lt.value,set:$e=>lt.value=$e})}if(l)for(const Y in l)so(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(V=>{Ec(V,Y[V])})}a&&Ar(a,e,"c");function j(Y,V){K(V)?V.forEach(pe=>Y(pe.bind(n))):V&&Y(V.bind(n))}if(j(oc,u),j(Ht,g),j(lc,y),j(cc,w),j(sc,b),j(rc,U),j(dc,D),j(uc,O),j(fc,H),j(Qi,$),j(qn,m),j(ac,C),K(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(V=>{Object.defineProperty(Y,V,{get:()=>n[V],set:pe=>n[V]=pe})})}else e.exposed||(e.exposed={});E&&e.render===Ue&&(e.render=E),L!=null&&(e.inheritAttrs=L),T&&(e.components=T),B&&(e.directives=B),C&&tr(e)}function mc(e,t,n=Ue){K(e)&&(e=Ls(e));for(const s in e){const r=e[s];let i;re(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function Ar(e,t,n){He(K(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function so(e,t,n,s){let r=s.includes(".")?vo(n,s):()=>n[s];if(ie(e)){const i=t[e];q(i)&&Ne(r,i)}else if(q(e))Ne(r,e.bind(n));else if(re(e))if(K(e))e.forEach(i=>so(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Ne(r,i,e)}}function nr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>In(c,f,o,!0)),In(c,t,o)),re(t)&&i.set(t,c),c}function In(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&In(e,i,n,!0),r&&r.forEach(o=>In(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=yc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const yc={data:Rr,props:Or,emits:Or,methods:kt,computed:kt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:kt,directives:kt,watch:bc,provide:Rr,inject:vc};function Rr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function vc(e,t){return kt(Ls(e),Ls(t))}function Ls(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const io={},oo=()=>Object.create(io),lo=e=>Object.getPrototypeOf(e)===io;function Tc(e,t,n,s=!1){const r={},i=oo();e.propsDefaults=Object.create(null),co(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Ll(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function xc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=z(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let u=0;u{c=!0;const[g,y]=ao(u,t,!0);ae(o,g),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return re(e)&&s.set(e,xt),xt;if(K(i))for(let a=0;ae[0]==="_"||e==="$stable",sr=e=>K(e)?e.map(Re):[Re(e)],Cc=(e,t,n)=>{if(t._n)return t;const s=Gl((...r)=>sr(t(...r)),n);return s._c=!1,s},uo=(e,t,n)=>{const s=e._ctx;for(const r in e){if(fo(r))continue;const i=e[r];if(q(i))t[r]=Cc(r,i,s);else if(i!=null){const o=sr(i);t[r]=()=>o}}},ho=(e,t)=>{const n=sr(t);e.slots.default=()=>n},po=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Ac=(e,t,n)=>{const s=e.slots=oo();if(e.vnode.shapeFlag&32){const r=t._;r?(po(s,t,n),n&&gi(s,"_",r,!0)):uo(t,s)}else t&&ho(e,t)},Rc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=ee;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:po(r,t,n):(i=!t.$stable,uo(t,r)),o=t}else t&&(ho(e,t),o={default:1});if(i)for(const l in r)!fo(l)&&o[l]==null&&delete r[l]},_e=Eo;function Oc(e){return go(e)}function Mc(e){return go(e,ec)}function go(e,t){const n=jn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:u,nextSibling:g,setScopeId:y=Ue,insertStaticContent:w}=e,b=(d,h,v,A=null,x=null,S=null,I=void 0,P=null,M=!!h.dynamicChildren)=>{if(d===h)return;d&&!Ve(d,h)&&(A=an(d),$e(d,x,S,!0),d=null),h.patchFlag===-2&&(M=!1,h.dynamicChildren=null);const{type:R,ref:W,shapeFlag:N}=h;switch(R){case gt:U(d,h,v,A);break;case ue:F(d,h,v,A);break;case qt:d==null&&$(h,v,A,I);break;case Te:T(d,h,v,A,x,S,I,P,M);break;default:N&1?E(d,h,v,A,x,S,I,P,M):N&6?B(d,h,v,A,x,S,I,P,M):(N&64||N&128)&&R.process(d,h,v,A,x,S,I,P,M,vt)}W!=null&&x&&Zt(W,d&&d.ref,S,h||d,!h)},U=(d,h,v,A)=>{if(d==null)s(h.el=l(h.children),v,A);else{const x=h.el=d.el;h.children!==d.children&&f(x,h.children)}},F=(d,h,v,A)=>{d==null?s(h.el=c(h.children||""),v,A):h.el=d.el},$=(d,h,v,A)=>{[d.el,d.anchor]=w(d.children,h,v,A,d.el,d.anchor)},p=({el:d,anchor:h},v,A)=>{let x;for(;d&&d!==h;)x=g(d),s(d,v,A),d=x;s(h,v,A)},m=({el:d,anchor:h})=>{let v;for(;d&&d!==h;)v=g(d),r(d),d=v;r(h)},E=(d,h,v,A,x,S,I,P,M)=>{h.type==="svg"?I="svg":h.type==="math"&&(I="mathml"),d==null?O(h,v,A,x,S,I,P,M):C(d,h,x,S,I,P,M)},O=(d,h,v,A,x,S,I,P)=>{let M,R;const{props:W,shapeFlag:N,transition:k,dirs:G}=d;if(M=d.el=o(d.type,S,W&&W.is,W),N&8?a(M,d.children):N&16&&D(d.children,M,null,A,x,cs(d,S),I,P),G&&ke(d,null,A,"created"),H(M,d,d.scopeId,I,A),W){for(const ne in W)ne!=="value"&&!Ct(ne)&&i(M,ne,null,W[ne],S,A);"value"in W&&i(M,"value",null,W.value,S),(R=W.onVnodeBeforeMount)&&Me(R,A,d)}G&&ke(d,null,A,"beforeMount");const X=mo(x,k);X&&k.beforeEnter(M),s(M,h,v),((R=W&&W.onVnodeMounted)||X||G)&&_e(()=>{R&&Me(R,A,d),X&&k.enter(M),G&&ke(d,null,A,"mounted")},x)},H=(d,h,v,A,x)=>{if(v&&y(d,v),A)for(let S=0;S{for(let R=M;R{const P=h.el=d.el;let{patchFlag:M,dynamicChildren:R,dirs:W}=h;M|=d.patchFlag&16;const N=d.props||ee,k=h.props||ee;let G;if(v&&ct(v,!1),(G=k.onVnodeBeforeUpdate)&&Me(G,v,h,d),W&&ke(h,d,v,"beforeUpdate"),v&&ct(v,!0),(N.innerHTML&&k.innerHTML==null||N.textContent&&k.textContent==null)&&a(P,""),R?_(d.dynamicChildren,R,P,v,A,cs(h,x),S):I||V(d,h,P,null,v,A,cs(h,x),S,!1),M>0){if(M&16)L(P,N,k,v,x);else if(M&2&&N.class!==k.class&&i(P,"class",null,k.class,x),M&4&&i(P,"style",N.style,k.style,x),M&8){const X=h.dynamicProps;for(let ne=0;ne{G&&Me(G,v,h,d),W&&ke(h,d,v,"updated")},A)},_=(d,h,v,A,x,S,I)=>{for(let P=0;P{if(h!==v){if(h!==ee)for(const S in h)!Ct(S)&&!(S in v)&&i(d,S,h[S],null,x,A);for(const S in v){if(Ct(S))continue;const I=v[S],P=h[S];I!==P&&S!=="value"&&i(d,S,P,I,x,A)}"value"in v&&i(d,"value",h.value,v.value,x)}},T=(d,h,v,A,x,S,I,P,M)=>{const R=h.el=d?d.el:l(""),W=h.anchor=d?d.anchor:l("");let{patchFlag:N,dynamicChildren:k,slotScopeIds:G}=h;G&&(P=P?P.concat(G):G),d==null?(s(R,v,A),s(W,v,A),D(h.children||[],v,W,x,S,I,P,M)):N>0&&N&64&&k&&d.dynamicChildren?(_(d.dynamicChildren,k,v,x,S,I,P),(h.key!=null||x&&h===x.subTree)&&rr(d,h,!0)):V(d,h,v,W,x,S,I,P,M)},B=(d,h,v,A,x,S,I,P,M)=>{h.slotScopeIds=P,d==null?h.shapeFlag&512?x.ctx.activate(h,v,A,I,M):J(h,v,A,x,S,I,M):te(d,h,M)},J=(d,h,v,A,x,S,I)=>{const P=d.component=Qc(d,A,x);if(on(d)&&(P.ctx.renderer=vt),Zc(P,!1,I),P.asyncDep){if(x&&x.registerDep(P,j,I),!d.el){const M=P.subTree=ce(ue);F(null,M,h,v)}}else j(P,d,h,v,x,S,I)},te=(d,h,v)=>{const A=h.component=d.component;if(Bc(d,h,v))if(A.asyncDep&&!A.asyncResolved){Y(A,h,v);return}else A.next=h,A.update();else h.el=d.el,A.vnode=h},j=(d,h,v,A,x,S,I)=>{const P=()=>{if(d.isMounted){let{next:N,bu:k,u:G,parent:X,vnode:ne}=d;{const Ce=yo(d);if(Ce){N&&(N.el=ne.el,Y(d,N,I)),Ce.asyncDep.then(()=>{d.isUnmounted||P()});return}}let Z=N,Se;ct(d,!1),N?(N.el=ne.el,Y(d,N,I)):N=ne,k&&En(k),(Se=N.props&&N.props.onVnodeBeforeUpdate)&&Me(Se,X,N,ne),ct(d,!0);const ge=as(d),Ie=d.subTree;d.subTree=ge,b(Ie,ge,u(Ie.el),an(Ie),d,x,S),N.el=ge.el,Z===null&&Xn(d,ge.el),G&&_e(G,x),(Se=N.props&&N.props.onVnodeUpdated)&&_e(()=>Me(Se,X,N,ne),x)}else{let N;const{el:k,props:G}=h,{bm:X,m:ne,parent:Z,root:Se,type:ge}=d,Ie=pt(h);if(ct(d,!1),X&&En(X),!Ie&&(N=G&&G.onVnodeBeforeMount)&&Me(N,Z,h),ct(d,!0),k&&es){const Ce=()=>{d.subTree=as(d),es(k,d.subTree,d,x,null)};Ie&&ge.__asyncHydrate?ge.__asyncHydrate(k,d,Ce):Ce()}else{Se.ce&&Se.ce._injectChildStyle(ge);const Ce=d.subTree=as(d);b(null,Ce,v,A,d,x,S),h.el=Ce.el}if(ne&&_e(ne,x),!Ie&&(N=G&&G.onVnodeMounted)){const Ce=h;_e(()=>Me(N,Z,Ce),x)}(h.shapeFlag&256||Z&&pt(Z.vnode)&&Z.vnode.shapeFlag&256)&&d.a&&_e(d.a,x),d.isMounted=!0,h=v=A=null}};d.scope.on();const M=d.effect=new wi(P);d.scope.off();const R=d.update=M.run.bind(M),W=d.job=M.runIfDirty.bind(M);W.i=d,W.id=d.uid,M.scheduler=()=>Zs(W),ct(d,!0),R()},Y=(d,h,v)=>{h.component=d;const A=d.vnode.props;d.vnode=h,d.next=null,xc(d,h.props,A,v),Rc(d,h.children,v),it(),vr(d),ot()},V=(d,h,v,A,x,S,I,P,M=!1)=>{const R=d&&d.children,W=d?d.shapeFlag:0,N=h.children,{patchFlag:k,shapeFlag:G}=h;if(k>0){if(k&128){cn(R,N,v,A,x,S,I,P,M);return}else if(k&256){pe(R,N,v,A,x,S,I,P,M);return}}G&8?(W&16&&Dt(R,x,S),N!==R&&a(v,N)):W&16?G&16?cn(R,N,v,A,x,S,I,P,M):Dt(R,x,S,!0):(W&8&&a(v,""),G&16&&D(N,v,A,x,S,I,P,M))},pe=(d,h,v,A,x,S,I,P,M)=>{d=d||xt,h=h||xt;const R=d.length,W=h.length,N=Math.min(R,W);let k;for(k=0;kW?Dt(d,x,S,!0,!1,N):D(h,v,A,x,S,I,P,M,N)},cn=(d,h,v,A,x,S,I,P,M)=>{let R=0;const W=h.length;let N=d.length-1,k=W-1;for(;R<=N&&R<=k;){const G=d[R],X=h[R]=M?tt(h[R]):Re(h[R]);if(Ve(G,X))b(G,X,v,null,x,S,I,P,M);else break;R++}for(;R<=N&&R<=k;){const G=d[N],X=h[k]=M?tt(h[k]):Re(h[k]);if(Ve(G,X))b(G,X,v,null,x,S,I,P,M);else break;N--,k--}if(R>N){if(R<=k){const G=k+1,X=Gk)for(;R<=N;)$e(d[R],x,S,!0),R++;else{const G=R,X=R,ne=new Map;for(R=X;R<=k;R++){const Ae=h[R]=M?tt(h[R]):Re(h[R]);Ae.key!=null&&ne.set(Ae.key,R)}let Z,Se=0;const ge=k-X+1;let Ie=!1,Ce=0;const $t=new Array(ge);for(R=0;R=ge){$e(Ae,x,S,!0);continue}let je;if(Ae.key!=null)je=ne.get(Ae.key);else for(Z=X;Z<=k;Z++)if($t[Z-X]===0&&Ve(Ae,h[Z])){je=Z;break}je===void 0?$e(Ae,x,S,!0):($t[je-X]=R+1,je>=Ce?Ce=je:Ie=!0,b(Ae,h[je],v,null,x,S,I,P,M),Se++)}const hr=Ie?Pc($t):xt;for(Z=hr.length-1,R=ge-1;R>=0;R--){const Ae=X+R,je=h[Ae],pr=Ae+1{const{el:S,type:I,transition:P,children:M,shapeFlag:R}=d;if(R&6){lt(d.component.subTree,h,v,A);return}if(R&128){d.suspense.move(h,v,A);return}if(R&64){I.move(d,h,v,vt);return}if(I===Te){s(S,h,v);for(let N=0;NP.enter(S),x);else{const{leave:N,delayLeave:k,afterLeave:G}=P,X=()=>s(S,h,v),ne=()=>{N(S,()=>{X(),G&&G()})};k?k(S,X,ne):ne()}else s(S,h,v)},$e=(d,h,v,A=!1,x=!1)=>{const{type:S,props:I,ref:P,children:M,dynamicChildren:R,shapeFlag:W,patchFlag:N,dirs:k,cacheIndex:G}=d;if(N===-2&&(x=!1),P!=null&&Zt(P,null,v,d,!0),G!=null&&(h.renderCache[G]=void 0),W&256){h.ctx.deactivate(d);return}const X=W&1&&k,ne=!pt(d);let Z;if(ne&&(Z=I&&I.onVnodeBeforeUnmount)&&Me(Z,h,d),W&6)Qo(d.component,v,A);else{if(W&128){d.suspense.unmount(v,A);return}X&&ke(d,null,h,"beforeUnmount"),W&64?d.type.remove(d,h,v,vt,A):R&&!R.hasOnce&&(S!==Te||N>0&&N&64)?Dt(R,h,v,!1,!0):(S===Te&&N&384||!x&&W&16)&&Dt(M,h,v),A&&ur(d)}(ne&&(Z=I&&I.onVnodeUnmounted)||X)&&_e(()=>{Z&&Me(Z,h,d),X&&ke(d,null,h,"unmounted")},v)},ur=d=>{const{type:h,el:v,anchor:A,transition:x}=d;if(h===Te){zo(v,A);return}if(h===qt){m(d);return}const S=()=>{r(v),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(d.shapeFlag&1&&x&&!x.persisted){const{leave:I,delayLeave:P}=x,M=()=>I(v,S);P?P(d.el,S,M):M()}else S()},zo=(d,h)=>{let v;for(;d!==h;)v=g(d),r(d),d=v;r(h)},Qo=(d,h,v)=>{const{bum:A,scope:x,job:S,subTree:I,um:P,m:M,a:R}=d;Pr(M),Pr(R),A&&En(A),x.stop(),S&&(S.flags|=8,$e(I,d,h,v)),P&&_e(P,h),_e(()=>{d.isUnmounted=!0},h),h&&h.pendingBranch&&!h.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===h.pendingId&&(h.deps--,h.deps===0&&h.resolve())},Dt=(d,h,v,A=!1,x=!1,S=0)=>{for(let I=S;I{if(d.shapeFlag&6)return an(d.component.subTree);if(d.shapeFlag&128)return d.suspense.next();const h=g(d.anchor||d.el),v=h&&h[Vi];return v?g(v):h};let Qn=!1;const dr=(d,h,v)=>{d==null?h._vnode&&$e(h._vnode,null,null,!0):b(h._vnode||null,d,h,null,null,null,v),h._vnode=d,Qn||(Qn=!0,vr(),Pn(),Qn=!1)},vt={p:b,um:$e,m:lt,r:ur,mt:J,mc:D,pc:V,pbc:_,n:an,o:e};let Zn,es;return t&&([Zn,es]=t(vt)),{render:dr,hydrate:Zn,createApp:wc(dr,Zn)}}function cs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function ct({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function mo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function rr(e,t,n=!1){const s=e.children,r=t.children;if(K(s)&&K(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function yo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:yo(t)}function Pr(e){if(e)for(let t=0;tOt(Lc);function ir(e,t){return Gn(e,null,t)}function Bf(e,t){return Gn(e,null,{flush:"post"})}function Ne(e,t,n){return Gn(e,t,n)}function Gn(e,t,n=ee){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(It){if(i==="sync"){const y=Ic();f=y.__watcherHandles||(y.__watcherHandles=[])}else if(!c){const y=()=>{};return y.stop=Ue,y.resume=Ue,y.pause=Ue,y}}const a=de;l.call=(y,w,b)=>He(y,a,w,b);let u=!1;i==="post"?l.scheduler=y=>{_e(y,a&&a.suspense)}:i!=="sync"&&(u=!0,l.scheduler=(y,w)=>{w?y():Zs(y)}),l.augmentJob=y=>{t&&(y.flags|=4),u&&(y.flags|=2,a&&(y.id=a.uid,y.i=a))};const g=Wl(e,t,l);return It&&(f?f.push(g):c&&g()),g}function Fc(e,t,n){const s=this.proxy,r=ie(e)?e.includes(".")?vo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=ln(this),l=Gn(r,i.bind(s),n);return o(),l}function vo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${rt(t)}Modifiers`];function Hc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const i=t.startsWith("update:"),o=i&&Nc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>ie(a)?a.trim():a)),o.number&&(r=n.map(Es)));let l,c=s[l=wn(t)]||s[l=wn(Le(t))];!c&&i&&(c=s[l=wn(rt(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function bo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=bo(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(re(e)&&s.set(e,null),null):(K(i)?i.forEach(c=>o[c]=null):ae(o,i),re(e)&&s.set(e,o),o)}function Yn(e,t){return!e||!sn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Q(e,t[0].toLowerCase()+t.slice(1))||Q(e,rt(t))||Q(e,t))}function as(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:u,data:g,setupState:y,ctx:w,inheritAttrs:b}=e,U=Ln(e);let F,$;try{if(n.shapeFlag&4){const m=r||s,E=m;F=Re(f.call(E,m,a,u,y,g,w)),$=l}else{const m=t;F=Re(m.length>1?m(u,{attrs:l,slots:o,emit:c}):m(u,null)),$=t.props?l:$c(l)}}catch(m){Gt.length=0,Nt(m,e,1),F=ce(ue)}let p=F;if($&&b!==!1){const m=Object.keys($),{shapeFlag:E}=p;m.length&&E&7&&(i&&m.some(ks)&&($=jc($,i)),p=st(p,$,!1,!0))}return n.dirs&&(p=st(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Qt(p,n.transition),F=p,Ln(U),F}function Dc(e,t=!0){let n;for(let s=0;s{let t;for(const n in e)(n==="class"||n==="style"||sn(n))&&((t||(t={}))[n]=e[n]);return t},jc=(e,t)=>{const n={};for(const s in e)(!ks(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Bc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Lr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let u=0;ue.__isSuspense;let Fs=0;const kc={name:"Suspense",__isSuspense:!0,process(e,t,n,s,r,i,o,l,c,f){if(e==null)Vc(t,n,s,r,i,o,l,c,f);else{if(i&&i.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Uc(e,t,n,s,r,o,l,c,f)}},hydrate:Wc,normalize:Kc},kf=kc;function en(e,t){const n=e.props&&e.props[t];q(n)&&n()}function Vc(e,t,n,s,r,i,o,l,c){const{p:f,o:{createElement:a}}=c,u=a("div"),g=e.suspense=wo(e,r,s,t,u,n,i,o,l,c);f(null,g.pendingBranch=e.ssContent,u,null,s,g,i,o),g.deps>0?(en(e,"onPending"),en(e,"onFallback"),f(null,e.ssFallback,t,n,s,null,i,o),Mt(g,e.ssFallback)):g.resolve(!1,!0)}function Uc(e,t,n,s,r,i,o,l,{p:c,um:f,o:{createElement:a}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const g=t.ssContent,y=t.ssFallback,{activeBranch:w,pendingBranch:b,isInFallback:U,isHydrating:F}=u;if(b)u.pendingBranch=g,Ve(g,b)?(c(b,g,u.hiddenContainer,null,r,u,i,o,l),u.deps<=0?u.resolve():U&&(F||(c(w,y,n,s,r,null,i,o,l),Mt(u,y)))):(u.pendingId=Fs++,F?(u.isHydrating=!1,u.activeBranch=b):f(b,r,u),u.deps=0,u.effects.length=0,u.hiddenContainer=a("div"),U?(c(null,g,u.hiddenContainer,null,r,u,i,o,l),u.deps<=0?u.resolve():(c(w,y,n,s,r,null,i,o,l),Mt(u,y))):w&&Ve(g,w)?(c(w,g,n,s,r,u,i,o,l),u.resolve(!0)):(c(null,g,u.hiddenContainer,null,r,u,i,o,l),u.deps<=0&&u.resolve()));else if(w&&Ve(g,w))c(w,g,n,s,r,u,i,o,l),Mt(u,g);else if(en(t,"onPending"),u.pendingBranch=g,g.shapeFlag&512?u.pendingId=g.component.suspenseId:u.pendingId=Fs++,c(null,g,u.hiddenContainer,null,r,u,i,o,l),u.deps<=0)u.resolve();else{const{timeout:$,pendingId:p}=u;$>0?setTimeout(()=>{u.pendingId===p&&u.fallback(y)},$):$===0&&u.fallback(y)}}function wo(e,t,n,s,r,i,o,l,c,f,a=!1){const{p:u,m:g,um:y,n:w,o:{parentNode:b,remove:U}}=f;let F;const $=qc(e);$&&t&&t.pendingBranch&&(F=t.pendingId,t.deps++);const p=e.props?mi(e.props.timeout):void 0,m=i,E={vnode:e,parent:t,parentComponent:n,namespace:o,container:s,hiddenContainer:r,deps:0,pendingId:Fs++,timeout:typeof p=="number"?p:-1,activeBranch:null,pendingBranch:null,isInFallback:!a,isHydrating:a,isUnmounted:!1,effects:[],resolve(O=!1,H=!1){const{vnode:D,activeBranch:C,pendingBranch:_,pendingId:L,effects:T,parentComponent:B,container:J}=E;let te=!1;E.isHydrating?E.isHydrating=!1:O||(te=C&&_.transition&&_.transition.mode==="out-in",te&&(C.transition.afterLeave=()=>{L===E.pendingId&&(g(_,J,i===m?w(C):i,0),As(T))}),C&&(b(C.el)===J&&(i=w(C)),y(C,B,E,!0)),te||g(_,J,i,0)),Mt(E,_),E.pendingBranch=null,E.isInFallback=!1;let j=E.parent,Y=!1;for(;j;){if(j.pendingBranch){j.effects.push(...T),Y=!0;break}j=j.parent}!Y&&!te&&As(T),E.effects=[],$&&t&&t.pendingBranch&&F===t.pendingId&&(t.deps--,t.deps===0&&!H&&t.resolve()),en(D,"onResolve")},fallback(O){if(!E.pendingBranch)return;const{vnode:H,activeBranch:D,parentComponent:C,container:_,namespace:L}=E;en(H,"onFallback");const T=w(D),B=()=>{E.isInFallback&&(u(null,O,_,T,C,null,L,l,c),Mt(E,O))},J=O.transition&&O.transition.mode==="out-in";J&&(D.transition.afterLeave=B),E.isInFallback=!0,y(D,C,null,!0),J||B()},move(O,H,D){E.activeBranch&&g(E.activeBranch,O,H,D),E.container=O},next(){return E.activeBranch&&w(E.activeBranch)},registerDep(O,H,D){const C=!!E.pendingBranch;C&&E.deps++;const _=O.vnode.el;O.asyncDep.catch(L=>{Nt(L,O,0)}).then(L=>{if(O.isUnmounted||E.isUnmounted||E.pendingId!==O.suspenseId)return;O.asyncResolved=!0;const{vnode:T}=O;Ds(O,L,!1),_&&(T.el=_);const B=!_&&O.subTree.el;H(O,T,b(_||O.subTree.el),_?null:w(O.subTree),E,o,D),B&&U(B),Xn(O,T.el),C&&--E.deps===0&&E.resolve()})},unmount(O,H){E.isUnmounted=!0,E.activeBranch&&y(E.activeBranch,n,O,H),E.pendingBranch&&y(E.pendingBranch,n,O,H)}};return E}function Wc(e,t,n,s,r,i,o,l,c){const f=t.suspense=wo(t,s,n,e.parentNode,document.createElement("div"),null,r,i,o,l,!0),a=c(e,f.pendingBranch=t.ssContent,n,f,i,o);return f.deps===0&&f.resolve(!1,!0),a}function Kc(e){const{shapeFlag:t,children:n}=e,s=t&32;e.ssContent=Ir(s?n.default:n),e.ssFallback=s?Ir(n.fallback):ce(ue)}function Ir(e){let t;if(q(e)){const n=Pt&&e._c;n&&(e._d=!1,Fn()),e=e(),n&&(e._d=!0,t=xe,To())}return K(e)&&(e=Dc(e)),e=Re(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Eo(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):As(e)}function Mt(e,t){e.activeBranch=t;const{vnode:n,parentComponent:s}=e;let r=t.el;for(;!r&&t.component;)t=t.component.subTree,r=t.el;n.el=r,s&&s.subTree===n&&(s.vnode.el=r,Xn(s,r))}function qc(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const Te=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ue=Symbol.for("v-cmt"),qt=Symbol.for("v-stc"),Gt=[];let xe=null;function Fn(e=!1){Gt.push(xe=e?null:[])}function To(){Gt.pop(),xe=Gt[Gt.length-1]||null}let Pt=1;function Fr(e,t=!1){Pt+=e,e<0&&xe&&t&&(xe.hasOnce=!0)}function xo(e){return e.dynamicChildren=Pt>0?xe||xt:null,To(),Pt>0&&xe&&xe.push(e),e}function Vf(e,t,n,s,r,i){return xo(Co(e,t,n,s,r,i,!0))}function Ns(e,t,n,s,r){return xo(ce(e,t,n,s,r,!0))}function Lt(e){return e?e.__v_isVNode===!0:!1}function Ve(e,t){return e.type===t.type&&e.key===t.key}const So=({key:e})=>e??null,Sn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ie(e)||fe(e)||q(e)?{i:he,r:e,k:t,f:!!n}:e:null);function Co(e,t=null,n=null,s=0,r=null,i=e===Te?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&So(t),ref:t&&Sn(t),scopeId:ki,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:he};return l?(or(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=ie(n)?8:16),Pt>0&&!o&&xe&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&xe.push(c),c}const ce=Gc;function Gc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===eo)&&(e=ue),Lt(e)){const l=st(e,t,!0);return n&&or(l,n),Pt>0&&!i&&xe&&(l.shapeFlag&6?xe[xe.indexOf(e)]=l:xe.push(l)),l.patchFlag=-2,l}if(sa(e)&&(e=e.__vccOpts),t){t=Yc(t);let{class:l,style:c}=t;l&&!ie(l)&&(t.class=Ks(l)),re(c)&&(zs(c)&&!K(c)&&(c=ae({},c)),t.style=Ws(c))}const o=ie(e)?1:_o(e)?128:Ui(e)?64:re(e)?4:q(e)?2:0;return Co(e,t,n,s,r,o,i,!0)}function Yc(e){return e?zs(e)||lo(e)?ae({},e):e:null}function st(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Xc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&So(f),ref:t&&t.ref?n&&i?K(i)?i.concat(Sn(t)):[i,Sn(t)]:Sn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Te?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&st(e.ssContent),ssFallback:e.ssFallback&&st(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Qt(a,c.clone(a)),a}function Ao(e=" ",t=0){return ce(gt,null,e,t)}function Uf(e,t){const n=ce(qt,null,e);return n.staticCount=t,n}function Wf(e="",t=!1){return t?(Fn(),Ns(ue,null,e)):ce(ue,null,e)}function Re(e){return e==null||typeof e=="boolean"?ce(ue):K(e)?ce(Te,null,e.slice()):Lt(e)?tt(e):ce(gt,null,String(e))}function tt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:st(e)}function or(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),or(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!lo(t)?t._ctx=he:r===3&&he&&(he.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:he},n=32):(t=String(t),s&64?(n=16,t=[Ao(t)]):n=8);e.children=t,e.shapeFlag|=n}function Xc(...e){const t={};for(let n=0;nde||he;let Nn,Hs;{const e=jn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>de=n),Hs=t("__VUE_SSR_SETTERS__",n=>It=n)}const ln=e=>{const t=de;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},Nr=()=>{de&&de.scope.off(),Nn(null)};function Ro(e){return e.vnode.shapeFlag&4}let It=!1;function Zc(e,t=!1,n=!1){t&&Hs(t);const{props:s,children:r}=e.vnode,i=Ro(e);Tc(e,s,i,t),Ac(e,r,n);const o=i?ea(e,t):void 0;return t&&Hs(!1),o}function ea(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,hc);const{setup:s}=n;if(s){it();const r=e.setupContext=s.length>1?Mo(e):null,i=ln(e),o=rn(s,e,0,[e.props,r]),l=di(o);if(ot(),i(),(l||e.sp)&&!pt(e)&&tr(e),l){if(o.then(Nr,Nr),t)return o.then(c=>{Ds(e,c,t)}).catch(c=>{Nt(c,e,0)});e.asyncDep=o}else Ds(e,o,t)}else Oo(e,t)}function Ds(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:re(t)&&(e.setupState=Di(t)),Oo(e,n)}let Hr;function Oo(e,t,n){const s=e.type;if(!e.render){if(!t&&Hr&&!s.render){const r=s.template||nr(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Hr(r,f)}}e.render=s.render||Ue}{const r=ln(e);it();try{gc(e)}finally{ot(),r()}}}const ta={get(e,t){return ye(e,"get",""),e[t]}};function Mo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,ta),slots:e.slots,emit:e.emit,expose:t}}function zn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Di(Tn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Kt)return Kt[n](e)},has(t,n){return n in t||n in Kt}})):e.proxy}function na(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function sa(e){return q(e)&&"__vccOpts"in e}const oe=(e,t)=>Vl(e,t,It);function $s(e,t,n){const s=arguments.length;return s===2?re(t)&&!K(t)?Lt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&Lt(n)&&(n=[n]),ce(e,t,n))}const ra="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let js;const Dr=typeof window<"u"&&window.trustedTypes;if(Dr)try{js=Dr.createPolicy("vue",{createHTML:e=>e})}catch{}const Po=js?e=>js.createHTML(e):e=>e,ia="http://www.w3.org/2000/svg",oa="http://www.w3.org/1998/Math/MathML",Ge=typeof document<"u"?document:null,$r=Ge&&Ge.createElement("template"),la={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Ge.createElementNS(ia,e):t==="mathml"?Ge.createElementNS(oa,e):n?Ge.createElement(e,{is:n}):Ge.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Ge.createTextNode(e),createComment:e=>Ge.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ge.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{$r.innerHTML=Po(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=$r.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Qe="transition",Bt="animation",tn=Symbol("_vtc"),Lo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},ca=ae({},qi,Lo),aa=e=>(e.displayName="Transition",e.props=ca,e),Kf=aa((e,{slots:t})=>$s(zl,fa(e),t)),at=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},jr=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function fa(e){const t={};for(const T in e)T in Lo||(t[T]=e[T]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,w=ua(r),b=w&&w[0],U=w&&w[1],{onBeforeEnter:F,onEnter:$,onEnterCancelled:p,onLeave:m,onLeaveCancelled:E,onBeforeAppear:O=F,onAppear:H=$,onAppearCancelled:D=p}=t,C=(T,B,J,te)=>{T._enterCancelled=te,ft(T,B?a:l),ft(T,B?f:o),J&&J()},_=(T,B)=>{T._isLeaving=!1,ft(T,u),ft(T,y),ft(T,g),B&&B()},L=T=>(B,J)=>{const te=T?H:$,j=()=>C(B,T,J);at(te,[B,j]),Br(()=>{ft(B,T?c:i),qe(B,T?a:l),jr(te)||kr(B,s,b,j)})};return ae(t,{onBeforeEnter(T){at(F,[T]),qe(T,i),qe(T,o)},onBeforeAppear(T){at(O,[T]),qe(T,c),qe(T,f)},onEnter:L(!1),onAppear:L(!0),onLeave(T,B){T._isLeaving=!0;const J=()=>_(T,B);qe(T,u),T._enterCancelled?(qe(T,g),Wr()):(Wr(),qe(T,g)),Br(()=>{T._isLeaving&&(ft(T,u),qe(T,y),jr(m)||kr(T,s,U,J))}),at(m,[T,J])},onEnterCancelled(T){C(T,!1,void 0,!0),at(p,[T])},onAppearCancelled(T){C(T,!0,void 0,!0),at(D,[T])},onLeaveCancelled(T){_(T),at(E,[T])}})}function ua(e){if(e==null)return null;if(re(e))return[fs(e.enter),fs(e.leave)];{const t=fs(e);return[t,t]}}function fs(e){return mi(e)}function qe(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[tn]||(e[tn]=new Set)).add(t)}function ft(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[tn];n&&(n.delete(t),n.size||(e[tn]=void 0))}function Br(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let da=0;function kr(e,t,n,s){const r=e._endId=++da,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ha(e,t);if(!o)return s();const f=o+"end";let a=0;const u=()=>{e.removeEventListener(f,g),i()},g=y=>{y.target===e&&++a>=c&&u()};setTimeout(()=>{a(n[w]||"").split(", "),r=s(`${Qe}Delay`),i=s(`${Qe}Duration`),o=Vr(r,i),l=s(`${Bt}Delay`),c=s(`${Bt}Duration`),f=Vr(l,c);let a=null,u=0,g=0;t===Qe?o>0&&(a=Qe,u=o,g=i.length):t===Bt?f>0&&(a=Bt,u=f,g=c.length):(u=Math.max(o,f),a=u>0?o>f?Qe:Bt:null,g=a?a===Qe?i.length:c.length:0);const y=a===Qe&&/\b(transform|all)(,|$)/.test(s(`${Qe}Property`).toString());return{type:a,timeout:u,propCount:g,hasTransform:y}}function Vr(e,t){for(;e.lengthUr(n)+Ur(e[s])))}function Ur(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Wr(){return document.body.offsetHeight}function pa(e,t,n){const s=e[tn];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Kr=Symbol("_vod"),ga=Symbol("_vsh"),ma=Symbol(""),ya=/(^|;)\s*display\s*:/;function va(e,t,n){const s=e.style,r=ie(n);let i=!1;if(n&&!r){if(t)if(ie(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&Cn(s,l,"")}else for(const o in t)n[o]==null&&Cn(s,o,"");for(const o in n)o==="display"&&(i=!0),Cn(s,o,n[o])}else if(r){if(t!==n){const o=s[ma];o&&(n+=";"+o),s.cssText=n,i=ya.test(n)}}else t&&e.removeAttribute("style");Kr in e&&(e[Kr]=i?s.display:"",e[ga]&&(s.display="none"))}const qr=/\s*!important$/;function Cn(e,t,n){if(K(n))n.forEach(s=>Cn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ba(e,t);qr.test(n)?e.setProperty(rt(s),n.replace(qr,""),"important"):e[s]=n}}const Gr=["Webkit","Moz","ms"],us={};function ba(e,t){const n=us[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return us[t]=s;s=$n(s);for(let r=0;rds||(Ta.then(()=>ds=0),ds=Date.now());function Sa(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(Ca(s,n.value),t,5,[s])};return n.value=e,n.attached=xa(),n}function Ca(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Zr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Aa=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?pa(e,s,o):t==="style"?va(e,n,s):sn(t)?ks(t)||wa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ra(e,t,s,o))?(Jr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Xr(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ie(s))?Jr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Xr(e,t,s,o))};function Ra(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Zr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Zr(t)&&ie(n)?!1:t in e}const ei=e=>{const t=e.props["onUpdate:modelValue"]||!1;return K(t)?n=>En(t,n):t};function Oa(e){e.target.composing=!0}function ti(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const hs=Symbol("_assign"),qf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[hs]=ei(r);const i=s||r.props&&r.props.type==="number";Et(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=Es(l)),e[hs](l)}),n&&Et(e,"change",()=>{e.value=e.value.trim()}),t||(Et(e,"compositionstart",Oa),Et(e,"compositionend",ti),Et(e,"change",ti))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[hs]=ei(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?Es(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Ma=["ctrl","shift","alt","meta"],Pa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ma.some(n=>e[`${n}Key`]&&!t.includes(n))},Gf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=rt(r.key);if(t.some(o=>o===i||La[o]===i))return e(r)})},Io=ae({patchProp:Aa},la);let Yt,ni=!1;function Ia(){return Yt||(Yt=Oc(Io))}function Fa(){return Yt=ni?Yt:Mc(Io),ni=!0,Yt}const Xf=(...e)=>{const t=Ia().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=No(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Fo(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Jf=(...e)=>{const t=Fa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=No(s);if(r)return n(r,!0,Fo(r))},t};function Fo(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function No(e){return ie(e)?document.querySelector(e):e}const zf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Na="modulepreload",Ha=function(e){return"/coding-standards/"+e},si={},Qf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=Ha(c),c in si)return;si[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const u=document.createElement("link");if(u.rel=f?"stylesheet":Na,f||(u.as="script"),u.crossOrigin="",u.href=c,l&&u.setAttribute("nonce",l),document.head.appendChild(u),f)return new Promise((g,y)=>{u.addEventListener("load",g),u.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},Da=window.__VP_SITE_DATA__;function lr(e){return _i()?(dl(e),!0):!1}function We(e){return typeof e=="function"?e():Hi(e)}const Ho=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Zf=e=>e!=null,$a=Object.prototype.toString,ja=e=>$a.call(e)==="[object Object]",nn=()=>{},ri=Ba();function Ba(){var e,t;return Ho&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ka(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Do=e=>e();function Va(e,t={}){let n,s,r=nn;const i=l=>{clearTimeout(l),r(),r=nn};return l=>{const c=We(e),f=We(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,u)=>{r=t.rejectOnCancel?u:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Ua(e=Do){const t=le(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Un(t),pause:n,resume:s,eventFilter:r}}function Wa(e){return Jn()}function $o(...e){if(e.length!==1)return jl(...e);const t=e[0];return typeof t=="function"?Un(Hl(()=>({get:t,set:nn}))):le(t)}function jo(e,t,n={}){const{eventFilter:s=Do,...r}=n;return Ne(e,ka(s,t),r)}function Ka(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Ua(s);return{stop:jo(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function cr(e,t=!0,n){Wa()?Ht(e,n):t?e():Wn(e)}function eu(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return jo(e,t,{...i,eventFilter:Va(s,{maxWait:r})})}function tu(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=nn}=s,c=le(!r),f=o?Qs(t):le(t);let a=0;return ir(async u=>{if(!c.value)return;a++;const g=a;let y=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const w=await e(b=>{u(()=>{i&&(i.value=!1),y||b()})});g===a&&(f.value=w)}catch(w){l(w)}finally{i&&g===a&&(i.value=!1),y=!0}}),r?oe(()=>(c.value=!0,f.value)):f}const De=Ho?window:void 0;function Bo(e){var t;const n=We(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Ft(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=De):[t,n,s,r]=e,!t)return nn;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,u,g,y)=>(a.addEventListener(u,g,y),()=>a.removeEventListener(u,g,y)),c=Ne(()=>[Bo(t),We(r)],([a,u])=>{if(o(),!a)return;const g=ja(u)?{...u}:u;i.push(...n.flatMap(y=>s.map(w=>l(a,y,w,g))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return lr(f),f}function qa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function nu(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=De,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=qa(t);return Ft(r,i,a=>{a.repeat&&We(l)||c(a)&&n(a)},o)}function Ga(){const e=le(!1),t=Jn();return t&&Ht(()=>{e.value=!0},t),e}function Ya(e){const t=Ga();return oe(()=>(t.value,!!e()))}function ko(e,t={}){const{window:n=De}=t,s=Ya(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=le(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=ir(()=>{s.value&&(l(),r=n.matchMedia(We(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return lr(()=>{c(),l(),r=void 0}),i}const yn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},vn="__vueuse_ssr_handlers__",Xa=Ja();function Ja(){return vn in yn||(yn[vn]=yn[vn]||{}),yn[vn]}function Vo(e,t){return Xa[e]||t}function ar(e){return ko("(prefers-color-scheme: dark)",e)}function za(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Qa={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},ii="vueuse-storage";function fr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:u=De,eventFilter:g,onError:y=_=>{console.error(_)},initOnMounted:w}=s,b=(a?Qs:le)(typeof t=="function"?t():t);if(!n)try{n=Vo("getDefaultStorage",()=>{var _;return(_=De)==null?void 0:_.localStorage})()}catch(_){y(_)}if(!n)return b;const U=We(t),F=za(U),$=(r=s.serializer)!=null?r:Qa[F],{pause:p,resume:m}=Ka(b,()=>O(b.value),{flush:i,deep:o,eventFilter:g});u&&l&&cr(()=>{n instanceof Storage?Ft(u,"storage",D):Ft(u,ii,C),w&&D()}),w||D();function E(_,L){if(u){const T={key:e,oldValue:_,newValue:L,storageArea:n};u.dispatchEvent(n instanceof Storage?new StorageEvent("storage",T):new CustomEvent(ii,{detail:T}))}}function O(_){try{const L=n.getItem(e);if(_==null)E(L,null),n.removeItem(e);else{const T=$.write(_);L!==T&&(n.setItem(e,T),E(L,T))}}catch(L){y(L)}}function H(_){const L=_?_.newValue:n.getItem(e);if(L==null)return c&&U!=null&&n.setItem(e,$.write(U)),U;if(!_&&f){const T=$.read(L);return typeof f=="function"?f(T,U):F==="object"&&!Array.isArray(T)?{...U,...T}:T}else return typeof L!="string"?L:$.read(L)}function D(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){b.value=U;return}if(!(_&&_.key!==e)){p();try{(_==null?void 0:_.newValue)!==$.write(b.value)&&(b.value=H(_))}catch(L){y(L)}finally{_?Wn(m):m()}}}}function C(_){D(_.detail)}return b}const Za="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function ef(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=De,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,u={auto:"",light:"light",dark:"dark",...e.modes||{}},g=ar({window:r}),y=oe(()=>g.value?"dark":"light"),w=c||(o==null?$o(s):fr(o,s,i,{window:r,listenToStorageChanges:l})),b=oe(()=>w.value==="auto"?y.value:w.value),U=Vo("updateHTMLAttrs",(m,E,O)=>{const H=typeof m=="string"?r==null?void 0:r.document.querySelector(m):Bo(m);if(!H)return;const D=new Set,C=new Set;let _=null;if(E==="class"){const T=O.split(/\s/g);Object.values(u).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{T.includes(B)?D.add(B):C.add(B)})}else _={key:E,value:O};if(D.size===0&&C.size===0&&_===null)return;let L;a&&(L=r.document.createElement("style"),L.appendChild(document.createTextNode(Za)),r.document.head.appendChild(L));for(const T of D)H.classList.add(T);for(const T of C)H.classList.remove(T);_&&H.setAttribute(_.key,_.value),a&&(r.getComputedStyle(L).opacity,document.head.removeChild(L))});function F(m){var E;U(t,n,(E=u[m])!=null?E:m)}function $(m){e.onChanged?e.onChanged(m,F):F(m)}Ne(b,$,{flush:"post",immediate:!0}),cr(()=>$(b.value));const p=oe({get(){return f?w.value:b.value},set(m){w.value=m}});try{return Object.assign(p,{store:w,system:y,state:b})}catch{return p}}function tf(e={}){const{valueDark:t="dark",valueLight:n="",window:s=De}=e,r=ef({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=oe(()=>r.system?r.system.value:ar({window:s}).value?"dark":"light");return oe({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function ps(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function su(e,t,n={}){const{window:s=De}=n;return fr(e,t,s==null?void 0:s.localStorage,n)}function Uo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const gs=new WeakMap;function ru(e,t=!1){const n=le(t);let s=null,r="";Ne($o(e),l=>{const c=ps(We(l));if(c){const f=c;if(gs.get(f)||gs.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=ps(We(e));!l||n.value||(ri&&(s=Ft(l,"touchmove",c=>{nf(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=ps(We(e));!l||!n.value||(ri&&(s==null||s()),l.style.overflow=r,gs.delete(l),n.value=!1)};return lr(o),oe({get(){return n.value},set(l){l?i():o()}})}function iu(e,t,n={}){const{window:s=De}=n;return fr(e,t,s==null?void 0:s.sessionStorage,n)}function ou(e={}){const{window:t=De,behavior:n="auto"}=e;if(!t)return{x:le(0),y:le(0)};const s=le(t.scrollX),r=le(t.scrollY),i=oe({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=oe({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Ft(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function lu(e={}){const{window:t=De,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=le(n),c=le(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),cr(f),Ft("resize",f,{passive:!0}),r){const a=ko("(orientation: portrait)");Ne(a,()=>f())}return{width:l,height:c}}const ms={BASE_URL:"/coding-standards/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var ys={};const Wo=/^(?:[a-z]+:|\/\/)/i,sf="vitepress-theme-appearance",rf=/#.*$/,of=/[?#].*$/,lf=/(?:(^|\/)index)?\.(?:md|html)$/,me=typeof document<"u",Ko={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function cf(e,t,n=!1){if(t===void 0)return!1;if(e=oi(`/${e}`),n)return new RegExp(t).test(e);if(oi(t)!==e)return!1;const s=t.match(rf);return s?(me?location.hash:"")===s[0]:!0}function oi(e){return decodeURI(e).replace(of,"").replace(lf,"$1")}function af(e){return Wo.test(e)}function ff(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!af(n)&&cf(t,`/${n}/`,!0))||"root"}function uf(e,t){var s,r,i,o,l,c,f;const n=ff(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Go(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function qo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=df(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function df(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function hf(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Go(e,t){return[...e.filter(n=>!hf(t,n)),...t]}const pf=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,gf=/^[a-z]:/i;function li(e){const t=gf.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(pf,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const vs=new Set;function mf(e){if(vs.size===0){const n=typeof process=="object"&&(ys==null?void 0:ys.VITE_EXTRA_EXTENSIONS)||(ms==null?void 0:ms.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>vs.add(s))}const t=e.split(".").pop();return t==null||!vs.has(t.toLowerCase())}function cu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const yf=Symbol(),mt=Qs(Da);function au(e){const t=oe(()=>uf(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?le(!0):n==="force-auto"?ar():n?tf({storageKey:sf,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):le(!1),r=le(me?location.hash:"");return me&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Ne(()=>e.data,()=>{r.value=me?location.hash:""}),{site:t,theme:oe(()=>t.value.themeConfig),page:oe(()=>e.data),frontmatter:oe(()=>e.data.frontmatter),params:oe(()=>e.data.params),lang:oe(()=>t.value.lang),dir:oe(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:oe(()=>t.value.localeIndex||"root"),title:oe(()=>qo(t.value,e.data)),description:oe(()=>e.data.description||t.value.description),isDark:s,hash:oe(()=>r.value)}}function vf(){const e=Ot(yf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function bf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ci(e){return Wo.test(e)||!e.startsWith("/")?e:bf(mt.value.base,e)}function _f(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),me){const n="/coding-standards/";t=li(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${li(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let An=[];function fu(e){An.push(e),qn(()=>{An=An.filter(t=>t!==e)})}function wf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ai(e,n);else if(Array.isArray(e))for(const s of e){const r=ai(s,n);if(r){t=r;break}}return t}function ai(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Ef=Symbol(),Yo="http://a.com",Tf=()=>({path:"/",component:null,data:Ko});function uu(e,t){const n=Vn(Tf()),s={route:n,go:r};async function r(l=me?location.href:"/"){var c,f;l=bs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(me&&l!==bs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var g,y;if(await((g=s.onBeforePageLoad)==null?void 0:g.call(s,l))===!1)return;const a=new URL(l,Yo),u=i=a.pathname;try{let w=await e(u);if(!w)throw new Error(`Page not found: ${u}`);if(i===u){i=null;const{default:b,__pageData:U}=w;if(!b)throw new Error(`Invalid route component: ${b}`);await((y=s.onAfterPageLoad)==null?void 0:y.call(s,l)),n.path=me?u:ci(u),n.component=Tn(b),n.data=Tn(U),me&&Wn(()=>{let F=mt.value.base+U.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!F.endsWith("/")&&(F+=".html"),F!==a.pathname&&(a.pathname=F,l=F+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let $=null;try{$=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if($){fi($,a.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!f)try{const b=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===u){i=null,n.path=me?u:ci(u),n.component=t?Tn(t):null;const b=me?u.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ko,relativePath:b}}}}return me&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:u,pathname:g,hash:y,search:w}=new URL(f,c.baseURI),b=new URL(location.href);u===b.origin&&mf(g)&&(l.preventDefault(),g===b.pathname&&w===b.search?(y!==b.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:b.href,newURL:a}))),y?fi(c,y,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(bs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function xf(){const e=Ot(Ef);if(!e)throw new Error("useRouter() is called without provider.");return e}function Xo(){return xf().route}function fi(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-wf()+i;requestAnimationFrame(r)}}function bs(e){const t=new URL(e,Yo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const bn=()=>An.forEach(e=>e()),du=er({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Xo(),{frontmatter:n,site:s}=vf();return Ne(n,bn,{deep:!0,flush:"post"}),()=>$s(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?$s(t.component,{onVnodeMounted:bn,onVnodeUpdated:bn,onVnodeUnmounted:bn}):"404 Page Not Found"])}}),hu=er({setup(e,{slots:t}){const n=le(!1);return Ht(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function pu(){me&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function gu(){if(me){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),Sf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function Sf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function mu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=_s(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(_s);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};ir(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=qo(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let u=document.querySelector("meta[name=description]");u?u.getAttribute("content")!==a&&u.setAttribute("content",a):_s(["meta",{name:"description",content:a}]),r(Go(o.head,Af(c)))})}function _s([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function Cf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Af(e){return e.filter(t=>!Cf(t))}const ws=new Set,Jo=()=>document.createElement("link"),Rf=e=>{const t=Jo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Of=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const Mf=me&&(_n=Jo())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?Rf:Of;function yu(){if(!me||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ws.has(c)){ws.add(c);const f=_f(c);f&&Mf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ws.add(l))})})};Ht(s);const r=Xo();Ne(()=>r.path,s),qn(()=>{n&&n.disconnect()})}export{Qi as $,wf as A,Ff as B,Hf as C,Qs as D,fu as E,Te as F,ce as G,Nf as H,Wo as I,Xo as J,Xc as K,Ot as L,lu as M,Ws as N,nu as O,Wn as P,ou as Q,me as R,Un as S,Kf as T,If as U,Qf as V,ru as W,Ec as X,$f as Y,Yf as Z,zf as _,Ao as a,Gf as a0,jf as a1,Tn as a2,Uf as a3,kf as a4,rt as a5,$s as a6,Q as a7,We as a8,Bo as a9,gu as aA,pu as aB,Zf as aa,lr as ab,tu as ac,iu as ad,su as ae,eu as af,xf as ag,Ft as ah,Pf as ai,qf as aj,fe as ak,Lf as al,Xf as am,yf as an,_f as ao,cu as ap,z as aq,mu as ar,Ef as as,au as at,du as au,hu as av,mt as aw,Jf as ax,uu as ay,yu as az,Ns as b,Vf as c,er as d,Wf as e,mf as f,ci as g,oe as h,af as i,Co as j,Hi as k,cf as l,ko as m,Ks as n,Fn as o,le as p,Ne as q,Df as r,ir as s,fl as t,vf as u,Ht as v,Gl as w,qn as x,Bf as y,cc as z}; diff --git a/assets/chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js b/assets/chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js new file mode 100644 index 00000000..1571f160 --- /dev/null +++ b/assets/chunks/ganttDiagram-NTVNEXSI.B9r2N2sv.js @@ -0,0 +1,257 @@ +import{aU as ir,aV as sr,aW as or,aX as cr,aY as Wr,aZ as ct,a_ as Or,_ as f,a$ as ae,d as Ye,s as Hr,g as Nr,q as Vr,r as Pr,c as zr,b as Rr,x as Br,m as Zr,l as tt,j as je,k as qr,e as Xr,v as Gr}from"../app.BCWCbnje.js";import{b as Qr,t as Vt,c as jr,a as Jr,l as $r}from"./linear.D-_N5yV4.js";import{i as Kr}from"./init.Gi6I4Gst.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";function en(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let a of e)(a=t(a,++n,e))!=null&&(r=a)&&(r=a)}return r}function tn(e,t){let r;if(t===void 0)for(const n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let a of e)(a=t(a,++n,e))!=null&&(r>a||r===void 0&&a>=a)&&(r=a)}return r}function rn(e){return e}var $e=1,lt=2,bt=3,Je=4,Pt=1e-6;function nn(e){return"translate("+e+",0)"}function an(e){return"translate(0,"+e+")"}function sn(e){return t=>+e(t)}function on(e,t){return t=Math.max(0,e.bandwidth()-t*2)/2,e.round()&&(t=Math.round(t)),r=>+e(r)+t}function cn(){return!this.__axis}function lr(e,t){var r=[],n=null,a=null,i=6,s=6,g=3,k=typeof window<"u"&&window.devicePixelRatio>1?0:.5,v=e===$e||e===Je?-1:1,y=e===Je||e===lt?"x":"y",S=e===$e||e===bt?nn:an;function C(p){var N=n??(t.ticks?t.ticks.apply(t,r):t.domain()),M=a??(t.tickFormat?t.tickFormat.apply(t,r):rn),B=Math.max(i,0)+g,Q=t.range(),K=+Q[0]+k,R=+Q[Q.length-1]+k,Z=(t.bandwidth?on:sn)(t.copy(),k),j=p.selection?p.selection():p,w=j.selectAll(".domain").data([null]),L=j.selectAll(".tick").data(N,t).order(),D=L.exit(),F=L.enter().append("g").attr("class","tick"),_=L.select("line"),Y=L.select("text");w=w.merge(w.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(F),_=_.merge(F.append("line").attr("stroke","currentColor").attr(y+"2",v*i)),Y=Y.merge(F.append("text").attr("fill","currentColor").attr(y,v*B).attr("dy",e===$e?"0em":e===bt?"0.71em":"0.32em")),p!==j&&(w=w.transition(p),L=L.transition(p),_=_.transition(p),Y=Y.transition(p),D=D.transition(p).attr("opacity",Pt).attr("transform",function(x){return isFinite(x=Z(x))?S(x+k):this.getAttribute("transform")}),F.attr("opacity",Pt).attr("transform",function(x){var A=this.parentNode.__axis;return S((A&&isFinite(A=A(x))?A:Z(x))+k)})),D.remove(),w.attr("d",e===Je||e===lt?s?"M"+v*s+","+K+"H"+k+"V"+R+"H"+v*s:"M"+k+","+K+"V"+R:s?"M"+K+","+v*s+"V"+k+"H"+R+"V"+v*s:"M"+K+","+k+"H"+R),L.attr("opacity",1).attr("transform",function(x){return S(Z(x)+k)}),_.attr(y+"2",v*i),Y.attr(y,v*B).text(M),j.filter(cn).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",e===lt?"start":e===Je?"end":"middle"),j.each(function(){this.__axis=Z})}return C.scale=function(p){return arguments.length?(t=p,C):t},C.ticks=function(){return r=Array.from(arguments),C},C.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),C):r.slice()},C.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),C):n&&n.slice()},C.tickFormat=function(p){return arguments.length?(a=p,C):a},C.tickSize=function(p){return arguments.length?(i=s=+p,C):i},C.tickSizeInner=function(p){return arguments.length?(i=+p,C):i},C.tickSizeOuter=function(p){return arguments.length?(s=+p,C):s},C.tickPadding=function(p){return arguments.length?(g=+p,C):g},C.offset=function(p){return arguments.length?(k=+p,C):k},C}function ln(e){return lr($e,e)}function un(e){return lr(bt,e)}const fn=Math.PI/180,hn=180/Math.PI,rt=18,ur=.96422,fr=1,hr=.82521,dr=4/29,Fe=6/29,mr=3*Fe*Fe,dn=Fe*Fe*Fe;function gr(e){if(e instanceof fe)return new fe(e.l,e.a,e.b,e.opacity);if(e instanceof ge)return yr(e);e instanceof or||(e=Wr(e));var t=dt(e.r),r=dt(e.g),n=dt(e.b),a=ut((.2225045*t+.7168786*r+.0606169*n)/fr),i,s;return t===r&&r===n?i=s=a:(i=ut((.4360747*t+.3850649*r+.1430804*n)/ur),s=ut((.0139322*t+.0971045*r+.7141733*n)/hr)),new fe(116*a-16,500*(i-a),200*(a-s),e.opacity)}function mn(e,t,r,n){return arguments.length===1?gr(e):new fe(e,t,r,n??1)}function fe(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}ir(fe,mn,sr(cr,{brighter(e){return new fe(this.l+rt*(e??1),this.a,this.b,this.opacity)},darker(e){return new fe(this.l-rt*(e??1),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=ur*ft(t),e=fr*ft(e),r=hr*ft(r),new or(ht(3.1338561*t-1.6168667*e-.4906146*r),ht(-.9787684*t+1.9161415*e+.033454*r),ht(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));function ut(e){return e>dn?Math.pow(e,1/3):e/mr+dr}function ft(e){return e>Fe?e*e*e:mr*(e-dr)}function ht(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function dt(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function gn(e){if(e instanceof ge)return new ge(e.h,e.c,e.l,e.opacity);if(e instanceof fe||(e=gr(e)),e.a===0&&e.b===0)return new ge(NaN,0(e(i=new Date(+i)),i),a.ceil=i=>(e(i=new Date(i-1)),t(i,1),e(i),i),a.round=i=>{const s=a(i),g=a.ceil(i);return i-s(t(i=new Date(+i),s==null?1:Math.floor(s)),i),a.range=(i,s,g)=>{const k=[];if(i=a.ceil(i),g=g==null?1:Math.floor(g),!(i0))return k;let v;do k.push(v=new Date(+i)),t(i,g),e(i);while(v$(s=>{if(s>=s)for(;e(s),!i(s);)s.setTime(s-1)},(s,g)=>{if(s>=s)if(g<0)for(;++g<=0;)for(;t(s,-1),!i(s););else for(;--g>=0;)for(;t(s,1),!i(s););}),r&&(a.count=(i,s)=>(mt.setTime(+i),gt.setTime(+s),e(mt),e(gt),Math.floor(r(mt,gt))),a.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?a.filter(n?s=>n(s)%i===0:s=>a.count(0,s)%i===0):a)),a}const Ee=$(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);Ee.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?$(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):Ee);Ee.range;const ye=1e3,se=ye*60,ke=se*60,ve=ke*24,St=ve*7,zt=ve*30,yt=ve*365,Te=$(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*ye)},(e,t)=>(t-e)/ye,e=>e.getUTCSeconds());Te.range;const Ve=$(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ye)},(e,t)=>{e.setTime(+e+t*se)},(e,t)=>(t-e)/se,e=>e.getMinutes());Ve.range;const pn=$(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*se)},(e,t)=>(t-e)/se,e=>e.getUTCMinutes());pn.range;const Pe=$(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*ye-e.getMinutes()*se)},(e,t)=>{e.setTime(+e+t*ke)},(e,t)=>(t-e)/ke,e=>e.getHours());Pe.range;const Tn=$(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*ke)},(e,t)=>(t-e)/ke,e=>e.getUTCHours());Tn.range;const xe=$(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*se)/ve,e=>e.getDate()-1);xe.range;const _t=$(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/ve,e=>e.getUTCDate()-1);_t.range;const bn=$(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/ve,e=>Math.floor(e/ve));bn.range;function Ce(e){return $(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*se)/St)}const Be=Ce(0),ze=Ce(1),kr=Ce(2),vr=Ce(3),we=Ce(4),pr=Ce(5),Tr=Ce(6);Be.range;ze.range;kr.range;vr.range;we.range;pr.range;Tr.range;function Me(e){return $(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/St)}const br=Me(0),nt=Me(1),xn=Me(2),wn=Me(3),Ie=Me(4),Dn=Me(5),Cn=Me(6);br.range;nt.range;xn.range;wn.range;Ie.range;Dn.range;Cn.range;const Re=$(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());Re.range;const Mn=$(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Mn.range;const pe=$(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());pe.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:$(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});pe.range;const De=$(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());De.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:$(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});De.range;function Sn(e,t,r,n,a,i){const s=[[Te,1,ye],[Te,5,5*ye],[Te,15,15*ye],[Te,30,30*ye],[i,1,se],[i,5,5*se],[i,15,15*se],[i,30,30*se],[a,1,ke],[a,3,3*ke],[a,6,6*ke],[a,12,12*ke],[n,1,ve],[n,2,2*ve],[r,1,St],[t,1,zt],[t,3,3*zt],[e,1,yt]];function g(v,y,S){const C=yB).right(s,C);if(p===s.length)return e.every(Vt(v/yt,y/yt,S));if(p===0)return Ee.every(Math.max(Vt(v,y,S),1));const[N,M]=s[C/s[p-1][2]53)return null;"w"in l||(l.w=1),"Z"in l?(U=vt(Le(l.y,0,1)),G=U.getUTCDay(),U=G>4||G===0?nt.ceil(U):nt(U),U=_t.offset(U,(l.V-1)*7),l.y=U.getUTCFullYear(),l.m=U.getUTCMonth(),l.d=U.getUTCDate()+(l.w+6)%7):(U=kt(Le(l.y,0,1)),G=U.getDay(),U=G>4||G===0?ze.ceil(U):ze(U),U=xe.offset(U,(l.V-1)*7),l.y=U.getFullYear(),l.m=U.getMonth(),l.d=U.getDate()+(l.w+6)%7)}else("W"in l||"U"in l)&&("w"in l||(l.w="u"in l?l.u%7:"W"in l?1:0),G="Z"in l?vt(Le(l.y,0,1)).getUTCDay():kt(Le(l.y,0,1)).getDay(),l.m=0,l.d="W"in l?(l.w+6)%7+l.W*7-(G+5)%7:l.w+l.U*7-(G+6)%7);return"Z"in l?(l.H+=l.Z/100|0,l.M+=l.Z%100,vt(l)):kt(l)}}function D(T,I,W,l){for(var re=0,U=I.length,G=W.length,z,ce;re=G)return-1;if(z=I.charCodeAt(re++),z===37){if(z=I.charAt(re++),ce=j[z in Rt?I.charAt(re++):z],!ce||(l=ce(T,W,l))<0)return-1}else if(z!=W.charCodeAt(l++))return-1}return l}function F(T,I,W){var l=v.exec(I.slice(W));return l?(T.p=y.get(l[0].toLowerCase()),W+l[0].length):-1}function _(T,I,W){var l=p.exec(I.slice(W));return l?(T.w=N.get(l[0].toLowerCase()),W+l[0].length):-1}function Y(T,I,W){var l=S.exec(I.slice(W));return l?(T.w=C.get(l[0].toLowerCase()),W+l[0].length):-1}function x(T,I,W){var l=Q.exec(I.slice(W));return l?(T.m=K.get(l[0].toLowerCase()),W+l[0].length):-1}function A(T,I,W){var l=M.exec(I.slice(W));return l?(T.m=B.get(l[0].toLowerCase()),W+l[0].length):-1}function u(T,I,W){return D(T,t,I,W)}function d(T,I,W){return D(T,r,I,W)}function b(T,I,W){return D(T,n,I,W)}function m(T){return s[T.getDay()]}function E(T){return i[T.getDay()]}function c(T){return k[T.getMonth()]}function h(T){return g[T.getMonth()]}function o(T){return a[+(T.getHours()>=12)]}function P(T){return 1+~~(T.getMonth()/3)}function O(T){return s[T.getUTCDay()]}function V(T){return i[T.getUTCDay()]}function ee(T){return k[T.getUTCMonth()]}function q(T){return g[T.getUTCMonth()]}function X(T){return a[+(T.getUTCHours()>=12)]}function oe(T){return 1+~~(T.getUTCMonth()/3)}return{format:function(T){var I=w(T+="",R);return I.toString=function(){return T},I},parse:function(T){var I=L(T+="",!1);return I.toString=function(){return T},I},utcFormat:function(T){var I=w(T+="",Z);return I.toString=function(){return T},I},utcParse:function(T){var I=L(T+="",!0);return I.toString=function(){return T},I}}}var Rt={"-":"",_:" ",0:"0"},te=/^\s*\d+/,Un=/^%/,En=/[\\^$*+?|[\]().{}]/g;function H(e,t,r){var n=e<0?"-":"",a=(n?-e:e)+"",i=a.length;return n+(i[t.toLowerCase(),r]))}function An(e,t,r){var n=te.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Ln(e,t,r){var n=te.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Wn(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function On(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Hn(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function Bt(e,t,r){var n=te.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function Zt(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Nn(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Vn(e,t,r){var n=te.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Pn(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function qt(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function zn(e,t,r){var n=te.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function Xt(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Rn(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Bn(e,t,r){var n=te.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Zn(e,t,r){var n=te.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function qn(e,t,r){var n=te.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Xn(e,t,r){var n=Un.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Gn(e,t,r){var n=te.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Qn(e,t,r){var n=te.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function Gt(e,t){return H(e.getDate(),t,2)}function jn(e,t){return H(e.getHours(),t,2)}function Jn(e,t){return H(e.getHours()%12||12,t,2)}function $n(e,t){return H(1+xe.count(pe(e),e),t,3)}function xr(e,t){return H(e.getMilliseconds(),t,3)}function Kn(e,t){return xr(e,t)+"000"}function ea(e,t){return H(e.getMonth()+1,t,2)}function ta(e,t){return H(e.getMinutes(),t,2)}function ra(e,t){return H(e.getSeconds(),t,2)}function na(e){var t=e.getDay();return t===0?7:t}function aa(e,t){return H(Be.count(pe(e)-1,e),t,2)}function wr(e){var t=e.getDay();return t>=4||t===0?we(e):we.ceil(e)}function ia(e,t){return e=wr(e),H(we.count(pe(e),e)+(pe(e).getDay()===4),t,2)}function sa(e){return e.getDay()}function oa(e,t){return H(ze.count(pe(e)-1,e),t,2)}function ca(e,t){return H(e.getFullYear()%100,t,2)}function la(e,t){return e=wr(e),H(e.getFullYear()%100,t,2)}function ua(e,t){return H(e.getFullYear()%1e4,t,4)}function fa(e,t){var r=e.getDay();return e=r>=4||r===0?we(e):we.ceil(e),H(e.getFullYear()%1e4,t,4)}function ha(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+H(t/60|0,"0",2)+H(t%60,"0",2)}function Qt(e,t){return H(e.getUTCDate(),t,2)}function da(e,t){return H(e.getUTCHours(),t,2)}function ma(e,t){return H(e.getUTCHours()%12||12,t,2)}function ga(e,t){return H(1+_t.count(De(e),e),t,3)}function Dr(e,t){return H(e.getUTCMilliseconds(),t,3)}function ya(e,t){return Dr(e,t)+"000"}function ka(e,t){return H(e.getUTCMonth()+1,t,2)}function va(e,t){return H(e.getUTCMinutes(),t,2)}function pa(e,t){return H(e.getUTCSeconds(),t,2)}function Ta(e){var t=e.getUTCDay();return t===0?7:t}function ba(e,t){return H(br.count(De(e)-1,e),t,2)}function Cr(e){var t=e.getUTCDay();return t>=4||t===0?Ie(e):Ie.ceil(e)}function xa(e,t){return e=Cr(e),H(Ie.count(De(e),e)+(De(e).getUTCDay()===4),t,2)}function wa(e){return e.getUTCDay()}function Da(e,t){return H(nt.count(De(e)-1,e),t,2)}function Ca(e,t){return H(e.getUTCFullYear()%100,t,2)}function Ma(e,t){return e=Cr(e),H(e.getUTCFullYear()%100,t,2)}function Sa(e,t){return H(e.getUTCFullYear()%1e4,t,4)}function _a(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Ie(e):Ie.ceil(e),H(e.getUTCFullYear()%1e4,t,4)}function Ya(){return"+0000"}function jt(){return"%"}function Jt(e){return+e}function $t(e){return Math.floor(+e/1e3)}var _e,at;Fa({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"]});function Fa(e){return _e=Fn(e),at=_e.format,_e.parse,_e.utcFormat,_e.utcParse,_e}function Ua(e){return new Date(e)}function Ea(e){return e instanceof Date?+e:+new Date(+e)}function Mr(e,t,r,n,a,i,s,g,k,v){var y=jr(),S=y.invert,C=y.domain,p=v(".%L"),N=v(":%S"),M=v("%I:%M"),B=v("%I %p"),Q=v("%a %d"),K=v("%b %d"),R=v("%B"),Z=v("%Y");function j(w){return(k(w)4&&(S+=7),y.add(S,pt)},a=function(k){return k.add(4-k.isoWeekday(),pt)},i=t.prototype;i.isoWeekYear=function(){var g=a(this);return g.year()},i.isoWeek=function(g){if(!this.$utils().u(g))return this.add((g-this.isoWeek())*7,pt);var k=a(this),v=n(this.isoWeekYear(),this.$u);return k.diff(v,Aa)+1},i.isoWeekday=function(g){return this.$utils().u(g)?this.day()||7:this.day(this.day()%7?g:g-7)};var s=i.startOf;i.startOf=function(g,k){var v=this.$utils(),y=v.u(k)?!0:k,S=v.p(g);return S===Oa?y?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(g,k)}};var Na=function(t){return t.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(r,n,a){return n||a.slice(1)})},Va={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"},Pa=function(t,r){return t.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(n,a,i){var s=i&&i.toUpperCase();return a||r[i]||Va[i]||Na(r[s])})},za=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,Kt=/\d/,He=/\d\d/,Ra=/\d{3}/,Ba=/\d{4}/,le=/\d\d?/,Za=/[+-]?\d+/,qa=/[+-]\d\d:?(\d\d)?|Z/,Ne=/\d*[^-_:/,()\s\d]+/,be={},Sr=function(t){return t=+t,t+(t>68?1900:2e3)};function Xa(e){if(!e||e==="Z")return 0;var t=e.match(/([+-]|\d\d)/g),r=+(t[1]*60)+(+t[2]||0);return r===0?0:t[0]==="+"?-r:r}var ne=function(t){return function(r){this[t]=+r}},er=[qa,function(e){var t=this.zone||(this.zone={});t.offset=Xa(e)}],Tt=function(t){var r=be[t];return r&&(r.indexOf?r:r.s.concat(r.f))},tr=function(t,r){var n,a=be,i=a.meridiem;if(!i)n=t===(r?"pm":"PM");else for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,r))>-1){n=s>12;break}return n},Ga={A:[Ne,function(e){this.afternoon=tr(e,!1)}],a:[Ne,function(e){this.afternoon=tr(e,!0)}],Q:[Kt,function(e){this.month=(e-1)*3+1}],S:[Kt,function(e){this.milliseconds=+e*100}],SS:[He,function(e){this.milliseconds=+e*10}],SSS:[Ra,function(e){this.milliseconds=+e}],s:[le,ne("seconds")],ss:[le,ne("seconds")],m:[le,ne("minutes")],mm:[le,ne("minutes")],H:[le,ne("hours")],h:[le,ne("hours")],HH:[le,ne("hours")],hh:[le,ne("hours")],D:[le,ne("day")],DD:[He,ne("day")],Do:[Ne,function(e){var t=be,r=t.ordinal,n=e.match(/\d+/);if(this.day=n[0],!!r)for(var a=1;a<=31;a+=1)r(a).replace(/\[|\]/g,"")===e&&(this.day=a)}],w:[le,ne("week")],ww:[He,ne("week")],M:[le,ne("month")],MM:[He,ne("month")],MMM:[Ne,function(e){var t=Tt("months"),r=Tt("monthsShort"),n=(r||t.map(function(a){return a.slice(0,3)})).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[Ne,function(e){var t=Tt("months"),r=t.indexOf(e)+1;if(r<1)throw new Error;this.month=r%12||r}],Y:[Za,ne("year")],YY:[He,function(e){this.year=Sr(e)}],YYYY:[Ba,ne("year")],Z:er,ZZ:er};function Qa(e){var t=e.afternoon;if(t!==void 0){var r=e.hours;t?r<12&&(e.hours+=12):r===12&&(e.hours=0),delete e.afternoon}}function ja(e){e=Pa(e,be&&be.formats);for(var t=e.match(za),r=t.length,n=0;n-1)return new Date((r==="X"?1e3:1)*t);var i=ja(r),s=i(t),g=s.year,k=s.month,v=s.day,y=s.hours,S=s.minutes,C=s.seconds,p=s.milliseconds,N=s.zone,M=s.week,B=new Date,Q=v||(!g&&!k?B.getDate():1),K=g||B.getFullYear(),R=0;g&&!k||(R=k>0?k-1:B.getMonth());var Z=y||0,j=S||0,w=C||0,L=p||0;if(N)return new Date(Date.UTC(K,R,Q,Z,j,w,L+N.offset*60*1e3));if(n)return new Date(Date.UTC(K,R,Q,Z,j,w,L));var D;return D=new Date(K,R,Q,Z,j,w,L),M&&(D=a(D).week(M).toDate()),D}catch{return new Date("")}};const $a=function(e,t,r){r.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(Sr=e.parseTwoDigitYear);var n=t.prototype,a=n.parse;n.parse=function(i){var s=i.date,g=i.utc,k=i.args;this.$u=g;var v=k[1];if(typeof v=="string"){var y=k[2]===!0,S=k[3]===!0,C=y||S,p=k[2];S&&(p=k[2]),be=this.$locale(),!y&&p&&(be=r.Ls[p]),this.$d=Ja(s,v,g,r),this.init(),p&&p!==!0&&(this.$L=this.locale(p).$L),C&&s!=this.format(v)&&(this.$d=new Date("")),be={}}else if(v instanceof Array)for(var N=v.length,M=1;M<=N;M+=1){k[1]=v[M-1];var B=r.apply(this,k);if(B.isValid()){this.$d=B.$d,this.$L=B.$L,this.init();break}M===N&&(this.$d=new Date(""))}else a.call(this,i)}},Ka=function(e,t){var r=t.prototype,n=r.format;r.format=function(a){var i=this,s=this.$locale();if(!this.isValid())return n.bind(this)(a);var g=this.$utils(),k=a||Wa,v=k.replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(y){switch(y){case"Q":return Math.ceil((i.$M+1)/3);case"Do":return s.ordinal(i.$D);case"gggg":return i.weekYear();case"GGGG":return i.isoWeekYear();case"wo":return s.ordinal(i.week(),"W");case"w":case"ww":return g.s(i.week(),y==="w"?1:2,"0");case"W":case"WW":return g.s(i.isoWeek(),y==="W"?1:2,"0");case"k":case"kk":return g.s(String(i.$H===0?24:i.$H),y==="k"?1:2,"0");case"X":return Math.floor(i.$d.getTime()/1e3);case"x":return i.$d.getTime();case"z":return"["+i.offsetName()+"]";case"zzz":return"["+i.offsetName("long")+"]";default:return y}});return n.bind(this)(v)}};var wt=function(){var e=f(function(A,u,d,b){for(d=d||{},b=A.length;b--;d[A[b]]=u);return d},"o"),t=[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],r=[1,26],n=[1,27],a=[1,28],i=[1,29],s=[1,30],g=[1,31],k=[1,32],v=[1,33],y=[1,34],S=[1,9],C=[1,10],p=[1,11],N=[1,12],M=[1,13],B=[1,14],Q=[1,15],K=[1,16],R=[1,19],Z=[1,20],j=[1,21],w=[1,22],L=[1,23],D=[1,25],F=[1,35],_={trace:f(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:f(function(u,d,b,m,E,c,h){var o=c.length-1;switch(E){case 1:return c[o-1];case 2:this.$=[];break;case 3:c[o-1].push(c[o]),this.$=c[o-1];break;case 4:case 5:this.$=c[o];break;case 6:case 7:this.$=[];break;case 8:m.setWeekday("monday");break;case 9:m.setWeekday("tuesday");break;case 10:m.setWeekday("wednesday");break;case 11:m.setWeekday("thursday");break;case 12:m.setWeekday("friday");break;case 13:m.setWeekday("saturday");break;case 14:m.setWeekday("sunday");break;case 15:m.setWeekend("friday");break;case 16:m.setWeekend("saturday");break;case 17:m.setDateFormat(c[o].substr(11)),this.$=c[o].substr(11);break;case 18:m.enableInclusiveEndDates(),this.$=c[o].substr(18);break;case 19:m.TopAxis(),this.$=c[o].substr(8);break;case 20:m.setAxisFormat(c[o].substr(11)),this.$=c[o].substr(11);break;case 21:m.setTickInterval(c[o].substr(13)),this.$=c[o].substr(13);break;case 22:m.setExcludes(c[o].substr(9)),this.$=c[o].substr(9);break;case 23:m.setIncludes(c[o].substr(9)),this.$=c[o].substr(9);break;case 24:m.setTodayMarker(c[o].substr(12)),this.$=c[o].substr(12);break;case 27:m.setDiagramTitle(c[o].substr(6)),this.$=c[o].substr(6);break;case 28:this.$=c[o].trim(),m.setAccTitle(this.$);break;case 29:case 30:this.$=c[o].trim(),m.setAccDescription(this.$);break;case 31:m.addSection(c[o].substr(8)),this.$=c[o].substr(8);break;case 33:m.addTask(c[o-1],c[o]),this.$="task";break;case 34:this.$=c[o-1],m.setClickEvent(c[o-1],c[o],null);break;case 35:this.$=c[o-2],m.setClickEvent(c[o-2],c[o-1],c[o]);break;case 36:this.$=c[o-2],m.setClickEvent(c[o-2],c[o-1],null),m.setLink(c[o-2],c[o]);break;case 37:this.$=c[o-3],m.setClickEvent(c[o-3],c[o-2],c[o-1]),m.setLink(c[o-3],c[o]);break;case 38:this.$=c[o-2],m.setClickEvent(c[o-2],c[o],null),m.setLink(c[o-2],c[o-1]);break;case 39:this.$=c[o-3],m.setClickEvent(c[o-3],c[o-1],c[o]),m.setLink(c[o-3],c[o-2]);break;case 40:this.$=c[o-1],m.setLink(c[o-1],c[o]);break;case 41:case 47:this.$=c[o-1]+" "+c[o];break;case 42:case 43:case 45:this.$=c[o-2]+" "+c[o-1]+" "+c[o];break;case 44:case 46:this.$=c[o-3]+" "+c[o-2]+" "+c[o-1]+" "+c[o];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},e(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:a,15:i,16:s,17:g,18:k,19:18,20:v,21:y,22:S,23:C,24:p,25:N,26:M,27:B,28:Q,29:K,30:R,31:Z,33:j,35:w,36:L,37:24,38:D,40:F},e(t,[2,7],{1:[2,1]}),e(t,[2,3]),{9:36,11:17,12:r,13:n,14:a,15:i,16:s,17:g,18:k,19:18,20:v,21:y,22:S,23:C,24:p,25:N,26:M,27:B,28:Q,29:K,30:R,31:Z,33:j,35:w,36:L,37:24,38:D,40:F},e(t,[2,5]),e(t,[2,6]),e(t,[2,17]),e(t,[2,18]),e(t,[2,19]),e(t,[2,20]),e(t,[2,21]),e(t,[2,22]),e(t,[2,23]),e(t,[2,24]),e(t,[2,25]),e(t,[2,26]),e(t,[2,27]),{32:[1,37]},{34:[1,38]},e(t,[2,30]),e(t,[2,31]),e(t,[2,32]),{39:[1,39]},e(t,[2,8]),e(t,[2,9]),e(t,[2,10]),e(t,[2,11]),e(t,[2,12]),e(t,[2,13]),e(t,[2,14]),e(t,[2,15]),e(t,[2,16]),{41:[1,40],43:[1,41]},e(t,[2,4]),e(t,[2,28]),e(t,[2,29]),e(t,[2,33]),e(t,[2,34],{42:[1,42],43:[1,43]}),e(t,[2,40],{41:[1,44]}),e(t,[2,35],{43:[1,45]}),e(t,[2,36]),e(t,[2,38],{42:[1,46]}),e(t,[2,37]),e(t,[2,39])],defaultActions:{},parseError:f(function(u,d){if(d.recoverable)this.trace(u);else{var b=new Error(u);throw b.hash=d,b}},"parseError"),parse:f(function(u){var d=this,b=[0],m=[],E=[null],c=[],h=this.table,o="",P=0,O=0,V=2,ee=1,q=c.slice.call(arguments,1),X=Object.create(this.lexer),oe={yy:{}};for(var T in this.yy)Object.prototype.hasOwnProperty.call(this.yy,T)&&(oe.yy[T]=this.yy[T]);X.setInput(u,oe.yy),oe.yy.lexer=X,oe.yy.parser=this,typeof X.yylloc>"u"&&(X.yylloc={});var I=X.yylloc;c.push(I);var W=X.options&&X.options.ranges;typeof oe.yy.parseError=="function"?this.parseError=oe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function l(ie){b.length=b.length-2*ie,E.length=E.length-ie,c.length=c.length-ie}f(l,"popStack");function re(){var ie;return ie=m.pop()||X.lex()||ee,typeof ie!="number"&&(ie instanceof Array&&(m=ie,ie=m.pop()),ie=d.symbols_[ie]||ie),ie}f(re,"lex");for(var U,G,z,ce,he={},Ge,de,Nt,Qe;;){if(G=b[b.length-1],this.defaultActions[G]?z=this.defaultActions[G]:((U===null||typeof U>"u")&&(U=re()),z=h[G]&&h[G][U]),typeof z>"u"||!z.length||!z[0]){var ot="";Qe=[];for(Ge in h[G])this.terminals_[Ge]&&Ge>V&&Qe.push("'"+this.terminals_[Ge]+"'");X.showPosition?ot="Parse error on line "+(P+1)+`: +`+X.showPosition()+` +Expecting `+Qe.join(", ")+", got '"+(this.terminals_[U]||U)+"'":ot="Parse error on line "+(P+1)+": Unexpected "+(U==ee?"end of input":"'"+(this.terminals_[U]||U)+"'"),this.parseError(ot,{text:X.match,token:this.terminals_[U]||U,line:X.yylineno,loc:I,expected:Qe})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+G+", token: "+U);switch(z[0]){case 1:b.push(U),E.push(X.yytext),c.push(X.yylloc),b.push(z[1]),U=null,O=X.yyleng,o=X.yytext,P=X.yylineno,I=X.yylloc;break;case 2:if(de=this.productions_[z[1]][1],he.$=E[E.length-de],he._$={first_line:c[c.length-(de||1)].first_line,last_line:c[c.length-1].last_line,first_column:c[c.length-(de||1)].first_column,last_column:c[c.length-1].last_column},W&&(he._$.range=[c[c.length-(de||1)].range[0],c[c.length-1].range[1]]),ce=this.performAction.apply(he,[o,O,P,oe.yy,z[1],E,c].concat(q)),typeof ce<"u")return ce;de&&(b=b.slice(0,-1*de*2),E=E.slice(0,-1*de),c=c.slice(0,-1*de)),b.push(this.productions_[z[1]][0]),E.push(he.$),c.push(he._$),Nt=h[b[b.length-2]][b[b.length-1]],b.push(Nt);break;case 3:return!0}}return!0},"parse")},Y=function(){var A={EOF:1,parseError:f(function(d,b){if(this.yy.parser)this.yy.parser.parseError(d,b);else throw new Error(d)},"parseError"),setInput:f(function(u,d){return this.yy=d||this.yy||{},this._input=u,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:f(function(){var u=this._input[0];this.yytext+=u,this.yyleng++,this.offset++,this.match+=u,this.matched+=u;var d=u.match(/(?:\r\n?|\n).*/g);return d?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),u},"input"),unput:f(function(u){var d=u.length,b=u.split(/(?:\r\n?|\n)/g);this._input=u+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-d),this.offset-=d;var m=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),b.length-1&&(this.yylineno-=b.length-1);var E=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:b?(b.length===m.length?this.yylloc.first_column:0)+m[m.length-b.length].length-b[0].length:this.yylloc.first_column-d},this.options.ranges&&(this.yylloc.range=[E[0],E[0]+this.yyleng-d]),this.yyleng=this.yytext.length,this},"unput"),more:f(function(){return this._more=!0,this},"more"),reject:f(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:f(function(u){this.unput(this.match.slice(u))},"less"),pastInput:f(function(){var u=this.matched.substr(0,this.matched.length-this.match.length);return(u.length>20?"...":"")+u.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:f(function(){var u=this.match;return u.length<20&&(u+=this._input.substr(0,20-u.length)),(u.substr(0,20)+(u.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:f(function(){var u=this.pastInput(),d=new Array(u.length+1).join("-");return u+this.upcomingInput()+` +`+d+"^"},"showPosition"),test_match:f(function(u,d){var b,m,E;if(this.options.backtrack_lexer&&(E={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&&(E.yylloc.range=this.yylloc.range.slice(0))),m=u[0].match(/(?:\r\n?|\n).*/g),m&&(this.yylineno+=m.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:m?m[m.length-1].length-m[m.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,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(u[0].length),this.matched+=u[0],b=this.performAction.call(this,this.yy,this,d,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),b)return b;if(this._backtrack){for(var c in E)this[c]=E[c];return!1}return!1},"test_match"),next:f(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var u,d,b,m;this._more||(this.yytext="",this.match="");for(var E=this._currentRules(),c=0;cd[0].length)){if(d=b,m=c,this.options.backtrack_lexer){if(u=this.test_match(b,E[c]),u!==!1)return u;if(this._backtrack){d=!1;continue}else return!1}else if(!this.options.flex)break}return d?(u=this.test_match(d,E[m]),u!==!1?u:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:f(function(){var d=this.next();return d||this.lex()},"lex"),begin:f(function(d){this.conditionStack.push(d)},"begin"),popState:f(function(){var d=this.conditionStack.length-1;return d>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:f(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:f(function(d){return d=this.conditionStack.length-1-Math.abs(d||0),d>=0?this.conditionStack[d]:"INITIAL"},"topState"),pushState:f(function(d){this.begin(d)},"pushState"),stateStackSize:f(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:f(function(d,b,m,E){switch(m){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:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();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}}};return A}();_.lexer=Y;function x(){this.yy={}}return f(x,"Parser"),x.prototype=_,_.Parser=x,new x}();wt.parser=wt;var ei=wt;ae.extend(Ha);ae.extend($a);ae.extend(Ka);var rr={friday:5,saturday:6},ue="",Yt="",Ft=void 0,Ut="",Ze=[],qe=[],Et=new Map,It=[],it=[],Ae="",At="",_r=["active","done","crit","milestone"],Lt=[],Xe=!1,Wt=!1,Ot="sunday",st="saturday",Dt=0,ti=f(function(){It=[],it=[],Ae="",Lt=[],Ke=0,Mt=void 0,et=void 0,J=[],ue="",Yt="",At="",Ft=void 0,Ut="",Ze=[],qe=[],Xe=!1,Wt=!1,Dt=0,Et=new Map,Br(),Ot="sunday",st="saturday"},"clear"),ri=f(function(e){Yt=e},"setAxisFormat"),ni=f(function(){return Yt},"getAxisFormat"),ai=f(function(e){Ft=e},"setTickInterval"),ii=f(function(){return Ft},"getTickInterval"),si=f(function(e){Ut=e},"setTodayMarker"),oi=f(function(){return Ut},"getTodayMarker"),ci=f(function(e){ue=e},"setDateFormat"),li=f(function(){Xe=!0},"enableInclusiveEndDates"),ui=f(function(){return Xe},"endDatesAreInclusive"),fi=f(function(){Wt=!0},"enableTopAxis"),hi=f(function(){return Wt},"topAxisEnabled"),di=f(function(e){At=e},"setDisplayMode"),mi=f(function(){return At},"getDisplayMode"),gi=f(function(){return ue},"getDateFormat"),yi=f(function(e){Ze=e.toLowerCase().split(/[\s,]+/)},"setIncludes"),ki=f(function(){return Ze},"getIncludes"),vi=f(function(e){qe=e.toLowerCase().split(/[\s,]+/)},"setExcludes"),pi=f(function(){return qe},"getExcludes"),Ti=f(function(){return Et},"getLinks"),bi=f(function(e){Ae=e,It.push(e)},"addSection"),xi=f(function(){return It},"getSections"),wi=f(function(){let e=nr();const t=10;let r=0;for(;!e&&r[\d\w- ]+)/.exec(r);if(a!==null){let s=null;for(const k of a.groups.ids.split(" ")){let v=Se(k);v!==void 0&&(!s||v.endTime>s.endTime)&&(s=v)}if(s)return s.endTime;const g=new Date;return g.setHours(0,0,0,0),g}let i=ae(r,t.trim(),!0);if(i.isValid())return i.toDate();{tt.debug("Invalid date:"+r),tt.debug("With date format:"+t.trim());const s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),Ur=f(function(e){const t=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(e.trim());return t!==null?[Number.parseFloat(t[1]),t[2]]:[NaN,"ms"]},"parseDuration"),Er=f(function(e,t,r,n=!1){r=r.trim();const i=/^until\s+(?[\d\w- ]+)/.exec(r);if(i!==null){let y=null;for(const C of i.groups.ids.split(" ")){let p=Se(C);p!==void 0&&(!y||p.startTime{window.open(r,"_self")}),Et.set(n,r))}),Ar(e,"clickable")},"setLink"),Ar=f(function(e,t){e.split(",").forEach(function(r){let n=Se(r);n!==void 0&&n.classes.push(t)})},"setClass"),Ii=f(function(e,t,r){if(Ye().securityLevel!=="loose"||t===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let i=0;i{Gr.runFunc(t,...n)})},"setClickFun"),Lr=f(function(e,t){Lt.push(function(){const r=document.querySelector(`[id="${e}"]`);r!==null&&r.addEventListener("click",function(){t()})},function(){const r=document.querySelector(`[id="${e}-text"]`);r!==null&&r.addEventListener("click",function(){t()})})},"pushFun"),Ai=f(function(e,t,r){e.split(",").forEach(function(n){Ii(n,t,r)}),Ar(e,"clickable")},"setClickEvent"),Li=f(function(e){Lt.forEach(function(t){t(e)})},"bindFunctions"),Wi={getConfig:f(()=>Ye().gantt,"getConfig"),clear:ti,setDateFormat:ci,getDateFormat:gi,enableInclusiveEndDates:li,endDatesAreInclusive:ui,enableTopAxis:fi,topAxisEnabled:hi,setAxisFormat:ri,getAxisFormat:ni,setTickInterval:ai,getTickInterval:ii,setTodayMarker:si,getTodayMarker:oi,setAccTitle:Hr,getAccTitle:Nr,setDiagramTitle:Vr,getDiagramTitle:Pr,setDisplayMode:di,getDisplayMode:mi,setAccDescription:zr,getAccDescription:Rr,addSection:bi,getSections:xi,getTasks:wi,addTask:Fi,findTaskById:Se,addTaskOrg:Ui,setIncludes:yi,getIncludes:ki,setExcludes:vi,getExcludes:pi,setClickEvent:Ai,setLink:Ei,getLinks:Ti,bindFunctions:Li,parseDuration:Ur,isInvalidDate:Yr,setWeekday:Di,getWeekday:Ci,setWeekend:Mi};function Ht(e,t,r){let n=!0;for(;n;)n=!1,r.forEach(function(a){const i="^\\s*"+a+"\\s*$",s=new RegExp(i);e[0].match(s)&&(t[a]=!0,e.shift(1),n=!0)})}f(Ht,"getTaskTags");var Oi=f(function(){tt.debug("Something is calling, setConf, remove the call")},"setConf"),ar={monday:ze,tuesday:kr,wednesday:vr,thursday:we,friday:pr,saturday:Tr,sunday:Be},Hi=f((e,t)=>{let r=[...e].map(()=>-1/0),n=[...e].sort((i,s)=>i.startTime-s.startTime||i.order-s.order),a=0;for(const i of n)for(let s=0;s=r[s]){r[s]=i.endTime,i.order=s+t,s>a&&(a=s);break}return a},"getMaxIntersections"),me,Ni=f(function(e,t,r,n){const a=Ye().gantt,i=Ye().securityLevel;let s;i==="sandbox"&&(s=je("#i"+t));const g=i==="sandbox"?je(s.nodes()[0].contentDocument.body):je("body"),k=i==="sandbox"?s.nodes()[0].contentDocument:document,v=k.getElementById(t);me=v.parentElement.offsetWidth,me===void 0&&(me=1200),a.useWidth!==void 0&&(me=a.useWidth);const y=n.db.getTasks();let S=[];for(const D of y)S.push(D.type);S=L(S);const C={};let p=2*a.topPadding;if(n.db.getDisplayMode()==="compact"||a.displayMode==="compact"){const D={};for(const _ of y)D[_.section]===void 0?D[_.section]=[_]:D[_.section].push(_);let F=0;for(const _ of Object.keys(D)){const Y=Hi(D[_],F)+1;F+=Y,p+=Y*(a.barHeight+a.barGap),C[_]=Y}}else{p+=y.length*(a.barHeight+a.barGap);for(const D of S)C[D]=y.filter(F=>F.type===D).length}v.setAttribute("viewBox","0 0 "+me+" "+p);const N=g.select(`[id="${t}"]`),M=Ia().domain([tn(y,function(D){return D.startTime}),en(y,function(D){return D.endTime})]).rangeRound([0,me-a.leftPadding-a.rightPadding]);function B(D,F){const _=D.startTime,Y=F.startTime;let x=0;return _>Y?x=1:_h.order))].map(h=>D.find(o=>o.order===h));N.append("g").selectAll("rect").data(b).enter().append("rect").attr("x",0).attr("y",function(h,o){return o=h.order,o*F+_-2}).attr("width",function(){return u-a.rightPadding/2}).attr("height",F).attr("class",function(h){for(const[o,P]of S.entries())if(h.type===P)return"section section"+o%a.numberSectionStyles;return"section section0"});const m=N.append("g").selectAll("rect").data(D).enter(),E=n.db.getLinks();if(m.append("rect").attr("id",function(h){return h.id}).attr("rx",3).attr("ry",3).attr("x",function(h){return h.milestone?M(h.startTime)+Y+.5*(M(h.endTime)-M(h.startTime))-.5*x:M(h.startTime)+Y}).attr("y",function(h,o){return o=h.order,o*F+_}).attr("width",function(h){return h.milestone?x:M(h.renderEndTime||h.endTime)-M(h.startTime)}).attr("height",x).attr("transform-origin",function(h,o){return o=h.order,(M(h.startTime)+Y+.5*(M(h.endTime)-M(h.startTime))).toString()+"px "+(o*F+_+.5*x).toString()+"px"}).attr("class",function(h){const o="task";let P="";h.classes.length>0&&(P=h.classes.join(" "));let O=0;for(const[ee,q]of S.entries())h.type===q&&(O=ee%a.numberSectionStyles);let V="";return h.active?h.crit?V+=" activeCrit":V=" active":h.done?h.crit?V=" doneCrit":V=" done":h.crit&&(V+=" crit"),V.length===0&&(V=" task"),h.milestone&&(V=" milestone "+V),V+=O,V+=" "+P,o+V}),m.append("text").attr("id",function(h){return h.id+"-text"}).text(function(h){return h.task}).attr("font-size",a.fontSize).attr("x",function(h){let o=M(h.startTime),P=M(h.renderEndTime||h.endTime);h.milestone&&(o+=.5*(M(h.endTime)-M(h.startTime))-.5*x),h.milestone&&(P=o+x);const O=this.getBBox().width;return O>P-o?P+O+1.5*a.leftPadding>u?o+Y-5:P+Y+5:(P-o)/2+o+Y}).attr("y",function(h,o){return o=h.order,o*F+a.barHeight/2+(a.fontSize/2-2)+_}).attr("text-height",x).attr("class",function(h){const o=M(h.startTime);let P=M(h.endTime);h.milestone&&(P=o+x);const O=this.getBBox().width;let V="";h.classes.length>0&&(V=h.classes.join(" "));let ee=0;for(const[X,oe]of S.entries())h.type===oe&&(ee=X%a.numberSectionStyles);let q="";return h.active&&(h.crit?q="activeCritText"+ee:q="activeText"+ee),h.done?h.crit?q=q+" doneCritText"+ee:q=q+" doneText"+ee:h.crit&&(q=q+" critText"+ee),h.milestone&&(q+=" milestoneText"),O>P-o?P+O+1.5*a.leftPadding>u?V+" taskTextOutsideLeft taskTextOutside"+ee+" "+q:V+" taskTextOutsideRight taskTextOutside"+ee+" "+q+" width-"+O:V+" taskText taskText"+ee+" "+q+" width-"+O}),Ye().securityLevel==="sandbox"){let h;h=je("#i"+t);const o=h.nodes()[0].contentDocument;m.filter(function(P){return E.has(P.id)}).each(function(P){var O=o.querySelector("#"+P.id),V=o.querySelector("#"+P.id+"-text");const ee=O.parentNode;var q=o.createElement("a");q.setAttribute("xlink:href",E.get(P.id)),q.setAttribute("target","_top"),ee.appendChild(q),q.appendChild(O),q.appendChild(V)})}}f(K,"drawRects");function R(D,F,_,Y,x,A,u,d){if(u.length===0&&d.length===0)return;let b,m;for(const{startTime:O,endTime:V}of A)(b===void 0||Om)&&(m=V);if(!b||!m)return;if(ae(m).diff(ae(b),"year")>5){tt.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}const E=n.db.getDateFormat(),c=[];let h=null,o=ae(b);for(;o.valueOf()<=m;)n.db.isInvalidDate(o,E,u,d)?h?h.end=o:h={start:o,end:o}:h&&(c.push(h),h=null),o=o.add(1,"d");N.append("g").selectAll("rect").data(c).enter().append("rect").attr("id",function(O){return"exclude-"+O.start.format("YYYY-MM-DD")}).attr("x",function(O){return M(O.start)+_}).attr("y",a.gridLineStartPadding).attr("width",function(O){const V=O.end.add(1,"day");return M(V)-M(O.start)}).attr("height",x-F-a.gridLineStartPadding).attr("transform-origin",function(O,V){return(M(O.start)+_+.5*(M(O.end)-M(O.start))).toString()+"px "+(V*D+.5*x).toString()+"px"}).attr("class","exclude-range")}f(R,"drawExcludeDays");function Z(D,F,_,Y){let x=un(M).tickSize(-Y+F+a.gridLineStartPadding).tickFormat(at(n.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));const u=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||a.tickInterval);if(u!==null){const d=u[1],b=u[2],m=n.db.getWeekday()||a.weekday;switch(b){case"millisecond":x.ticks(Ee.every(d));break;case"second":x.ticks(Te.every(d));break;case"minute":x.ticks(Ve.every(d));break;case"hour":x.ticks(Pe.every(d));break;case"day":x.ticks(xe.every(d));break;case"week":x.ticks(ar[m].every(d));break;case"month":x.ticks(Re.every(d));break}}if(N.append("g").attr("class","grid").attr("transform","translate("+D+", "+(Y-50)+")").call(x).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||a.topAxis){let d=ln(M).tickSize(-Y+F+a.gridLineStartPadding).tickFormat(at(n.db.getAxisFormat()||a.axisFormat||"%Y-%m-%d"));if(u!==null){const b=u[1],m=u[2],E=n.db.getWeekday()||a.weekday;switch(m){case"millisecond":d.ticks(Ee.every(b));break;case"second":d.ticks(Te.every(b));break;case"minute":d.ticks(Ve.every(b));break;case"hour":d.ticks(Pe.every(b));break;case"day":d.ticks(xe.every(b));break;case"week":d.ticks(ar[E].every(b));break;case"month":d.ticks(Re.every(b));break}}N.append("g").attr("class","grid").attr("transform","translate("+D+", "+F+")").call(d).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}f(Z,"makeGrid");function j(D,F){let _=0;const Y=Object.keys(C).map(x=>[x,C[x]]);N.append("g").selectAll("text").data(Y).enter().append(function(x){const A=x[0].split(Xr.lineBreakRegex),u=-(A.length-1)/2,d=k.createElementNS("http://www.w3.org/2000/svg","text");d.setAttribute("dy",u+"em");for(const[b,m]of A.entries()){const E=k.createElementNS("http://www.w3.org/2000/svg","tspan");E.setAttribute("alignment-baseline","central"),E.setAttribute("x","10"),b>0&&E.setAttribute("dy","1em"),E.textContent=m,d.appendChild(E)}return d}).attr("x",10).attr("y",function(x,A){if(A>0)for(let u=0;u` + .mermaid-main-font { + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .exclude-range { + fill: ${e.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${e.sectionBkgColor}; + } + + .section2 { + fill: ${e.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${e.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${e.titleColor}; + } + + .sectionTitle1 { + fill: ${e.titleColor}; + } + + .sectionTitle2 { + fill: ${e.titleColor}; + } + + .sectionTitle3 { + fill: ${e.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${e.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${e.fontFamily}; + fill: ${e.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${e.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideRight { + fill: ${e.taskTextDarkColor}; + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideLeft { + fill: ${e.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${e.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${e.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${e.taskBkgColor}; + stroke: ${e.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${e.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${e.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${e.activeTaskBkgColor}; + stroke: ${e.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${e.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${e.doneTaskBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${e.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${e.critBorderColor}; + fill: ${e.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${e.critBorderColor}; + fill: ${e.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${e.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${e.titleColor||e.textColor}; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } +`,"getStyles"),zi=Pi,Gi={parser:ei,db:Wi,renderer:Vi,styles:zi};export{Gi as diagram}; diff --git a/assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js b/assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js new file mode 100644 index 00000000..af3dfe2c --- /dev/null +++ b/assets/chunks/gitGraph-YCYPL57B.CPbwsOso.js @@ -0,0 +1,127 @@ +var Fl=Object.defineProperty;var Gl=(n,e,t)=>e in n?Fl(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Je=(n,e,t)=>Gl(n,typeof e!="symbol"?e+"":e,t);import{V as tn}from"./framework.BDUoXecB.js";import{by as Ul,bz as Bl,aP as io,bi as Vl,aT as Wl,aQ as Z,aq as jl,ar as Xi,b8 as Hl,bb as so,bc as ao,bn as Ji,b9 as Kl,at as mt,au as D,aR as Qi,aL as zl}from"../app.BCWCbnje.js";import{k as Mt,j as yi,g as Kt,S as ql,w as Yl,x as Xl,c as oo,v as K,y as co,l as Jl,z as Ql,A as Zl,B as eu,C as tu,a as lo,d as C,i as ze,r as oe,f as ve,D as q}from"./baseUniq.CLqXXsun.js";import{j as Ti,m as S,d as nu,f as Ne,g as Dt,i as Ri,h as _,l as Ft,e as ru}from"./basePickBy.B1urSlEm.js";import{c as te}from"./clone.BdpAoxvF.js";var iu=Object.prototype,su=iu.hasOwnProperty,Ae=Ul(function(n,e){if(Bl(e)||io(e)){Vl(e,Mt(e),n);return}for(var t in e)su.call(e,t)&&Wl(n,t,e[t])});function uo(n,e,t){var r=-1,i=n.length;e<0&&(e=-e>i?0:i+e),t=t>i?i:t,t<0&&(t+=i),i=e>t?0:t-e>>>0,e>>>=0;for(var s=Array(i);++r=lu&&(s=Xl,a=!1,e=new ql(e));e:for(;++i-1:!!i&&co(n,e,t)>-1}function Zi(n,e,t){var r=n==null?0:n.length;if(!r)return-1;var i=0;return co(n,e,i)}var Tu="[object RegExp]";function Ru(n){return so(n)&&ao(n)==Tu}var es=Ji&&Ji.isRegExp,qe=es?Kl(es):Ru,Au="Expected a function";function vu(n){if(typeof n!="function")throw new TypeError(Au);return function(){var e=arguments;switch(e.length){case 0:return!n.call(this);case 1:return!n.call(this,e[0]);case 2:return!n.call(this,e[0],e[1]);case 3:return!n.call(this,e[0],e[1],e[2])}return!n.apply(this,e)}}function Pe(n,e){if(n==null)return{};var t=Jl(Ql(n),function(r){return[r]});return e=Kt(e),nu(n,t,function(r,i){return e(r,i[0])})}function rr(n,e){var t=Z(n)?Zl:eu;return t(n,vu(Kt(e)))}function Eu(n,e){var t;return yi(n,function(r,i,s){return t=e(r,i,s),!t}),!!t}function fo(n,e,t){var r=Z(n)?tu:Eu;return r(n,Kt(e))}function Ai(n){return n&&n.length?lo(n):[]}function ku(n,e){return n&&n.length?lo(n,Kt(e)):[]}function ae(n){return typeof n=="object"&&n!==null&&typeof n.$type=="string"}function Ge(n){return typeof n=="object"&&n!==null&&typeof n.$refText=="string"}function Su(n){return typeof n=="object"&&n!==null&&typeof n.name=="string"&&typeof n.type=="string"&&typeof n.path=="string"}function xn(n){return typeof n=="object"&&n!==null&&ae(n.container)&&Ge(n.reference)&&typeof n.message=="string"}class ho{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return ae(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let r=this.subtypes[e];r||(r=this.subtypes[e]={});const i=r[t];if(i!==void 0)return i;{const s=this.computeIsSubtype(e,t);return r[t]=s,s}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const r=this.getAllTypes(),i=[];for(const s of r)this.isSubtype(s,e)&&i.push(s);return this.allSubtypes[e]=i,i}}}function Gt(n){return typeof n=="object"&&n!==null&&Array.isArray(n.content)}function po(n){return typeof n=="object"&&n!==null&&typeof n.tokenType=="object"}function mo(n){return Gt(n)&&typeof n.fullText=="string"}class ie{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(){return!!this.iterator().next().done}count(){const e=this.iterator();let t=0,r=e.next();for(;!r.done;)t++,r=e.next();return t}toArray(){const e=[],t=this.iterator();let r;do r=t.next(),r.value!==void 0&&e.push(r.value);while(!r.done);return e}toSet(){return new Set(this)}toMap(e,t){const r=this.map(i=>[e?e(i):i,t?t(i):i]);return new Map(r)}toString(){return this.join()}concat(e){const t=e[Symbol.iterator]();return new ie(()=>({first:this.startFn(),firstDone:!1}),r=>{let i;if(!r.firstDone){do if(i=this.nextFn(r.first),!i.done)return i;while(!i.done);r.firstDone=!0}do if(i=t.next(),!i.done)return i;while(!i.done);return xe})}join(e=","){const t=this.iterator();let r="",i,s=!1;do i=t.next(),i.done||(s&&(r+=e),r+=Iu(i.value)),s=!0;while(!i.done);return r}indexOf(e,t=0){const r=this.iterator();let i=0,s=r.next();for(;!s.done;){if(i>=t&&s.value===e)return i;s=r.next(),i++}return-1}every(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(!e(r.value))return!1;r=t.next()}return!0}some(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return!0;r=t.next()}return!1}forEach(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;)e(i.value,r),i=t.next(),r++}map(e){return new ie(this.startFn,t=>{const{done:r,value:i}=this.nextFn(t);return r?xe:{done:!1,value:e(i)}})}filter(e){return new ie(this.startFn,t=>{let r;do if(r=this.nextFn(t),!r.done&&e(r.value))return r;while(!r.done);return xe})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,t){const r=this.iterator();let i=t,s=r.next();for(;!s.done;)i===void 0?i=s.value:i=e(i,s.value),s=r.next();return i}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,r){const i=e.next();if(i.done)return r;const s=this.recursiveReduce(e,t,r);return s===void 0?i.value:t(s,i.value)}find(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(e(r.value))return r.value;r=t.next()}}findIndex(e){const t=this.iterator();let r=0,i=t.next();for(;!i.done;){if(e(i.value))return r;i=t.next(),r++}return-1}includes(e){const t=this.iterator();let r=t.next();for(;!r.done;){if(r.value===e)return!0;r=t.next()}return!1}flatMap(e){return new ie(()=>({this:this.startFn()}),t=>{do{if(t.iterator){const s=t.iterator.next();if(s.done)t.iterator=void 0;else return s}const{done:r,value:i}=this.nextFn(t.this);if(!r){const s=e(i);if($n(s))t.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}}while(t.iterator);return xe})}flat(e){if(e===void 0&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new ie(()=>({this:t.startFn()}),r=>{do{if(r.iterator){const a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}const{done:i,value:s}=t.nextFn(r.this);if(!i)if($n(s))r.iterator=s[Symbol.iterator]();else return{done:!1,value:s}}while(r.iterator);return xe})}head(){const t=this.iterator().next();if(!t.done)return t.value}tail(e=1){return new ie(()=>{const t=this.startFn();for(let r=0;r({size:0,state:this.startFn()}),t=>(t.size++,t.size>e?xe:this.nextFn(t.state)))}distinct(e){const t=new Set;return this.filter(r=>{const i=e?e(r):r;return t.has(i)?!1:(t.add(i),!0)})}exclude(e,t){const r=new Set;for(const i of e){const s=t?t(i):i;r.add(s)}return this.filter(i=>{const s=t?t(i):i;return!r.has(s)})}}function Iu(n){return typeof n=="string"?n:typeof n>"u"?"undefined":typeof n.toString=="function"?n.toString():Object.prototype.toString.call(n)}function $n(n){return!!n&&typeof n[Symbol.iterator]=="function"}const xu=new ie(()=>{},()=>xe),xe=Object.freeze({done:!0,value:void 0});function Q(...n){if(n.length===1){const e=n[0];if(e instanceof ie)return e;if($n(e))return new ie(()=>e[Symbol.iterator](),t=>t.next());if(typeof e.length=="number")return new ie(()=>({index:0}),t=>t.index1?new ie(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}if(e.array){if(e.arrIndex({iterators:r!=null&&r.includeRoot?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){const a=i.iterators[i.iterators.length-1].next();if(a.done)i.iterators.pop();else return i.iterators.push(t(a.value)[Symbol.iterator]()),a}return xe})}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var br;(function(n){function e(s){return s.reduce((a,o)=>a+o,0)}n.sum=e;function t(s){return s.reduce((a,o)=>a*o,0)}n.product=t;function r(s){return s.reduce((a,o)=>Math.min(a,o))}n.min=r;function i(s){return s.reduce((a,o)=>Math.max(a,o))}n.max=i})(br||(br={}));function Pr(n){return new vi(n,e=>Gt(e)?e.content:[],{includeRoot:!0})}function Nu(n,e){for(;n.container;)if(n=n.container,n===e)return!0;return!1}function Mr(n){return{start:{character:n.startColumn-1,line:n.startLine-1},end:{character:n.endColumn,line:n.endLine-1}}}function On(n){if(!n)return;const{offset:e,end:t,range:r}=n;return{range:r,offset:e,end:t,length:t-e}}var Ze;(function(n){n[n.Before=0]="Before",n[n.After=1]="After",n[n.OverlapFront=2]="OverlapFront",n[n.OverlapBack=3]="OverlapBack",n[n.Inside=4]="Inside"})(Ze||(Ze={}));function Cu(n,e){if(n.end.linee.end.line||n.start.line===e.end.line&&n.start.character>e.end.character)return Ze.After;const t=n.start.line>e.start.line||n.start.line===e.start.line&&n.start.character>=e.start.character,r=n.end.lineZe.After}const wu=/^[\w\p{L}]$/u;function Lu(n,e){if(n){const t=$u(n,!0);if(t&&ts(t,e))return t;if(mo(n)){const r=n.content.findIndex(i=>!i.hidden);for(let i=r-1;i>=0;i--){const s=n.content[i];if(ts(s,e))return s}}}}function ts(n,e){return po(n)&&e.includes(n.tokenType.name)}function $u(n,e=!0){for(;n.container;){const t=n.container;let r=t.content.indexOf(n);for(;r>0;){r--;const i=t.content[r];if(e||!i.hidden)return i}n=t}}class go extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function ir(n){throw new Error("Error! The input value was not handled.")}const Ar="AbstractRule",vr="AbstractType",ns="Condition",Ou="TypeDefinition",rs="ValueLiteral",yo="AbstractElement";function bu(n){return M.isInstance(n,yo)}const Pu="ArrayLiteral",Mu="ArrayType",To="BooleanLiteral";function Du(n){return M.isInstance(n,To)}const Ro="Conjunction";function Fu(n){return M.isInstance(n,Ro)}const Ao="Disjunction";function Gu(n){return M.isInstance(n,Ao)}const Uu="Grammar",vo="InferredType";function Eo(n){return M.isInstance(n,vo)}const ko="Interface";function So(n){return M.isInstance(n,ko)}const Io="Negation";function Bu(n){return M.isInstance(n,Io)}const Vu="NumberLiteral",Wu="Parameter",xo="ParameterReference";function ju(n){return M.isInstance(n,xo)}const No="ParserRule";function Ce(n){return M.isInstance(n,No)}const Hu="ReferenceType",Ku="ReturnType";function zu(n){return M.isInstance(n,Ku)}const Co="SimpleType";function qu(n){return M.isInstance(n,Co)}const Yu="StringLiteral",Dr="TerminalRule";function gt(n){return M.isInstance(n,Dr)}const _o="Type";function wo(n){return M.isInstance(n,_o)}const Xu="UnionType",Lo="Action";function sr(n){return M.isInstance(n,Lo)}const $o="Alternatives";function Oo(n){return M.isInstance(n,$o)}const bo="Assignment";function ut(n){return M.isInstance(n,bo)}const Po="CharacterRange";function Ju(n){return M.isInstance(n,Po)}const Mo="CrossReference";function Ei(n){return M.isInstance(n,Mo)}const Do="EndOfFile";function Qu(n){return M.isInstance(n,Do)}const Fo="Group";function ki(n){return M.isInstance(n,Fo)}const Go="Keyword";function dt(n){return M.isInstance(n,Go)}const Uo="NegatedToken";function Zu(n){return M.isInstance(n,Uo)}const Bo="RegexToken";function ed(n){return M.isInstance(n,Bo)}const Vo="RuleCall";function ft(n){return M.isInstance(n,Vo)}const Wo="TerminalAlternatives";function td(n){return M.isInstance(n,Wo)}const jo="TerminalGroup";function nd(n){return M.isInstance(n,jo)}const Ho="TerminalRuleCall";function rd(n){return M.isInstance(n,Ho)}const Ko="UnorderedGroup";function zo(n){return M.isInstance(n,Ko)}const qo="UntilToken";function id(n){return M.isInstance(n,qo)}const Yo="Wildcard";function sd(n){return M.isInstance(n,Yo)}class Xo extends ho{getAllTypes(){return["AbstractElement","AbstractRule","AbstractType","Action","Alternatives","ArrayLiteral","ArrayType","Assignment","BooleanLiteral","CharacterRange","Condition","Conjunction","CrossReference","Disjunction","EndOfFile","Grammar","GrammarImport","Group","InferredType","Interface","Keyword","NamedArgument","NegatedToken","Negation","NumberLiteral","Parameter","ParameterReference","ParserRule","ReferenceType","RegexToken","ReturnType","RuleCall","SimpleType","StringLiteral","TerminalAlternatives","TerminalGroup","TerminalRule","TerminalRuleCall","Type","TypeAttribute","TypeDefinition","UnionType","UnorderedGroup","UntilToken","ValueLiteral","Wildcard"]}computeIsSubtype(e,t){switch(e){case Lo:case $o:case bo:case Po:case Mo:case Do:case Fo:case Go:case Uo:case Bo:case Vo:case Wo:case jo:case Ho:case Ko:case qo:case Yo:return this.isSubtype(yo,t);case Pu:case Vu:case Yu:return this.isSubtype(rs,t);case Mu:case Hu:case Co:case Xu:return this.isSubtype(Ou,t);case To:return this.isSubtype(ns,t)||this.isSubtype(rs,t);case Ro:case Ao:case Io:case xo:return this.isSubtype(ns,t);case vo:case ko:case _o:return this.isSubtype(vr,t);case No:return this.isSubtype(Ar,t)||this.isSubtype(vr,t);case Dr:return this.isSubtype(Ar,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 vr;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Ar;case"Grammar:usedGrammars":return Uu;case"NamedArgument:parameter":case"ParameterReference:parameter":return Wu;case"TerminalRuleCall:rule":return Dr;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case"AbstractElement":return{name:"AbstractElement",properties:[{name:"cardinality"},{name:"lookahead"}]};case"ArrayLiteral":return{name:"ArrayLiteral",properties:[{name:"elements",defaultValue:[]}]};case"ArrayType":return{name:"ArrayType",properties:[{name:"elementType"}]};case"BooleanLiteral":return{name:"BooleanLiteral",properties:[{name:"true",defaultValue:!1}]};case"Conjunction":return{name:"Conjunction",properties:[{name:"left"},{name:"right"}]};case"Disjunction":return{name:"Disjunction",properties:[{name:"left"},{name:"right"}]};case"Grammar":return{name:"Grammar",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"GrammarImport":return{name:"GrammarImport",properties:[{name:"path"}]};case"InferredType":return{name:"InferredType",properties:[{name:"name"}]};case"Interface":return{name:"Interface",properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case"NamedArgument":return{name:"NamedArgument",properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case"Negation":return{name:"Negation",properties:[{name:"value"}]};case"NumberLiteral":return{name:"NumberLiteral",properties:[{name:"value"}]};case"Parameter":return{name:"Parameter",properties:[{name:"name"}]};case"ParameterReference":return{name:"ParameterReference",properties:[{name:"parameter"}]};case"ParserRule":return{name:"ParserRule",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"ReferenceType":return{name:"ReferenceType",properties:[{name:"referenceType"}]};case"ReturnType":return{name:"ReturnType",properties:[{name:"name"}]};case"SimpleType":return{name:"SimpleType",properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case"StringLiteral":return{name:"StringLiteral",properties:[{name:"value"}]};case"TerminalRule":return{name:"TerminalRule",properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case"Type":return{name:"Type",properties:[{name:"name"},{name:"type"}]};case"TypeAttribute":return{name:"TypeAttribute",properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case"UnionType":return{name:"UnionType",properties:[{name:"types",defaultValue:[]}]};case"Action":return{name:"Action",properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case"Alternatives":return{name:"Alternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"Assignment":return{name:"Assignment",properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case"CharacterRange":return{name:"CharacterRange",properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case"CrossReference":return{name:"CrossReference",properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case"EndOfFile":return{name:"EndOfFile",properties:[{name:"cardinality"},{name:"lookahead"}]};case"Group":return{name:"Group",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case"Keyword":return{name:"Keyword",properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case"NegatedToken":return{name:"NegatedToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"RegexToken":return{name:"RegexToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case"RuleCall":return{name:"RuleCall",properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"TerminalAlternatives":return{name:"TerminalAlternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalGroup":return{name:"TerminalGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalRuleCall":return{name:"TerminalRuleCall",properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"UnorderedGroup":return{name:"UnorderedGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"UntilToken":return{name:"UntilToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"Wildcard":return{name:"Wildcard",properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const M=new Xo;function ad(n){for(const[e,t]of Object.entries(n))e.startsWith("$")||(Array.isArray(t)?t.forEach((r,i)=>{ae(r)&&(r.$container=n,r.$containerProperty=e,r.$containerIndex=i)}):ae(t)&&(t.$container=n,t.$containerProperty=e))}function ar(n,e){let t=n;for(;t;){if(e(t))return t;t=t.$container}}function Ue(n){const t=od(n).$document;if(!t)throw new Error("AST node has no document.");return t}function od(n){for(;n.$container;)n=n.$container;return n}function Si(n,e){if(!n)throw new Error("Node must be an AstNode.");const t=e==null?void 0:e.range;return new ie(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),r=>{for(;r.keyIndexSi(t,e))}function vt(n,e){if(!n)throw new Error("Root node must be an AstNode.");return new vi(n,t=>Si(t,e),{includeRoot:!0})}function is(n,e){var t;if(!e)return!0;const r=(t=n.$cstNode)===null||t===void 0?void 0:t.range;return r?_u(r,e):!1}function Jo(n){return new ie(()=>({keys:Object.keys(n),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class or{visitChildren(e){for(const t in e){const r=e[t];e.hasOwnProperty(t)&&(r.type!==void 0?this.visit(r):Array.isArray(r)&&r.forEach(i=>{this.visit(i)},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);break}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){}}const fd=/\r?\n/gm,hd=new Zo;class pd extends or{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&&t===` +`&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const r=cr(t);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),r=new RegExp(t);this.multiline=!!` +`.match(r)}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){e.type==="Group"&&e.quantifier||super.visitChildren(e)}}const kr=new pd;function md(n){try{return typeof n=="string"&&(n=new RegExp(n)),n=n.toString(),kr.reset(n),kr.visit(hd.pattern(n)),kr.multiline}catch{return!1}}function os(n){return(typeof n=="string"?new RegExp(n):n).test(" ")}function cr(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function gd(n){return Array.prototype.map.call(n,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:cr(e)).join("")}function yd(n,e){const t=Td(n),r=e.match(t);return!!r&&r[0].length>0}function Td(n){typeof n=="string"&&(n=new RegExp(n));const e=n,t=n.source;let r=0;function i(){let s="",a;function o(l){s+=t.substr(r,l),r+=l}function c(l){s+="(?:"+t.substr(r,l)+"|$)",r+=l}for(;r",r)-r+1);break;default:c(2);break}break;case"[":a=/\[(?:\\.|.)*?\]/g,a.lastIndex=r,a=a.exec(t)||[],c(a[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":o(1);break;case"{":a=/\{\d+,?\d*\}/g,a.lastIndex=r,a=a.exec(t),a?o(a[0].length):c(1);break;case"(":if(t[r+1]==="?")switch(t[r+2]){case":":s+="(?:",r+=3,s+=i()+"|$)";break;case"=":s+="(?=",r+=3,s+=i()+")";break;case"!":a=r,r+=3,i(),s+=t.substr(a,r-a);break;case"<":switch(t[r+3]){case"=":case"!":a=r,r+=4,i(),s+=t.substr(a,r-a);break;default:o(t.indexOf(">",r)-r+1),s+=i()+"|$)";break}break}else o(1),s+=i()+"|$)";break;case")":return++r,s;default:c(1);break}return s}return new RegExp(i(),n.flags)}function Rd(n){return n.rules.find(e=>Ce(e)&&e.entry)}function Ad(n){return n.rules.filter(e=>gt(e)&&e.hidden)}function ec(n,e){const t=new Set,r=Rd(n);if(!r)return new Set(n.rules);const i=[r].concat(Ad(n));for(const a of i)tc(a,t,e);const s=new Set;for(const a of n.rules)(t.has(a.name)||gt(a)&&a.hidden)&&s.add(a);return s}function tc(n,e,t){e.add(n.name),pn(n).forEach(r=>{if(ft(r)||t){const i=r.rule.ref;i&&!e.has(i.name)&&tc(i,e,t)}})}function vd(n){if(n.terminal)return n.terminal;if(n.type.ref){const e=rc(n.type.ref);return e==null?void 0:e.terminal}}function Ed(n){return n.hidden&&!Ni(n).test(" ")}function kd(n,e){return!n||!e?[]:Ii(n,e,n.astNode,!0)}function nc(n,e,t){if(!n||!e)return;const r=Ii(n,e,n.astNode,!0);if(r.length!==0)return t!==void 0?t=Math.max(0,Math.min(t,r.length-1)):t=0,r[t]}function Ii(n,e,t,r){if(!r){const i=ar(n.grammarSource,ut);if(i&&i.feature===e)return[n]}return Gt(n)&&n.astNode===t?n.content.flatMap(i=>Ii(i,e,t,!1)):[]}function Sd(n,e,t){if(!n)return;const r=Id(n,e,n==null?void 0:n.astNode);if(r.length!==0)return t!==void 0?t=Math.max(0,Math.min(t,r.length-1)):t=0,r[t]}function Id(n,e,t){if(n.astNode!==t)return[];if(dt(n.grammarSource)&&n.grammarSource.value===e)return[n];const r=Pr(n).iterator();let i;const s=[];do if(i=r.next(),!i.done){const a=i.value;a.astNode===t?dt(a.grammarSource)&&a.grammarSource.value===e&&s.push(a):r.prune()}while(!i.done);return s}function xd(n){var e;const t=n.astNode;for(;t===((e=n.container)===null||e===void 0?void 0:e.astNode);){const r=ar(n.grammarSource,ut);if(r)return r;n=n.container}}function rc(n){let e=n;return Eo(e)&&(sr(e.$container)?e=e.$container.$container:Ce(e.$container)?e=e.$container:ir(e.$container)),ic(n,e,new Map)}function ic(n,e,t){var r;function i(s,a){let o;return ar(s,ut)||(o=ic(a,a,t)),t.set(n,o),o}if(t.has(n))return t.get(n);t.set(n,void 0);for(const s of pn(e)){if(ut(s)&&s.feature.toLowerCase()==="name")return t.set(n,s),s;if(ft(s)&&Ce(s.rule.ref))return i(s,s.rule.ref);if(qu(s)&&(!((r=s.typeRef)===null||r===void 0)&&r.ref))return i(s,s.typeRef.ref)}}function xi(n){return sc(n,new Set)}function sc(n,e){if(e.has(n))return!0;e.add(n);for(const t of pn(n))if(ft(t)){if(!t.rule.ref||Ce(t.rule.ref)&&!sc(t.rule.ref,e))return!1}else{if(ut(t))return!1;if(sr(t))return!1}return!!n.definition}function ac(n){if(n.inferredType)return n.inferredType.name;if(n.dataType)return n.dataType;if(n.returnType){const e=n.returnType.ref;if(e){if(Ce(e))return e.name;if(So(e)||wo(e))return e.name}}}function lr(n){var e;if(Ce(n))return xi(n)?n.name:(e=ac(n))!==null&&e!==void 0?e:n.name;if(So(n)||wo(n)||zu(n))return n.name;if(sr(n)){const t=Nd(n);if(t)return t}else if(Eo(n))return n.name;throw new Error("Cannot get name of Unknown Type")}function Nd(n){var e;if(n.inferredType)return n.inferredType.name;if(!((e=n.type)===null||e===void 0)&&e.ref)return lr(n.type.ref)}function Cd(n){var e,t,r;return gt(n)?(t=(e=n.type)===null||e===void 0?void 0:e.name)!==null&&t!==void 0?t:"string":xi(n)?n.name:(r=ac(n))!==null&&r!==void 0?r:n.name}function Ni(n){const e={s:!1,i:!1,u:!1},t=zt(n.definition,e),r=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(t,r)}const Ci=/[\s\S]/.source;function zt(n,e){if(td(n))return _d(n);if(nd(n))return wd(n);if(Ju(n))return Od(n);if(rd(n)){const t=n.rule.ref;if(!t)throw new Error("Missing rule reference.");return Ke(zt(t.definition),{cardinality:n.cardinality,lookahead:n.lookahead})}else{if(Zu(n))return $d(n);if(id(n))return Ld(n);if(ed(n)){const t=n.regex.lastIndexOf("/"),r=n.regex.substring(1,t),i=n.regex.substring(t+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),Ke(r,{cardinality:n.cardinality,lookahead:n.lookahead,wrap:!1})}else{if(sd(n))return Ke(Ci,{cardinality:n.cardinality,lookahead:n.lookahead});throw new Error(`Invalid terminal element: ${n==null?void 0:n.$type}`)}}}function _d(n){return Ke(n.elements.map(e=>zt(e)).join("|"),{cardinality:n.cardinality,lookahead:n.lookahead})}function wd(n){return Ke(n.elements.map(e=>zt(e)).join(""),{cardinality:n.cardinality,lookahead:n.lookahead})}function Ld(n){return Ke(`${Ci}*?${zt(n.terminal)}`,{cardinality:n.cardinality,lookahead:n.lookahead})}function $d(n){return Ke(`(?!${zt(n.terminal)})${Ci}*?`,{cardinality:n.cardinality,lookahead:n.lookahead})}function Od(n){return n.right?Ke(`[${Sr(n.left)}-${Sr(n.right)}]`,{cardinality:n.cardinality,lookahead:n.lookahead,wrap:!1}):Ke(Sr(n.left),{cardinality:n.cardinality,lookahead:n.lookahead,wrap:!1})}function Sr(n){return cr(n.value)}function Ke(n,e){var t;return(e.wrap!==!1||e.lookahead)&&(n=`(${(t=e.lookahead)!==null&&t!==void 0?t:""}${n})`),e.cardinality?`${n}${e.cardinality}`:n}function bd(n){const e=[],t=n.Grammar;for(const r of t.rules)gt(r)&&Ed(r)&&md(Ni(r))&&e.push(r.name);return{multilineCommentRules:e,nameRegexp:wu}}function Fr(n){console&&console.error&&console.error(`Error: ${n}`)}function oc(n){console&&console.warn&&console.warn(`Warning: ${n}`)}function cc(n){const e=new Date().getTime(),t=n();return{time:new Date().getTime()-e,value:t}}function lc(n){function e(){}e.prototype=n;const t=new e;function r(){return typeof t.bar}return r(),r(),n}function Pd(n){return Md(n)?n.LABEL:n.name}function Md(n){return fe(n.LABEL)&&n.LABEL!==""}class Be{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),C(this.definition,t=>{t.accept(e)})}}class ce extends Be{constructor(e){super([]),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class qt extends Be{constructor(e){super(e.definition),this.orgText="",Ae(this,Pe(e,t=>t!==void 0))}}class he extends Be{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,Ae(this,Pe(e,t=>t!==void 0))}}class ee extends Be{constructor(e){super(e.definition),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}}class Ee extends Be{constructor(e){super(e.definition),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}}class ke extends Be{constructor(e){super(e.definition),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}}class W extends Be{constructor(e){super(e.definition),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}}class pe extends Be{constructor(e){super(e.definition),this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}}class me extends Be{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,Ae(this,Pe(e,t=>t!==void 0))}}class G{constructor(e){this.idx=1,Ae(this,Pe(e,t=>t!==void 0))}accept(e){e.visit(this)}}function Dd(n){return S(n,Nn)}function Nn(n){function e(t){return S(t,Nn)}if(n instanceof ce){const t={type:"NonTerminal",name:n.nonTerminalName,idx:n.idx};return fe(n.label)&&(t.label=n.label),t}else{if(n instanceof he)return{type:"Alternative",definition:e(n.definition)};if(n instanceof ee)return{type:"Option",idx:n.idx,definition:e(n.definition)};if(n instanceof Ee)return{type:"RepetitionMandatory",idx:n.idx,definition:e(n.definition)};if(n instanceof ke)return{type:"RepetitionMandatoryWithSeparator",idx:n.idx,separator:Nn(new G({terminalType:n.separator})),definition:e(n.definition)};if(n instanceof pe)return{type:"RepetitionWithSeparator",idx:n.idx,separator:Nn(new G({terminalType:n.separator})),definition:e(n.definition)};if(n instanceof W)return{type:"Repetition",idx:n.idx,definition:e(n.definition)};if(n instanceof me)return{type:"Alternation",idx:n.idx,definition:e(n.definition)};if(n instanceof G){const t={type:"Terminal",name:n.terminalType.name,label:Pd(n.terminalType),idx:n.idx};fe(n.label)&&(t.terminalLabel=n.label);const r=n.terminalType.PATTERN;return n.terminalType.PATTERN&&(t.pattern=qe(r)?r.source:r),t}else{if(n instanceof qt)return{type:"Rule",name:n.name,orgText:n.orgText,definition:e(n.definition)};throw Error("non exhaustive match")}}}class Yt{visit(e){const t=e;switch(t.constructor){case ce:return this.visitNonTerminal(t);case he:return this.visitAlternative(t);case ee:return this.visitOption(t);case Ee:return this.visitRepetitionMandatory(t);case ke:return this.visitRepetitionMandatoryWithSeparator(t);case pe:return this.visitRepetitionWithSeparator(t);case W:return this.visitRepetition(t);case me:return this.visitAlternation(t);case G:return this.visitTerminal(t);case qt: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){}}function Fd(n){return n instanceof he||n instanceof ee||n instanceof W||n instanceof Ee||n instanceof ke||n instanceof pe||n instanceof G||n instanceof qt}function Mn(n,e=[]){return n instanceof ee||n instanceof W||n instanceof pe?!0:n instanceof me?fo(n.definition,r=>Mn(r,e)):n instanceof ce&&ue(e,n)?!1:n instanceof Be?(n instanceof ce&&e.push(n),$e(n.definition,r=>Mn(r,e))):!1}function Gd(n){return n instanceof me}function Fe(n){if(n instanceof ce)return"SUBRULE";if(n instanceof ee)return"OPTION";if(n instanceof me)return"OR";if(n instanceof Ee)return"AT_LEAST_ONE";if(n instanceof ke)return"AT_LEAST_ONE_SEP";if(n instanceof pe)return"MANY_SEP";if(n instanceof W)return"MANY";if(n instanceof G)return"CONSUME";throw Error("non exhaustive match")}class ur{walk(e,t=[]){C(e.definition,(r,i)=>{const s=J(e.definition,i+1);if(r instanceof ce)this.walkProdRef(r,s,t);else if(r instanceof G)this.walkTerminal(r,s,t);else if(r instanceof he)this.walkFlat(r,s,t);else if(r instanceof ee)this.walkOption(r,s,t);else if(r instanceof Ee)this.walkAtLeastOne(r,s,t);else if(r instanceof ke)this.walkAtLeastOneSep(r,s,t);else if(r instanceof pe)this.walkManySep(r,s,t);else if(r instanceof W)this.walkMany(r,s,t);else if(r instanceof me)this.walkOr(r,s,t);else throw Error("non exhaustive match")})}walkTerminal(e,t,r){}walkProdRef(e,t,r){}walkFlat(e,t,r){const i=t.concat(r);this.walk(e,i)}walkOption(e,t,r){const i=t.concat(r);this.walk(e,i)}walkAtLeastOne(e,t,r){const i=[new ee({definition:e.definition})].concat(t,r);this.walk(e,i)}walkAtLeastOneSep(e,t,r){const i=cs(e,t,r);this.walk(e,i)}walkMany(e,t,r){const i=[new ee({definition:e.definition})].concat(t,r);this.walk(e,i)}walkManySep(e,t,r){const i=cs(e,t,r);this.walk(e,i)}walkOr(e,t,r){const i=t.concat(r);C(e.definition,s=>{const a=new he({definition:[s]});this.walk(a,i)})}}function cs(n,e,t){return[new ee({definition:[new G({terminalType:n.separator})].concat(n.definition)})].concat(e,t)}function mn(n){if(n instanceof ce)return mn(n.referencedRule);if(n instanceof G)return Vd(n);if(Fd(n))return Ud(n);if(Gd(n))return Bd(n);throw Error("non exhaustive match")}function Ud(n){let e=[];const t=n.definition;let r=0,i=t.length>r,s,a=!0;for(;i&&a;)s=t[r],a=Mn(s),e=e.concat(mn(s)),r=r+1,i=t.length>r;return Ai(e)}function Bd(n){const e=S(n.definition,t=>mn(t));return Ai(Ne(e))}function Vd(n){return[n.terminalType]}const uc="_~IN~_";class Wd extends ur{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,r){}walkProdRef(e,t,r){const i=Hd(e.referencedRule,e.idx)+this.topProd.name,s=t.concat(r),a=new he({definition:s}),o=mn(a);this.follows[i]=o}}function jd(n){const e={};return C(n,t=>{const r=new Wd(t).startWalking();Ae(e,r)}),e}function Hd(n,e){return n.name+e+uc}let Cn={};const Kd=new Zo;function dr(n){const e=n.toString();if(Cn.hasOwnProperty(e))return Cn[e];{const t=Kd.pattern(e);return Cn[e]=t,t}}function zd(){Cn={}}const dc="Complement Sets are not supported for first char optimization",Dn=`Unable to use "first char" lexer optimizations: +`;function qd(n,e=!1){try{const t=dr(n);return Gr(t.value,{},t.flags.ignoreCase)}catch(t){if(t.message===dc)e&&oc(`${Dn} Unable to optimize: < ${n.toString()} > + Complement Sets cannot be automatically optimized. + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let r="";e&&(r=` + This will disable the lexer's first char optimizations. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Fr(`${Dn} + Failed parsing: < ${n.toString()} > + Using the @chevrotain/regexp-to-ast library + Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+r)}}return[]}function Gr(n,e,t){switch(n.type){case"Disjunction":for(let i=0;i{if(typeof c=="number")kn(c,e,t);else{const l=c;if(t===!0)for(let u=l.from;u<=l.to;u++)kn(u,e,t);else{for(let u=l.from;u<=l.to&&u=on){const u=l.from>=on?l.from:on,d=l.to,f=et(u),h=et(d);for(let m=f;m<=h;m++)e[m]=m}}}});break;case"Group":Gr(a.value,e,t);break;default:throw Error("Non Exhaustive Match")}const o=a.quantifier!==void 0&&a.quantifier.atLeast===0;if(a.type==="Group"&&Ur(a)===!1||a.type!=="Group"&&o===!1)break}break;default:throw Error("non exhaustive match!")}return K(e)}function kn(n,e,t){const r=et(n);e[r]=r,t===!0&&Yd(n,e)}function Yd(n,e){const t=String.fromCharCode(n),r=t.toUpperCase();if(r!==t){const i=et(r.charCodeAt(0));e[i]=i}else{const i=t.toLowerCase();if(i!==t){const s=et(i.charCodeAt(0));e[s]=s}}}function ls(n,e){return Dt(n.value,t=>{if(typeof t=="number")return ue(e,t);{const r=t;return Dt(e,i=>r.from<=i&&i<=r.to)!==void 0}})}function Ur(n){const e=n.quantifier;return e&&e.atLeast===0?!0:n.value?Z(n.value)?$e(n.value,Ur):Ur(n.value):!1}class Xd extends or{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){ue(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?ls(e,this.targetCharCodes)===void 0&&(this.found=!0):ls(e,this.targetCharCodes)!==void 0&&(this.found=!0)}}function _i(n,e){if(e instanceof RegExp){const t=dr(e),r=new Xd(n);return r.visit(t),r.found}else return Dt(e,t=>ue(n,t.charCodeAt(0)))!==void 0}const ht="PATTERN",an="defaultMode",Sn="modes";let fc=typeof new RegExp("(?:)").sticky=="boolean";function Jd(n,e){e=Ri(e,{useSticky:fc,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:(v,R)=>R()});const t=e.tracer;t("initCharCodeToOptimizedIndexMap",()=>{vf()});let r;t("Reject Lexer.NA",()=>{r=rr(n,v=>v[ht]===de.NA)});let i=!1,s;t("Transform Patterns",()=>{i=!1,s=S(r,v=>{const R=v[ht];if(qe(R)){const N=R.source;return N.length===1&&N!=="^"&&N!=="$"&&N!=="."&&!R.ignoreCase?N:N.length===2&&N[0]==="\\"&&!ue(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],N[1])?N[1]:e.useSticky?ds(R):us(R)}else{if(mt(R))return i=!0,{exec:R};if(typeof R=="object")return i=!0,R;if(typeof R=="string"){if(R.length===1)return R;{const N=R.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),F=new RegExp(N);return e.useSticky?ds(F):us(F)}}else throw Error("non exhaustive match")}})});let a,o,c,l,u;t("misc mapping",()=>{a=S(r,v=>v.tokenTypeIdx),o=S(r,v=>{const R=v.GROUP;if(R!==de.SKIPPED){if(fe(R))return R;if(ze(R))return!1;throw Error("non exhaustive match")}}),c=S(r,v=>{const R=v.LONGER_ALT;if(R)return Z(R)?S(R,F=>Zi(r,F)):[Zi(r,R)]}),l=S(r,v=>v.PUSH_MODE),u=S(r,v=>_(v,"POP_MODE"))});let d;t("Line Terminator Handling",()=>{const v=mc(e.lineTerminatorCharacters);d=S(r,R=>!1),e.positionTracking!=="onlyOffset"&&(d=S(r,R=>_(R,"LINE_BREAKS")?!!R.LINE_BREAKS:pc(R,v)===!1&&_i(v,R.PATTERN)))});let f,h,m,g;t("Misc Mapping #2",()=>{f=S(r,hc),h=S(s,Tf),m=oe(r,(v,R)=>{const N=R.GROUP;return fe(N)&&N!==de.SKIPPED&&(v[N]=[]),v},{}),g=S(s,(v,R)=>({pattern:s[R],longerAlt:c[R],canLineTerminator:d[R],isCustom:f[R],short:h[R],group:o[R],push:l[R],pop:u[R],tokenTypeIdx:a[R],tokenType:r[R]}))});let A=!0,y=[];return e.safeMode||t("First Char Optimization",()=>{y=oe(r,(v,R,N)=>{if(typeof R.PATTERN=="string"){const F=R.PATTERN.charCodeAt(0),ne=et(F);Ir(v,ne,g[N])}else if(Z(R.START_CHARS_HINT)){let F;C(R.START_CHARS_HINT,ne=>{const we=typeof ne=="string"?ne.charCodeAt(0):ne,ge=et(we);F!==ge&&(F=ge,Ir(v,ge,g[N]))})}else if(qe(R.PATTERN))if(R.PATTERN.unicode)A=!1,e.ensureOptimizations&&Fr(`${Dn} Unable to analyze < ${R.PATTERN.toString()} > pattern. + The regexp unicode flag is not currently supported by the regexp-to-ast library. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const F=qd(R.PATTERN,e.ensureOptimizations);D(F)&&(A=!1),C(F,ne=>{Ir(v,ne,g[N])})}else e.ensureOptimizations&&Fr(`${Dn} TokenType: <${R.name}> is using a custom token pattern without providing parameter. + This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),A=!1;return v},[])}),{emptyGroups:m,patternIdxToConfig:g,charCodeToPatternIdxToConfig:y,hasCustom:i,canBeOptimized:A}}function Qd(n,e){let t=[];const r=ef(n);t=t.concat(r.errors);const i=tf(r.valid),s=i.valid;return t=t.concat(i.errors),t=t.concat(Zd(s)),t=t.concat(uf(s)),t=t.concat(df(s,e)),t=t.concat(ff(s)),t}function Zd(n){let e=[];const t=ve(n,r=>qe(r[ht]));return e=e.concat(rf(t)),e=e.concat(of(t)),e=e.concat(cf(t)),e=e.concat(lf(t)),e=e.concat(sf(t)),e}function ef(n){const e=ve(n,i=>!_(i,ht)),t=S(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:j.MISSING_PATTERN,tokenTypes:[i]})),r=nr(n,e);return{errors:t,valid:r}}function tf(n){const e=ve(n,i=>{const s=i[ht];return!qe(s)&&!mt(s)&&!_(s,"exec")&&!fe(s)}),t=S(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:j.INVALID_PATTERN,tokenTypes:[i]})),r=nr(n,e);return{errors:t,valid:r}}const nf=/[^\\][$]/;function rf(n){class e extends or{constructor(){super(...arguments),this.found=!1}visitEndAnchor(s){this.found=!0}}const t=ve(n,i=>{const s=i.PATTERN;try{const a=dr(s),o=new e;return o.visit(a),o.found}catch{return nf.test(s.source)}});return S(t,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:j.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function sf(n){const e=ve(n,r=>r.PATTERN.test(""));return S(e,r=>({message:"Token Type: ->"+r.name+"<- static 'PATTERN' must not match an empty string",type:j.EMPTY_MATCH_PATTERN,tokenTypes:[r]}))}const af=/[^\\[][\^]|^\^/;function of(n){class e extends or{constructor(){super(...arguments),this.found=!1}visitStartAnchor(s){this.found=!0}}const t=ve(n,i=>{const s=i.PATTERN;try{const a=dr(s),o=new e;return o.visit(a),o.found}catch{return af.test(s.source)}});return S(t,i=>({message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:j.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function cf(n){const e=ve(n,r=>{const i=r[ht];return i instanceof RegExp&&(i.multiline||i.global)});return S(e,r=>({message:"Token Type: ->"+r.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:j.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[r]}))}function lf(n){const e=[];let t=S(n,s=>oe(n,(a,o)=>(s.PATTERN.source===o.PATTERN.source&&!ue(e,o)&&o.PATTERN!==de.NA&&(e.push(o),a.push(o)),a),[]));t=hn(t);const r=ve(t,s=>s.length>1);return S(r,s=>{const a=S(s,c=>c.name);return{message:`The same RegExp pattern ->${be(s).PATTERN}<-has been used in all of the following Token Types: ${a.join(", ")} <-`,type:j.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}})}function uf(n){const e=ve(n,r=>{if(!_(r,"GROUP"))return!1;const i=r.GROUP;return i!==de.SKIPPED&&i!==de.NA&&!fe(i)});return S(e,r=>({message:"Token Type: ->"+r.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:j.INVALID_GROUP_TYPE_FOUND,tokenTypes:[r]}))}function df(n,e){const t=ve(n,i=>i.PUSH_MODE!==void 0&&!ue(e,i.PUSH_MODE));return S(t,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:j.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function ff(n){const e=[],t=oe(n,(r,i,s)=>{const a=i.PATTERN;return a===de.NA||(fe(a)?r.push({str:a,idx:s,tokenType:i}):qe(a)&&pf(a)&&r.push({str:a.source,idx:s,tokenType:i})),r},[]);return C(n,(r,i)=>{C(t,({str:s,idx:a,tokenType:o})=>{if(i${o.name}<- can never be matched. +Because it appears AFTER the Token Type ->${r.name}<-in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:j.UNREACHABLE_PATTERN,tokenTypes:[r,o]})}})}),e}function hf(n,e){if(qe(e)){const t=e.exec(n);return t!==null&&t.index===0}else{if(mt(e))return e(n,0,[],{});if(_(e,"exec"))return e.exec(n,0,[],{});if(typeof e=="string")return e===n;throw Error("non exhaustive match")}}function pf(n){return Dt([".","\\","[","]","|","^","$","(",")","?","*","+","{"],t=>n.source.indexOf(t)!==-1)===void 0}function us(n){const e=n.ignoreCase?"i":"";return new RegExp(`^(?:${n.source})`,e)}function ds(n){const e=n.ignoreCase?"iy":"y";return new RegExp(`${n.source}`,e)}function mf(n,e,t){const r=[];return _(n,an)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+an+`> property in its definition +`,type:j.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),_(n,Sn)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+Sn+`> property in its definition +`,type:j.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),_(n,Sn)&&_(n,an)&&!_(n.modes,n.defaultMode)&&r.push({message:`A MultiMode Lexer cannot be initialized with a ${an}: <${n.defaultMode}>which does not exist +`,type:j.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),_(n,Sn)&&C(n.modes,(i,s)=>{C(i,(a,o)=>{if(ze(a))r.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${s}> at index: <${o}> +`,type:j.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(_(a,"LONGER_ALT")){const c=Z(a.LONGER_ALT)?a.LONGER_ALT:[a.LONGER_ALT];C(c,l=>{!ze(l)&&!ue(i,l)&&r.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${l.name}> on token <${a.name}> outside of mode <${s}> +`,type:j.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),r}function gf(n,e,t){const r=[];let i=!1;const s=hn(Ne(K(n.modes))),a=rr(s,c=>c[ht]===de.NA),o=mc(t);return e&&C(a,c=>{const l=pc(c,o);if(l!==!1){const d={message:Af(c,l),type:l.issue,tokenType:c};r.push(d)}else _(c,"LINE_BREAKS")?c.LINE_BREAKS===!0&&(i=!0):_i(o,c.PATTERN)&&(i=!0)}),e&&!i&&r.push({message:`Warning: No LINE_BREAKS Found. + This Lexer has been defined to track line and column information, + But none of the Token Types can be identified as matching a line terminator. + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS + for details.`,type:j.NO_LINE_BREAKS_FLAGS}),r}function yf(n){const e={},t=Mt(n);return C(t,r=>{const i=n[r];if(Z(i))e[r]=[];else throw Error("non exhaustive match")}),e}function hc(n){const e=n.PATTERN;if(qe(e))return!1;if(mt(e))return!0;if(_(e,"exec"))return!0;if(fe(e))return!1;throw Error("non exhaustive match")}function Tf(n){return fe(n)&&n.length===1?n.charCodeAt(0):!1}const Rf={test:function(n){const e=n.length;for(let t=this.lastIndex;t Token Type + Root cause: ${e.errMsg}. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===j.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. + The problem is in the <${n.name}> Token Type + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function mc(n){return S(n,t=>fe(t)?t.charCodeAt(0):t)}function Ir(n,e,t){n[e]===void 0?n[e]=[t]:n[e].push(t)}const on=256;let _n=[];function et(n){return n255?255+~~(n/255):n}}function gn(n,e){const t=n.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}function Fn(n,e){return n.tokenTypeIdx===e.tokenTypeIdx}let fs=1;const gc={};function yn(n){const e=Ef(n);kf(e),If(e),Sf(e),C(e,t=>{t.isParent=t.categoryMatches.length>0})}function Ef(n){let e=te(n),t=n,r=!0;for(;r;){t=hn(Ne(S(t,s=>s.CATEGORIES)));const i=nr(t,e);e=e.concat(i),D(i)?r=!1:t=i}return e}function kf(n){C(n,e=>{Tc(e)||(gc[fs]=e,e.tokenTypeIdx=fs++),hs(e)&&!Z(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),hs(e)||(e.CATEGORIES=[]),xf(e)||(e.categoryMatches=[]),Nf(e)||(e.categoryMatchesMap={})})}function Sf(n){C(n,e=>{e.categoryMatches=[],C(e.categoryMatchesMap,(t,r)=>{e.categoryMatches.push(gc[r].tokenTypeIdx)})})}function If(n){C(n,e=>{yc([],e)})}function yc(n,e){C(n,t=>{e.categoryMatchesMap[t.tokenTypeIdx]=!0}),C(e.CATEGORIES,t=>{const r=n.concat(e);ue(r,t)||yc(r,t)})}function Tc(n){return _(n,"tokenTypeIdx")}function hs(n){return _(n,"CATEGORIES")}function xf(n){return _(n,"categoryMatches")}function Nf(n){return _(n,"categoryMatchesMap")}function Cf(n){return _(n,"tokenTypeIdx")}const _f={buildUnableToPopLexerModeMessage(n){return`Unable to pop Lexer Mode after encountering Token ->${n.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(n,e,t,r,i){return`unexpected character: ->${n.charAt(e)}<- at offset: ${e}, skipped ${t} characters.`}};var j;(function(n){n[n.MISSING_PATTERN=0]="MISSING_PATTERN",n[n.INVALID_PATTERN=1]="INVALID_PATTERN",n[n.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",n[n.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",n[n.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",n[n.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",n[n.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",n[n.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",n[n.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",n[n.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",n[n.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",n[n.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",n[n.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",n[n.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",n[n.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",n[n.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",n[n.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",n[n.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(j||(j={}));const cn={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:_f,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(cn);class de{constructor(e,t=cn){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=(i,s)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;const a=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);const{time:o,value:c}=cc(s),l=o>10?console.warn:console.log;return this.traceInitIndent time: ${o}ms`),this.traceInitIndent--,c}else return s()},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=Ae({},cn,t);const r=this.config.traceInitPerf;r===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof r=="number"&&(this.traceInitMaxIdent=r,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,s=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===cn.lineTerminatorsPattern)this.config.lineTerminatorsPattern=Rf;else if(this.config.lineTerminatorCharacters===cn.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For 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),Z(e)?i={modes:{defaultMode:te(e)},defaultMode:an}:(s=!1,i=te(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(mf(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(gf(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},C(i.modes,(o,c)=>{i.modes[c]=rr(o,l=>ze(l))});const a=Mt(i.modes);if(C(i.modes,(o,c)=>{this.TRACE_INIT(`Mode: <${c}> processing`,()=>{if(this.modes.push(c),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Qd(o,a))}),D(this.lexerDefinitionErrors)){yn(o);let l;this.TRACE_INIT("analyzeTokenTypes",()=>{l=Jd(o,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[c]=l.patternIdxToConfig,this.charCodeToPatternIdxToConfig[c]=l.charCodeToPatternIdxToConfig,this.emptyGroups=Ae({},this.emptyGroups,l.emptyGroups),this.hasCustom=l.hasCustom||this.hasCustom,this.canModeBeOptimized[c]=l.canBeOptimized}})}),this.defaultMode=i.defaultMode,!D(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const c=S(this.lexerDefinitionErrors,l=>l.message).join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+c)}C(this.lexerDefinitionWarning,o=>{oc(o.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(fc?(this.chopInput=Qi,this.match=this.matchWithTest):(this.updateLastIndex=q,this.match=this.matchWithExec),s&&(this.handleModes=q),this.trackStartLines===!1&&(this.computeNewColumn=Qi),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=q),/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))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);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 o=oe(this.canModeBeOptimized,(c,l,u)=>(l===!1&&c.push(u),c),[]);if(t.ensureOptimizations&&!D(o))throw Error(`Lexer Modes: < ${o.join(", ")} > cannot be optimized. + Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. + Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{zd()}),this.TRACE_INIT("toFastProperties",()=>{lc(this)})})}tokenize(e,t=this.defaultMode){if(!D(this.lexerDefinitionErrors)){const i=S(this.lexerDefinitionErrors,s=>s.message).join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+i)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let r,i,s,a,o,c,l,u,d,f,h,m,g,A,y;const v=e,R=v.length;let N=0,F=0;const ne=this.hasCustom?0:Math.floor(e.length/10),we=new Array(ne),ge=[];let De=this.trackStartLines?1:void 0,Se=this.trackStartLines?1:void 0;const k=yf(this.emptyGroups),T=this.trackStartLines,E=this.config.lineTerminatorsPattern;let I=0,O=[],$=[];const L=[],ye=[];Object.freeze(ye);let z;function V(){return O}function at(re){const Ie=et(re),Tt=$[Ie];return Tt===void 0?ye:Tt}const Dl=re=>{if(L.length===1&&re.tokenType.PUSH_MODE===void 0){const Ie=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(re);ge.push({offset:re.startOffset,line:re.startLine,column:re.startColumn,length:re.image.length,message:Ie})}else{L.pop();const Ie=Ft(L);O=this.patternIdxToConfig[Ie],$=this.charCodeToPatternIdxToConfig[Ie],I=O.length;const Tt=this.canModeBeOptimized[Ie]&&this.config.safeMode===!1;$&&Tt?z=at:z=V}};function zi(re){L.push(re),$=this.charCodeToPatternIdxToConfig[re],O=this.patternIdxToConfig[re],I=O.length,I=O.length;const Ie=this.canModeBeOptimized[re]&&this.config.safeMode===!1;$&&Ie?z=at:z=V}zi.call(this,t);let Le;const qi=this.config.recoveryEnabled;for(;Nc.length){c=a,l=u,Le=We;break}}}break}}if(c!==null){if(d=c.length,f=Le.group,f!==void 0&&(h=Le.tokenTypeIdx,m=this.createTokenInstance(c,N,h,Le.tokenType,De,Se,d),this.handlePayload(m,l),f===!1?F=this.addToken(we,F,m):k[f].push(m)),e=this.chopInput(e,d),N=N+d,Se=this.computeNewColumn(Se,d),T===!0&&Le.canLineTerminator===!0){let Te=0,Ve,Xe;E.lastIndex=0;do Ve=E.test(c),Ve===!0&&(Xe=E.lastIndex-1,Te++);while(Ve===!0);Te!==0&&(De=De+Te,Se=d-Xe,this.updateTokenEndLineColumnLocation(m,f,Xe,Te,De,Se,d))}this.handleModes(Le,Dl,zi,m)}else{const Te=N,Ve=De,Xe=Se;let We=qi===!1;for(;We===!1&&N ${Et(n)} <--`:`token of type --> ${n.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:n,ruleName:e}){return"Redundant input, expecting EOF but found: "+n.image},buildNoViableAltMessage({expectedPathsPerAlt:n,actual:e,previous:t,customUserDescription:r,ruleName:i}){const s="Expecting: ",o=` +but found: '`+be(e).image+"'";if(r)return s+r+o;{const c=oe(n,(f,h)=>f.concat(h),[]),l=S(c,f=>`[${S(f,h=>Et(h)).join(", ")}]`),d=`one of these possible Token sequences: +${S(l,(f,h)=>` ${h+1}. ${f}`).join(` +`)}`;return s+d+o}},buildEarlyExitMessage({expectedIterationPaths:n,actual:e,customUserDescription:t,ruleName:r}){const i="Expecting: ",a=` +but found: '`+be(e).image+"'";if(t)return i+t+a;{const c=`expecting at least one iteration which starts with one of these possible Token sequences:: + <${S(n,l=>`[${S(l,u=>Et(u)).join(",")}]`).join(" ,")}>`;return i+c+a}}};Object.freeze(At);const $f={buildRuleNotFoundError(n,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+n.name+"<-"}},lt={buildDuplicateFoundError(n,e){function t(u){return u instanceof G?u.terminalType.name:u instanceof ce?u.nonTerminalName:""}const r=n.name,i=be(e),s=i.idx,a=Fe(i),o=t(i),c=s>0;let l=`->${a}${c?s:""}<- ${o?`with argument: ->${o}<-`:""} + appears more than once (${e.length} times) in the top level rule: ->${r}<-. + For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES + `;return l=l.replace(/[ \t]+/g," "),l=l.replace(/\s\s+/g,` +`),l},buildNamespaceConflictError(n){return`Namespace conflict found in grammar. +The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${n.name}>. +To resolve this make sure each Terminal and Non-Terminal names are unique +This is easy to accomplish by using the convention that Terminal names start with an uppercase letter +and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(n){const e=S(n.prefixPath,i=>Et(i)).join(", "),t=n.alternation.idx===0?"":n.alternation.idx;return`Ambiguous alternatives: <${n.ambiguityIndices.join(" ,")}> due to common lookahead prefix +in inside <${n.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`},buildAlternationAmbiguityError(n){const e=S(n.prefixPath,i=>Et(i)).join(", "),t=n.alternation.idx===0?"":n.alternation.idx;let r=`Ambiguous Alternatives Detected: <${n.ambiguityIndices.join(" ,")}> in inside <${n.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`;return r=r+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,r},buildEmptyRepetitionError(n){let e=Fe(n.repetition);return n.repetition.idx!==0&&(e+=n.repetition.idx),`The repetition <${e}> within Rule <${n.topLevelRule.name}> can never consume any tokens. +This could lead to an infinite loop.`},buildTokenNameError(n){return"deprecated"},buildEmptyAlternationError(n){return`Ambiguous empty alternative: <${n.emptyChoiceIdx+1}> in inside <${n.topLevelRule.name}> Rule. +Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(n){return`An Alternation cannot have more than 256 alternatives: + inside <${n.topLevelRule.name}> Rule. + has ${n.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(n){const e=n.topLevelRule.name,t=S(n.leftRecursionPath,s=>s.name),r=`${e} --> ${t.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. +rule: <${e}> can be invoked from itself (directly or indirectly) +without consuming any Tokens. The grammar path that causes this is: + ${r} + To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(n){return"deprecated"},buildDuplicateRuleNameError(n){let e;return n.topLevelRule instanceof qt?e=n.topLevelRule.name:e=n.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${n.grammarName}<-`}};function Of(n,e){const t=new bf(n,e);return t.resolveRefs(),t.errors}class bf extends Yt{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){C(K(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const r=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:r,type:le.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}class Pf extends ur{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=te(this.path.ruleStack).reverse(),this.occurrenceStack=te(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,r){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){const i=t.concat(r);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){D(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}}class Mf extends Pf{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,r){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){const i=t.concat(r),s=new he({definition:i});this.possibleTokTypes=mn(s),this.found=!0}}}class fr extends ur{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 Df extends fr{walkMany(e,t,r){if(e.idx===this.occurrence){const i=be(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof G&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,t,r)}}class Es extends fr{walkManySep(e,t,r){if(e.idx===this.occurrence){const i=be(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof G&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,t,r)}}class Ff extends fr{walkAtLeastOne(e,t,r){if(e.idx===this.occurrence){const i=be(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof G&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,t,r)}}class ks extends fr{walkAtLeastOneSep(e,t,r){if(e.idx===this.occurrence){const i=be(t.concat(r));this.result.isEndOfRule=i===void 0,i instanceof G&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,t,r)}}function Br(n,e,t=[]){t=te(t);let r=[],i=0;function s(o){return o.concat(J(n,i+1))}function a(o){const c=Br(s(o),e,t);return r.concat(c)}for(;t.length{D(c.definition)===!1&&(r=a(c.definition))}),r;if(o instanceof G)t.push(o.terminalType);else throw Error("non exhaustive match")}i++}return r.push({partialPath:t,suffixDef:J(n,i)}),r}function Ec(n,e,t,r){const i="EXIT_NONE_TERMINAL",s=[i],a="EXIT_ALTERNATIVE";let o=!1;const c=e.length,l=c-r-1,u=[],d=[];for(d.push({idx:-1,def:n,ruleStack:[],occurrenceStack:[]});!D(d);){const f=d.pop();if(f===a){o&&Ft(d).idx<=l&&d.pop();continue}const h=f.def,m=f.idx,g=f.ruleStack,A=f.occurrenceStack;if(D(h))continue;const y=h[0];if(y===i){const v={idx:m,def:J(h),ruleStack:ln(g),occurrenceStack:ln(A)};d.push(v)}else if(y instanceof G)if(m=0;v--){const R=y.definition[v],N={idx:m,def:R.definition.concat(J(h)),ruleStack:g,occurrenceStack:A};d.push(N),d.push(a)}else if(y instanceof he)d.push({idx:m,def:y.definition.concat(J(h)),ruleStack:g,occurrenceStack:A});else if(y instanceof qt)d.push(Gf(y,m,g,A));else throw Error("non exhaustive match")}return u}function Gf(n,e,t,r){const i=te(t);i.push(n.name);const s=te(r);return s.push(1),{idx:e,def:n.definition,ruleStack:i,occurrenceStack:s}}var B;(function(n){n[n.OPTION=0]="OPTION",n[n.REPETITION=1]="REPETITION",n[n.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",n[n.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",n[n.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",n[n.ALTERNATION=5]="ALTERNATION"})(B||(B={}));function Li(n){if(n instanceof ee||n==="Option")return B.OPTION;if(n instanceof W||n==="Repetition")return B.REPETITION;if(n instanceof Ee||n==="RepetitionMandatory")return B.REPETITION_MANDATORY;if(n instanceof ke||n==="RepetitionMandatoryWithSeparator")return B.REPETITION_MANDATORY_WITH_SEPARATOR;if(n instanceof pe||n==="RepetitionWithSeparator")return B.REPETITION_WITH_SEPARATOR;if(n instanceof me||n==="Alternation")return B.ALTERNATION;throw Error("non exhaustive match")}function Ss(n){const{occurrence:e,rule:t,prodType:r,maxLookahead:i}=n,s=Li(r);return s===B.ALTERNATION?hr(e,t,i):pr(e,t,s,i)}function Uf(n,e,t,r,i,s){const a=hr(n,e,t),o=Ic(a)?Fn:gn;return s(a,r,o,i)}function Bf(n,e,t,r,i,s){const a=pr(n,e,i,t),o=Ic(a)?Fn:gn;return s(a[0],o,r)}function Vf(n,e,t,r){const i=n.length,s=$e(n,a=>$e(a,o=>o.length===1));if(e)return function(a){const o=S(a,c=>c.GATE);for(let c=0;cNe(c)),o=oe(a,(c,l,u)=>(C(l,d=>{_(c,d.tokenTypeIdx)||(c[d.tokenTypeIdx]=u),C(d.categoryMatches,f=>{_(c,f)||(c[f]=u)})}),c),{});return function(){const c=this.LA(1);return o[c.tokenTypeIdx]}}else return function(){for(let a=0;as.length===1),i=n.length;if(r&&!t){const s=Ne(n);if(s.length===1&&D(s[0].categoryMatches)){const o=s[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===o}}else{const a=oe(s,(o,c,l)=>(o[c.tokenTypeIdx]=!0,C(c.categoryMatches,u=>{o[u]=!0}),o),[]);return function(){const o=this.LA(1);return a[o.tokenTypeIdx]===!0}}}else return function(){e:for(let s=0;sBr([a],1)),r=Is(t.length),i=S(t,a=>{const o={};return C(a,c=>{const l=xr(c.partialPath);C(l,u=>{o[u]=!0})}),o});let s=t;for(let a=1;a<=e;a++){const o=s;s=Is(o.length);for(let c=0;c{const y=xr(A.partialPath);C(y,v=>{i[c][v]=!0})})}}}}return r}function hr(n,e,t,r){const i=new kc(n,B.ALTERNATION,r);return e.accept(i),Sc(i.result,t)}function pr(n,e,t,r){const i=new kc(n,t);e.accept(i);const s=i.result,o=new jf(e,n,t).startWalking(),c=new he({definition:s}),l=new he({definition:o});return Sc([c,l],r)}function Vr(n,e){e:for(let t=0;t{const i=e[r];return t===i||i.categoryMatchesMap[t.tokenTypeIdx]})}function Ic(n){return $e(n,e=>$e(e,t=>$e(t,r=>D(r.categoryMatches))))}function zf(n){const e=n.lookaheadStrategy.validate({rules:n.rules,tokenTypes:n.tokenTypes,grammarName:n.grammarName});return S(e,t=>Object.assign({type:le.CUSTOM_LOOKAHEAD_VALIDATION},t))}function qf(n,e,t,r){const i=Re(n,c=>Yf(c,t)),s=oh(n,e,t),a=Re(n,c=>rh(c,t)),o=Re(n,c=>Qf(c,n,r,t));return i.concat(s,a,o)}function Yf(n,e){const t=new Jf;n.accept(t);const r=t.allProductions,i=mu(r,Xf),s=Pe(i,o=>o.length>1);return S(K(s),o=>{const c=be(o),l=e.buildDuplicateFoundError(n,o),u=Fe(c),d={message:l,type:le.DUPLICATE_PRODUCTIONS,ruleName:n.name,dslName:u,occurrence:c.idx},f=xc(c);return f&&(d.parameter=f),d})}function Xf(n){return`${Fe(n)}_#_${n.idx}_#_${xc(n)}`}function xc(n){return n instanceof G?n.terminalType.name:n instanceof ce?n.nonTerminalName:""}class Jf extends Yt{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 Qf(n,e,t,r){const i=[];if(oe(e,(a,o)=>o.name===n.name?a+1:a,0)>1){const a=r.buildDuplicateRuleNameError({topLevelRule:n,grammarName:t});i.push({message:a,type:le.DUPLICATE_RULE_NAME,ruleName:n.name})}return i}function Zf(n,e,t){const r=[];let i;return ue(e,n)||(i=`Invalid rule override, rule: ->${n}<- cannot be overridden in the grammar: ->${t}<-as it is not defined in any of the super grammars `,r.push({message:i,type:le.INVALID_RULE_OVERRIDE,ruleName:n})),r}function Nc(n,e,t,r=[]){const i=[],s=wn(e.definition);if(D(s))return[];{const a=n.name;ue(s,n)&&i.push({message:t.buildLeftRecursionError({topLevelRule:n,leftRecursionPath:r}),type:le.LEFT_RECURSION,ruleName:a});const c=nr(s,r.concat([n])),l=Re(c,u=>{const d=te(r);return d.push(u),Nc(n,u,t,d)});return i.concat(l)}}function wn(n){let e=[];if(D(n))return e;const t=be(n);if(t instanceof ce)e.push(t.referencedRule);else if(t instanceof he||t instanceof ee||t instanceof Ee||t instanceof ke||t instanceof pe||t instanceof W)e=e.concat(wn(t.definition));else if(t instanceof me)e=Ne(S(t.definition,s=>wn(s.definition)));else if(!(t instanceof G))throw Error("non exhaustive match");const r=Mn(t),i=n.length>1;if(r&&i){const s=J(n);return e.concat(wn(s))}else return e}class $i extends Yt{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}}function eh(n,e){const t=new $i;n.accept(t);const r=t.alternations;return Re(r,s=>{const a=ln(s.definition);return Re(a,(o,c)=>{const l=Ec([o],[],gn,1);return D(l)?[{message:e.buildEmptyAlternationError({topLevelRule:n,alternation:s,emptyChoiceIdx:c}),type:le.NONE_LAST_EMPTY_ALT,ruleName:n.name,occurrence:s.idx,alternative:c+1}]:[]})})}function th(n,e,t){const r=new $i;n.accept(r);let i=r.alternations;return i=rr(i,a=>a.ignoreAmbiguities===!0),Re(i,a=>{const o=a.idx,c=a.maxLookahead||e,l=hr(o,n,c,a),u=sh(l,a,n,t),d=ah(l,a,n,t);return u.concat(d)})}class nh extends Yt{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 rh(n,e){const t=new $i;n.accept(t);const r=t.alternations;return Re(r,s=>s.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:n,alternation:s}),type:le.TOO_MANY_ALTS,ruleName:n.name,occurrence:s.idx}]:[])}function ih(n,e,t){const r=[];return C(n,i=>{const s=new nh;i.accept(s);const a=s.allProductions;C(a,o=>{const c=Li(o),l=o.maxLookahead||e,u=o.idx,f=pr(u,i,c,l)[0];if(D(Ne(f))){const h=t.buildEmptyRepetitionError({topLevelRule:i,repetition:o});r.push({message:h,type:le.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),r}function sh(n,e,t,r){const i=[],s=oe(n,(o,c,l)=>(e.definition[l].ignoreAmbiguities===!0||C(c,u=>{const d=[l];C(n,(f,h)=>{l!==h&&Vr(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&d.push(h)}),d.length>1&&!Vr(i,u)&&(i.push(u),o.push({alts:d,path:u}))}),o),[]);return S(s,o=>{const c=S(o.alts,u=>u+1);return{message:r.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:c,prefixPath:o.path}),type:le.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:o.alts}})}function ah(n,e,t,r){const i=oe(n,(a,o,c)=>{const l=S(o,u=>({idx:c,path:u}));return a.concat(l)},[]);return hn(Re(i,a=>{if(e.definition[a.idx].ignoreAmbiguities===!0)return[];const c=a.idx,l=a.path,u=ve(i,f=>e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{const h=[f.idx+1,c+1],m=e.idx===0?"":e.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:h,prefixPath:f.path}),type:le.AMBIGUOUS_PREFIX_ALTS,ruleName:t.name,occurrence:m,alternatives:h}})}))}function oh(n,e,t){const r=[],i=S(e,s=>s.name);return C(n,s=>{const a=s.name;if(ue(i,a)){const o=t.buildNamespaceConflictError(s);r.push({message:o,type:le.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:a})}}),r}function ch(n){const e=Ri(n,{errMsgProvider:$f}),t={};return C(n.rules,r=>{t[r.name]=r}),Of(t,e.errMsgProvider)}function lh(n){return n=Ri(n,{errMsgProvider:lt}),qf(n.rules,n.tokenTypes,n.errMsgProvider,n.grammarName)}const Cc="MismatchedTokenException",_c="NoViableAltException",wc="EarlyExitException",Lc="NotAllInputParsedException",$c=[Cc,_c,wc,Lc];Object.freeze($c);function Gn(n){return ue($c,n.name)}class mr 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 Oc extends mr{constructor(e,t,r){super(e,t),this.previousToken=r,this.name=Cc}}class uh extends mr{constructor(e,t,r){super(e,t),this.previousToken=r,this.name=_c}}class dh extends mr{constructor(e,t){super(e,t),this.name=Lc}}class fh extends mr{constructor(e,t,r){super(e,t),this.previousToken=r,this.name=wc}}const Nr={},bc="InRuleRecoveryException";class hh extends Error{constructor(e){super(e),this.name=bc}}class ph{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=_(e,"recoveryEnabled")?e.recoveryEnabled:Ye.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=mh)}getTokenToInsert(e){const t=wi(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,r,i){const s=this.findReSyncTokenType(),a=this.exportLexerState(),o=[];let c=!1;const l=this.LA(1);let u=this.LA(1);const d=()=>{const f=this.LA(0),h=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:l,previous:f,ruleName:this.getCurrRuleFullName()}),m=new Oc(h,l,this.LA(0));m.resyncedTokens=ln(o),this.SAVE_ERROR(m)};for(;!c;)if(this.tokenMatcher(u,i)){d();return}else if(r.call(this)){d(),e.apply(this,t);return}else this.tokenMatcher(u,s)?c=!0:(u=this.SKIP_TOKEN(),this.addToResyncTokens(u,o));this.importLexerState(a)}shouldInRepetitionRecoveryBeTried(e,t,r){return!(r===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))}getFollowsForInRuleRecovery(e,t){const r=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(r)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){const r=this.SKIP_TOKEN();return this.consumeToken(),r}throw new hh("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e)||D(t))return!1;const r=this.LA(1);return Dt(t,s=>this.tokenMatcher(r,s))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),r=this.getFollowSetFromFollowKey(t);return ue(r,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),r=2;for(;;){const i=Dt(e,s=>vc(t,s));if(i!==void 0)return i;t=this.LA(r),r++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return Nr;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),r=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(r)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return S(e,(r,i)=>i===0?Nr:{ruleName:this.shortRuleNameToFullName(r),idxInCallingRule:t[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){const e=S(this.buildFullFollowKeyStack(),t=>this.getFollowSetFromFollowKey(t));return Ne(e)}getFollowSetFromFollowKey(e){if(e===Nr)return[tt];const t=e.ruleName+e.idxInCallingRule+uc+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,tt)||t.push(e),t}reSyncTo(e){const t=[];let r=this.LA(1);for(;this.tokenMatcher(r,e)===!1;)r=this.SKIP_TOKEN(),this.addToResyncTokens(r,t);return ln(t)}attemptInRepetitionRecovery(e,t,r,i,s,a,o){}getCurrentGrammarPath(e,t){const r=this.getHumanReadableRuleStack(),i=te(this.RULE_OCCURRENCE_STACK);return{ruleStack:r,occurrenceStack:i,lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return S(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}}function mh(n,e,t,r,i,s,a){const o=this.getKeyForAutomaticLookahead(r,i);let c=this.firstAfterRepMap[o];if(c===void 0){const f=this.getCurrRuleFullName(),h=this.getGAstProductions()[f];c=new s(h,i).startWalking(),this.firstAfterRepMap[o]=c}let l=c.token,u=c.occurrence;const d=c.isEndOfRule;this.RULE_STACK.length===1&&d&&l===void 0&&(l=tt,u=1),!(l===void 0||u===void 0)&&this.shouldInRepetitionRecoveryBeTried(l,u,a)&&this.tryInRepetitionRecovery(n,e,t,l)}const gh=4,it=8,Pc=1<Nc(t,t,lt))}validateEmptyOrAlternatives(e){return Re(e,t=>eh(t,lt))}validateAmbiguousAlternationAlternatives(e,t){return Re(e,r=>th(r,t,lt))}validateSomeNonEmptyLookaheadPath(e,t){return ih(e,t,lt)}buildLookaheadForAlternation(e){return Uf(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,Vf)}buildLookaheadForOptional(e){return Bf(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,Li(e.prodType),Wf)}}class yh{initLooksAhead(e){this.dynamicTokensEnabled=_(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Ye.dynamicTokensEnabled,this.maxLookahead=_(e,"maxLookahead")?e.maxLookahead:Ye.maxLookahead,this.lookaheadStrategy=_(e,"lookaheadStrategy")?e.lookaheadStrategy:new Oi({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){C(e,t=>{this.TRACE_INIT(`${t.name} Rule Lookahead`,()=>{const{alternation:r,repetition:i,option:s,repetitionMandatory:a,repetitionMandatoryWithSeparator:o,repetitionWithSeparator:c}=Rh(t);C(r,l=>{const u=l.idx===0?"":l.idx;this.TRACE_INIT(`${Fe(l)}${u}`,()=>{const d=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:l.idx,rule:t,maxLookahead:l.maxLookahead||this.maxLookahead,hasPredicates:l.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),f=Cr(this.fullRuleNameToShort[t.name],Pc,l.idx);this.setLaFuncCache(f,d)})}),C(i,l=>{this.computeLookaheadFunc(t,l.idx,Wr,"Repetition",l.maxLookahead,Fe(l))}),C(s,l=>{this.computeLookaheadFunc(t,l.idx,Mc,"Option",l.maxLookahead,Fe(l))}),C(a,l=>{this.computeLookaheadFunc(t,l.idx,jr,"RepetitionMandatory",l.maxLookahead,Fe(l))}),C(o,l=>{this.computeLookaheadFunc(t,l.idx,Ln,"RepetitionMandatoryWithSeparator",l.maxLookahead,Fe(l))}),C(c,l=>{this.computeLookaheadFunc(t,l.idx,Hr,"RepetitionWithSeparator",l.maxLookahead,Fe(l))})})})}computeLookaheadFunc(e,t,r,i,s,a){this.TRACE_INIT(`${a}${t===0?"":t}`,()=>{const o=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:s||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),c=Cr(this.fullRuleNameToShort[e.name],r,t);this.setLaFuncCache(c,o)})}getKeyForAutomaticLookahead(e,t){const r=this.getLastExplicitRuleShortName();return Cr(r,e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}}class Th extends Yt{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)}}const In=new Th;function Rh(n){In.reset(),n.accept(In);const e=In.dslMethods;return In.reset(),e}function xs(n,e){isNaN(n.startOffset)===!0?(n.startOffset=e.startOffset,n.endOffset=e.endOffset):n.endOffseta.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: + ${s.join(` + +`).replace(/\n/g,` + `)}`)}}};return t.prototype=r,t.prototype.constructor=t,t._RULE_NAMES=e,t}function Ih(n,e,t){const r=function(){};Dc(r,n+"BaseSemanticsWithDefaults");const i=Object.create(t.prototype);return C(e,s=>{i[s]=kh}),r.prototype=i,r.prototype.constructor=r,r}var Kr;(function(n){n[n.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",n[n.MISSING_METHOD=1]="MISSING_METHOD"})(Kr||(Kr={}));function xh(n,e){return Nh(n,e)}function Nh(n,e){const t=ve(e,i=>mt(n[i])===!1),r=S(t,i=>({msg:`Missing visitor method: <${i}> on ${n.constructor.name} CST Visitor.`,type:Kr.MISSING_METHOD,methodName:i}));return hn(r)}class Ch{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=_(e,"nodeLocationTracking")?e.nodeLocationTracking:Ye.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=q,this.cstFinallyStateUpdate=q,this.cstPostTerminal=q,this.cstPostNonTerminal=q,this.cstPostRule=q;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Ns,this.setNodeLocationFromNode=Ns,this.cstPostRule=q,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=q,this.setNodeLocationFromNode=q,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=xs,this.setNodeLocationFromNode=xs,this.cstPostRule=q,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=q,this.setNodeLocationFromNode=q,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=q,this.setNodeLocationFromNode=q,this.cstPostRule=q,this.setInitialNodeLocation=q;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}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),r=e.location;r.startOffset<=t.startOffset?(r.endOffset=t.endOffset,r.endLine=t.endLine,r.endColumn=t.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),r=e.location;r.startOffset<=t.startOffset?r.endOffset=t.endOffset:r.startOffset=NaN}cstPostTerminal(e,t){const r=this.CST_STACK[this.CST_STACK.length-1];Ah(r,t,e),this.setNodeLocationFromToken(r.location,t)}cstPostNonTerminal(e,t){const r=this.CST_STACK[this.CST_STACK.length-1];vh(r,t,e),this.setNodeLocationFromNode(r.location,e.location)}getBaseCstVisitorConstructor(){if(ze(this.baseCstVisitorConstructor)){const e=Sh(this.className,Mt(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(ze(this.baseCstVisitorWithDefaultsConstructor)){const e=Ih(this.className,Mt(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 _h{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing 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)):Bn}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?Bn: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 wh{ACTION(e){return e.call(this)}consume(e,t,r){return this.consumeInternal(t,e,r)}subrule(e,t,r){return this.subruleInternal(t,e,r)}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,r=Vn){if(ue(this.definedRulesNames,e)){const a={message:lt.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:le.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);const i=this.defineRule(e,t,r);return this[e]=i,i}OVERRIDE_RULE(e,t,r=Vn){const i=Zf(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);const s=this.defineRule(e,t,r);return this[e]=s,s}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const r=this.saveRecogState();try{return e.apply(this,t),!0}catch(i){if(Gn(i))return!1;throw i}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return Dd(K(this.gastProductionsCache))}}class Lh{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Fn,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},_(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 + For Further details.`);if(Z(e)){if(D(e))throw Error(`A Token Vocabulary cannot be empty. + Note that the first argument for the parser constructor + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 + For Further details.`)}if(Z(e))this.tokensMap=oe(e,(s,a)=>(s[a.name]=a,s),{});else if(_(e,"modes")&&$e(Ne(K(e.modes)),Cf)){const s=Ne(K(e.modes)),a=Ai(s);this.tokensMap=oe(a,(o,c)=>(o[c.name]=c,o),{})}else if(zl(e))this.tokensMap=te(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=tt;const r=_(e,"modes")?Ne(K(e.modes)):K(e),i=$e(r,s=>D(s.categoryMatches));this.tokenMatcher=i?Fn:gn,yn(K(this.tokensMap))}defineRule(e,t,r){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const i=_(r,"resyncEnabled")?r.resyncEnabled:Vn.resyncEnabled,s=_(r,"recoveryValueFunc")?r.recoveryValueFunc:Vn.recoveryValueFunc,a=this.ruleShortNameIdx<a.call(this)&&o.call(this)}}else s=e;if(i.call(this)===!0)return s.call(this)}atLeastOneInternal(e,t){const r=this.getKeyForAutomaticLookahead(jr,e);return this.atLeastOneInternalLogic(e,t,r)}atLeastOneInternalLogic(e,t,r){let i=this.getLaFuncFromCache(r),s;if(typeof t!="function"){s=t.DEF;const a=t.GATE;if(a!==void 0){const o=i;i=()=>a.call(this)&&o.call(this)}}else s=t;if(i.call(this)===!0){let a=this.doSingleRepetition(s);for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(s)}else throw this.raiseEarlyExitException(e,B.REPETITION_MANDATORY,t.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,jr,e,Ff)}atLeastOneSepFirstInternal(e,t){const r=this.getKeyForAutomaticLookahead(Ln,e);this.atLeastOneSepFirstInternalLogic(e,t,r)}atLeastOneSepFirstInternalLogic(e,t,r){const i=t.DEF,s=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){i.call(this);const o=()=>this.tokenMatcher(this.LA(1),s);for(;this.tokenMatcher(this.LA(1),s)===!0;)this.CONSUME(s),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,s,o,i,ks],o,Ln,e,ks)}else throw this.raiseEarlyExitException(e,B.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG)}manyInternal(e,t){const r=this.getKeyForAutomaticLookahead(Wr,e);return this.manyInternalLogic(e,t,r)}manyInternalLogic(e,t,r){let i=this.getLaFuncFromCache(r),s;if(typeof t!="function"){s=t.DEF;const o=t.GATE;if(o!==void 0){const c=i;i=()=>o.call(this)&&c.call(this)}}else s=t;let a=!0;for(;i.call(this)===!0&&a===!0;)a=this.doSingleRepetition(s);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,Wr,e,Df,a)}manySepFirstInternal(e,t){const r=this.getKeyForAutomaticLookahead(Hr,e);this.manySepFirstInternalLogic(e,t,r)}manySepFirstInternalLogic(e,t,r){const i=t.DEF,s=t.SEP;if(this.getLaFuncFromCache(r).call(this)===!0){i.call(this);const o=()=>this.tokenMatcher(this.LA(1),s);for(;this.tokenMatcher(this.LA(1),s)===!0;)this.CONSUME(s),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,s,o,i,Es],o,Hr,e,Es)}}repetitionSepSecondInternal(e,t,r,i,s){for(;r();)this.CONSUME(t),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,r,i,s],r,Ln,e,s)}doSingleRepetition(e){const t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){const r=this.getKeyForAutomaticLookahead(Pc,t),i=Z(e)?e:e.DEF,a=this.getLaFuncFromCache(r).call(this,i);if(a!==void 0)return i[a].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new dh(t,e))}}subruleInternal(e,t,r){let i;try{const s=r!==void 0?r.ARGS:void 0;return this.subruleIdx=t,i=e.apply(this,s),this.cstPostNonTerminal(i,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),i}catch(s){throw this.subruleInternalError(s,r,e.ruleName)}}subruleInternalError(e,t,r){throw Gn(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:r),delete e.partialCstResult),e}consumeInternal(e,t,r){let i;try{const s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),i=s):this.consumeInternalError(e,s,r)}catch(s){i=this.consumeInternalRecovery(e,t,s)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,i),i}consumeInternalError(e,t,r){let i;const s=this.LA(0);throw r!==void 0&&r.ERR_MSG?i=r.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Oc(i,t,s))}consumeInternalRecovery(e,t,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(s){throw s.name===bc?r:s}}else throw r}saveRecogState(){const e=this.errors,t=te(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,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),tt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}class $h{initErrorHandler(e){this._errors=[],this.errorMessageProvider=_(e,"errorMessageProvider")?e.errorMessageProvider:Ye.errorMessageProvider}SAVE_ERROR(e){if(Gn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:te(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return te(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,r){const i=this.getCurrRuleFullName(),s=this.getGAstProductions()[i],o=pr(e,s,t,this.maxLookahead)[0],c=[];for(let u=1;u<=this.maxLookahead;u++)c.push(this.LA(u));const l=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:o,actual:c,previous:this.LA(0),customUserDescription:r,ruleName:i});throw this.SAVE_ERROR(new fh(l,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const r=this.getCurrRuleFullName(),i=this.getGAstProductions()[r],s=hr(e,i,this.maxLookahead),a=[];for(let l=1;l<=this.maxLookahead;l++)a.push(this.LA(l));const o=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:a,previous:o,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new uh(c,this.LA(1),o))}}class Oh{initContentAssist(){}computeContentAssist(e,t){const r=this.gastProductionsCache[e];if(ze(r))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return Ec([r],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=be(e.ruleStack),i=this.getGAstProductions()[t];return new Mf(i,e).startWalking()}}const gr={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(gr);const Cs=!0,_s=Math.pow(2,it)-1,Fc=Ac({name:"RECORDING_PHASE_TOKEN",pattern:de.NA});yn([Fc]);const Gc=wi(Fc,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Gc);const bh={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}};class Ph{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(r,i){return this.consumeInternalRecord(r,e,i)},this[`SUBRULE${t}`]=function(r,i){return this.subruleInternalRecord(r,e,i)},this[`OPTION${t}`]=function(r){return this.optionInternalRecord(r,e)},this[`OR${t}`]=function(r){return this.orInternalRecord(r,e)},this[`MANY${t}`]=function(r){this.manyInternalRecord(e,r)},this[`MANY_SEP${t}`]=function(r){this.manySepFirstInternalRecord(e,r)},this[`AT_LEAST_ONE${t}`]=function(r){this.atLeastOneInternalRecord(e,r)},this[`AT_LEAST_ONE_SEP${t}`]=function(r){this.atLeastOneSepFirstInternalRecord(e,r)}}this.consume=function(e,t,r){return this.consumeInternalRecord(t,e,r)},this.subrule=function(e,t,r){return this.subruleInternalRecord(t,e,r)},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 r=t>0?t:"";delete e[`CONSUME${r}`],delete e[`SUBRULE${r}`],delete e[`OPTION${r}`],delete e[`OR${r}`],delete e[`MANY${r}`],delete e[`MANY_SEP${r}`],delete e[`AT_LEAST_ONE${r}`],delete e[`AT_LEAST_ONE_SEP${r}`]}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 Bn}topLevelRuleRecord(e,t){try{const r=new qt({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),t.call(this),this.recordingProdStack.pop(),r}catch(r){if(r.KNOWN_RECORDER_ERROR!==!0)try{r.message=r.message+` + This error was thrown during the "grammar recording phase" For more info see: + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw r}throw r}}optionInternalRecord(e,t){return rn.call(this,ee,e,t)}atLeastOneInternalRecord(e,t){rn.call(this,Ee,t,e)}atLeastOneSepFirstInternalRecord(e,t){rn.call(this,ke,t,e,Cs)}manyInternalRecord(e,t){rn.call(this,W,t,e)}manySepFirstInternalRecord(e,t){rn.call(this,pe,t,e,Cs)}orInternalRecord(e,t){return Mh.call(this,e,t)}subruleInternalRecord(e,t,r){if(Un(t),!e||_(e,"ruleName")===!1){const o=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw o.KNOWN_RECORDER_ERROR=!0,o}const i=Ft(this.recordingProdStack),s=e.ruleName,a=new ce({idx:t,nonTerminalName:s,label:r==null?void 0:r.LABEL,referencedRule:void 0});return i.definition.push(a),this.outputCst?bh:gr}consumeInternalRecord(e,t,r){if(Un(t),!Tc(e)){const a=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> + inside top level rule: <${this.recordingProdStack[0].name}>`);throw a.KNOWN_RECORDER_ERROR=!0,a}const i=Ft(this.recordingProdStack),s=new G({idx:t,terminalType:e,label:r==null?void 0:r.LABEL});return i.definition.push(s),Gc}}function rn(n,e,t,r=!1){Un(t);const i=Ft(this.recordingProdStack),s=mt(e)?e:e.DEF,a=new n({definition:[],idx:t});return r&&(a.separator=e.SEP),_(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),gr}function Mh(n,e){Un(e);const t=Ft(this.recordingProdStack),r=Z(n)===!1,i=r===!1?n:n.DEF,s=new me({definition:[],idx:e,ignoreAmbiguities:r&&n.IGNORE_AMBIGUITIES===!0});_(n,"MAX_LOOKAHEAD")&&(s.maxLookahead=n.MAX_LOOKAHEAD);const a=fo(i,o=>mt(o.GATE));return s.hasPredicates=a,t.definition.push(s),C(i,o=>{const c=new he({definition:[]});s.definition.push(c),_(o,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=o.IGNORE_AMBIGUITIES:_(o,"GATE")&&(c.ignoreAmbiguities=!0),this.recordingProdStack.push(c),o.ALT.call(this),this.recordingProdStack.pop()}),gr}function ws(n){return n===0?"":`${n}`}function Un(n){if(n<0||n>_s){const e=new Error(`Invalid DSL Method idx value: <${n}> + Idx value must be a none negative value smaller than ${_s+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}class Dh{initPerformanceTracer(e){if(_(e,"traceInitPerf")){const t=e.traceInitPerf,r=typeof t=="number";this.traceInitMaxIdent=r?t:1/0,this.traceInitPerf=r?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Ye.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;const r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);const{time:i,value:s}=cc(t),a=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,s}else return t()}}function Fh(n,e){e.forEach(t=>{const r=t.prototype;Object.getOwnPropertyNames(r).forEach(i=>{if(i==="constructor")return;const s=Object.getOwnPropertyDescriptor(r,i);s&&(s.get||s.set)?Object.defineProperty(n.prototype,i,s):n.prototype[i]=t.prototype[i]})})}const Bn=wi(tt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Bn);const Ye=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:At,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Vn=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var le;(function(n){n[n.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",n[n.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",n[n.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",n[n.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",n[n.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",n[n.LEFT_RECURSION=5]="LEFT_RECURSION",n[n.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",n[n.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",n[n.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",n[n.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",n[n.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",n[n.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",n[n.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",n[n.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(le||(le={}));function Ls(n=void 0){return function(){return n}}class Tn{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \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",()=>{lc(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),C(this.definedRulesNames,i=>{const a=this[i].originalGrammarAction;let o;this.TRACE_INIT(`${i} Rule`,()=>{o=this.topLevelRuleRecord(i,a)}),this.gastProductionsCache[i]=o})}finally{this.disableRecording()}});let r=[];if(this.TRACE_INIT("Grammar Resolving",()=>{r=ch({rules:K(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(r)}),this.TRACE_INIT("Grammar Validations",()=>{if(D(r)&&this.skipValidations===!1){const i=lh({rules:K(this.gastProductionsCache),tokenTypes:K(this.tokensMap),errMsgProvider:lt,grammarName:t}),s=zf({lookaheadStrategy:this.lookaheadStrategy,rules:K(this.gastProductionsCache),tokenTypes:K(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(i,s)}}),D(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{const i=jd(K(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,s;(s=(i=this.lookaheadStrategy).initialize)===null||s===void 0||s.call(i,{rules:K(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(K(this.gastProductionsCache))})),!Tn.DEFER_DEFINITION_ERRORS_HANDLING&&!D(this.definitionErrors))throw e=S(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: + ${e.join(` +------------------------------- +`)}`)})}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const r=this;if(r.initErrorHandler(t),r.initLexerAdapter(),r.initLooksAhead(t),r.initRecognizerEngine(e,t),r.initRecoverable(t),r.initTreeBuilder(t),r.initContentAssist(),r.initGastRecorder(t),r.initPerformanceTracer(t),_(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. + Please use the flag on the relevant DSL method instead. + See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES + For further details.`);this.skipValidations=_(t,"skipValidations")?t.skipValidations:Ye.skipValidations}}Tn.DEFER_DEFINITION_ERRORS_HANDLING=!1;Fh(Tn,[ph,yh,Ch,_h,Lh,wh,$h,Oh,Ph,Dh]);class Gh extends Tn{constructor(e,t=Ye){const r=te(t);r.outputCst=!1,super(e,r)}}function Ut(n,e,t){return`${n.name}_${e}_${t}`}const nt=1,Uh=2,Uc=4,Bc=5,Rn=7,Bh=8,Vh=9,Wh=10,jh=11,Vc=12;class bi{constructor(e){this.target=e}isEpsilon(){return!1}}class Pi extends bi{constructor(e,t){super(e),this.tokenType=t}}class Wc extends bi{constructor(e){super(e)}isEpsilon(){return!0}}class Mi extends bi{constructor(e,t,r){super(e),this.rule=t,this.followState=r}isEpsilon(){return!0}}function Hh(n){const e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};Kh(e,n);const t=n.length;for(let r=0;rjc(n,e,a));return Xt(n,e,r,t,...i)}function Qh(n,e,t){const r=Y(n,e,t,{type:nt});st(n,r);const i=Xt(n,e,r,t,yt(n,e,t));return Zh(n,e,t,i)}function yt(n,e,t){const r=ve(S(t.definition,i=>jc(n,e,i)),i=>i!==void 0);return r.length===1?r[0]:r.length===0?void 0:tp(n,r)}function Hc(n,e,t,r,i){const s=r.left,a=r.right,o=Y(n,e,t,{type:jh});st(n,o);const c=Y(n,e,t,{type:Vc});return s.loopback=o,c.loopback=o,n.decisionMap[Ut(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",t.idx)]=o,H(a,o),i===void 0?(H(o,s),H(o,c)):(H(o,c),H(o,i.left),H(i.right,s)),{left:s,right:c}}function Kc(n,e,t,r,i){const s=r.left,a=r.right,o=Y(n,e,t,{type:Wh});st(n,o);const c=Y(n,e,t,{type:Vc}),l=Y(n,e,t,{type:Vh});return o.loopback=l,c.loopback=l,H(o,s),H(o,c),H(a,l),i!==void 0?(H(l,c),H(l,i.left),H(i.right,s)):H(l,o),n.decisionMap[Ut(e,i?"RepetitionWithSeparator":"Repetition",t.idx)]=o,{left:o,right:c}}function Zh(n,e,t,r){const i=r.left,s=r.right;return H(i,s),n.decisionMap[Ut(e,"Option",t.idx)]=i,r}function st(n,e){return n.decisionStates.push(e),e.decision=n.decisionStates.length-1,e.decision}function Xt(n,e,t,r,...i){const s=Y(n,e,r,{type:Bh,start:t});t.end=s;for(const o of i)o!==void 0?(H(t,o.left),H(o.right,s)):H(t,s);const a={left:t,right:s};return n.decisionMap[Ut(e,ep(r),r.idx)]=t,a}function ep(n){if(n instanceof me)return"Alternation";if(n instanceof ee)return"Option";if(n instanceof W)return"Repetition";if(n instanceof pe)return"RepetitionWithSeparator";if(n instanceof Ee)return"RepetitionMandatory";if(n instanceof ke)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function tp(n,e){const t=e.length;for(let s=0;se.alt)}get key(){let e="";for(const t in this.map)e+=t+":";return e}}function zc(n,e=!0){return`${e?`a${n.alt}`:""}s${n.state.stateNumber}:${n.stack.map(t=>t.stateNumber.toString()).join("_")}`}function sp(n,e){const t={};return r=>{const i=r.toString();let s=t[i];return s!==void 0||(s={atnStartState:n,decision:e,states:{}},t[i]=s),s}}class qc{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 r=0;rconsole.log(r)}initialize(e){this.atn=Hh(e.rules),this.dfas=op(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){const{prodOccurrence:t,rule:r,hasPredicates:i,dynamicTokensEnabled:s}=e,a=this.dfas,o=this.logging,c=Ut(r,"Alternation",t),u=this.atn.decisionMap[c].decision,d=S(Ss({maxLookahead:1,occurrence:t,prodType:"Alternation",rule:r}),f=>S(f,h=>h[0]));if(Os(d,!1)&&!s){const f=oe(d,(h,m,g)=>(C(m,A=>{A&&(h[A.tokenTypeIdx]=g,C(A.categoryMatches,y=>{h[y]=g}))}),h),{});return i?function(h){var m;const g=this.LA(1),A=f[g.tokenTypeIdx];if(h!==void 0&&A!==void 0){const y=(m=h[A])===null||m===void 0?void 0:m.GATE;if(y!==void 0&&y.call(this)===!1)return}return A}:function(){const h=this.LA(1);return f[h.tokenTypeIdx]}}else return i?function(f){const h=new qc,m=f===void 0?0:f.length;for(let A=0;AS(f,h=>h[0]));if(Os(d)&&d[0][0]&&!s){const f=d[0],h=Ne(f);if(h.length===1&&D(h[0].categoryMatches)){const g=h[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===g}}else{const m=oe(h,(g,A)=>(A!==void 0&&(g[A.tokenTypeIdx]=!0,C(A.categoryMatches,y=>{g[y]=!0})),g),{});return function(){const g=this.LA(1);return m[g.tokenTypeIdx]===!0}}}return function(){const f=_r.call(this,a,u,$s,o);return typeof f=="object"?!1:f===0}}}function Os(n,e=!0){const t=new Set;for(const r of n){const i=new Set;for(const s of r){if(s===void 0){if(e)break;return!1}const a=[s.tokenTypeIdx].concat(s.categoryMatches);for(const o of a)if(t.has(o)){if(!i.has(o))return!1}else t.add(o),i.add(o)}}return!0}function op(n){const e=n.decisionStates.length,t=Array(e);for(let r=0;rEt(i)).join(", "),t=n.production.idx===0?"":n.production.idx;let r=`Ambiguous Alternatives Detected: <${n.ambiguityIndices.join(", ")}> in <${fp(n.production)}${t}> inside <${n.topLevelRule.name}> Rule, +<${e}> may appears as a prefix path in all these alternatives. +`;return r=r+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,r}function fp(n){if(n instanceof ce)return"SUBRULE";if(n instanceof ee)return"OPTION";if(n instanceof me)return"OR";if(n instanceof Ee)return"AT_LEAST_ONE";if(n instanceof ke)return"AT_LEAST_ONE_SEP";if(n instanceof pe)return"MANY_SEP";if(n instanceof W)return"MANY";if(n instanceof G)return"CONSUME";throw Error("non exhaustive match")}function hp(n,e,t){const r=Re(e.configs.elements,s=>s.state.transitions),i=ku(r.filter(s=>s instanceof Pi).map(s=>s.tokenType),s=>s.tokenTypeIdx);return{actualToken:t,possibleTokenTypes:i,tokenPath:n}}function pp(n,e){return n.edges[e.tokenTypeIdx]}function mp(n,e,t){const r=new zr,i=[];for(const a of n.elements){if(t.is(a.alt)===!1)continue;if(a.state.type===Rn){i.push(a);continue}const o=a.state.transitions.length;for(let c=0;c0&&!Ap(s))for(const a of i)s.add(a);return s}function gp(n,e){if(n instanceof Pi&&vc(e,n.tokenType))return n.target}function yp(n,e){let t;for(const r of n.elements)if(e.is(r.alt)===!0){if(t===void 0)t=r.alt;else if(t!==r.alt)return}return t}function Yc(n){return{configs:n,edges:{},isAcceptState:!1,prediction:-1}}function bs(n,e,t,r){return r=Xc(n,r),e.edges[t.tokenTypeIdx]=r,r}function Xc(n,e){if(e===Wn)return e;const t=e.configs.key,r=n.states[t];return r!==void 0?r:(e.configs.finalize(),n.states[t]=e,e)}function Tp(n){const e=new zr,t=n.transitions.length;for(let r=0;r0){const i=[...n.stack],a={state:i.pop(),alt:n.alt,stack:i};jn(a,e)}else e.add(n);return}t.epsilonOnlyTransitions||e.add(n);const r=t.transitions.length;for(let i=0;i1)return!0;return!1}function Ip(n){for(const e of Array.from(n.values()))if(Object.keys(e).length===1)return!0;return!1}var Ps;(function(n){function e(t){return typeof t=="string"}n.is=e})(Ps||(Ps={}));var qr;(function(n){function e(t){return typeof t=="string"}n.is=e})(qr||(qr={}));var Ms;(function(n){n.MIN_VALUE=-2147483648,n.MAX_VALUE=2147483647;function e(t){return typeof t=="number"&&n.MIN_VALUE<=t&&t<=n.MAX_VALUE}n.is=e})(Ms||(Ms={}));var Hn;(function(n){n.MIN_VALUE=0,n.MAX_VALUE=2147483647;function e(t){return typeof t=="number"&&n.MIN_VALUE<=t&&t<=n.MAX_VALUE}n.is=e})(Hn||(Hn={}));var P;(function(n){function e(r,i){return r===Number.MAX_VALUE&&(r=Hn.MAX_VALUE),i===Number.MAX_VALUE&&(i=Hn.MAX_VALUE),{line:r,character:i}}n.create=e;function t(r){let i=r;return p.objectLiteral(i)&&p.uinteger(i.line)&&p.uinteger(i.character)}n.is=t})(P||(P={}));var b;(function(n){function e(r,i,s,a){if(p.uinteger(r)&&p.uinteger(i)&&p.uinteger(s)&&p.uinteger(a))return{start:P.create(r,i),end:P.create(s,a)};if(P.is(r)&&P.is(i))return{start:r,end:i};throw new Error(`Range#create called with invalid arguments[${r}, ${i}, ${s}, ${a}]`)}n.create=e;function t(r){let i=r;return p.objectLiteral(i)&&P.is(i.start)&&P.is(i.end)}n.is=t})(b||(b={}));var Kn;(function(n){function e(r,i){return{uri:r,range:i}}n.create=e;function t(r){let i=r;return p.objectLiteral(i)&&b.is(i.range)&&(p.string(i.uri)||p.undefined(i.uri))}n.is=t})(Kn||(Kn={}));var Ds;(function(n){function e(r,i,s,a){return{targetUri:r,targetRange:i,targetSelectionRange:s,originSelectionRange:a}}n.create=e;function t(r){let i=r;return p.objectLiteral(i)&&b.is(i.targetRange)&&p.string(i.targetUri)&&b.is(i.targetSelectionRange)&&(b.is(i.originSelectionRange)||p.undefined(i.originSelectionRange))}n.is=t})(Ds||(Ds={}));var Yr;(function(n){function e(r,i,s,a){return{red:r,green:i,blue:s,alpha:a}}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&p.numberRange(i.red,0,1)&&p.numberRange(i.green,0,1)&&p.numberRange(i.blue,0,1)&&p.numberRange(i.alpha,0,1)}n.is=t})(Yr||(Yr={}));var Fs;(function(n){function e(r,i){return{range:r,color:i}}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&b.is(i.range)&&Yr.is(i.color)}n.is=t})(Fs||(Fs={}));var Gs;(function(n){function e(r,i,s){return{label:r,textEdit:i,additionalTextEdits:s}}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&p.string(i.label)&&(p.undefined(i.textEdit)||Vt.is(i))&&(p.undefined(i.additionalTextEdits)||p.typedArray(i.additionalTextEdits,Vt.is))}n.is=t})(Gs||(Gs={}));var Us;(function(n){n.Comment="comment",n.Imports="imports",n.Region="region"})(Us||(Us={}));var Bs;(function(n){function e(r,i,s,a,o,c){const l={startLine:r,endLine:i};return p.defined(s)&&(l.startCharacter=s),p.defined(a)&&(l.endCharacter=a),p.defined(o)&&(l.kind=o),p.defined(c)&&(l.collapsedText=c),l}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&p.uinteger(i.startLine)&&p.uinteger(i.startLine)&&(p.undefined(i.startCharacter)||p.uinteger(i.startCharacter))&&(p.undefined(i.endCharacter)||p.uinteger(i.endCharacter))&&(p.undefined(i.kind)||p.string(i.kind))}n.is=t})(Bs||(Bs={}));var Xr;(function(n){function e(r,i){return{location:r,message:i}}n.create=e;function t(r){let i=r;return p.defined(i)&&Kn.is(i.location)&&p.string(i.message)}n.is=t})(Xr||(Xr={}));var Vs;(function(n){n.Error=1,n.Warning=2,n.Information=3,n.Hint=4})(Vs||(Vs={}));var Ws;(function(n){n.Unnecessary=1,n.Deprecated=2})(Ws||(Ws={}));var js;(function(n){function e(t){const r=t;return p.objectLiteral(r)&&p.string(r.href)}n.is=e})(js||(js={}));var zn;(function(n){function e(r,i,s,a,o,c){let l={range:r,message:i};return p.defined(s)&&(l.severity=s),p.defined(a)&&(l.code=a),p.defined(o)&&(l.source=o),p.defined(c)&&(l.relatedInformation=c),l}n.create=e;function t(r){var i;let s=r;return p.defined(s)&&b.is(s.range)&&p.string(s.message)&&(p.number(s.severity)||p.undefined(s.severity))&&(p.integer(s.code)||p.string(s.code)||p.undefined(s.code))&&(p.undefined(s.codeDescription)||p.string((i=s.codeDescription)===null||i===void 0?void 0:i.href))&&(p.string(s.source)||p.undefined(s.source))&&(p.undefined(s.relatedInformation)||p.typedArray(s.relatedInformation,Xr.is))}n.is=t})(zn||(zn={}));var Bt;(function(n){function e(r,i,...s){let a={title:r,command:i};return p.defined(s)&&s.length>0&&(a.arguments=s),a}n.create=e;function t(r){let i=r;return p.defined(i)&&p.string(i.title)&&p.string(i.command)}n.is=t})(Bt||(Bt={}));var Vt;(function(n){function e(s,a){return{range:s,newText:a}}n.replace=e;function t(s,a){return{range:{start:s,end:s},newText:a}}n.insert=t;function r(s){return{range:s,newText:""}}n.del=r;function i(s){const a=s;return p.objectLiteral(a)&&p.string(a.newText)&&b.is(a.range)}n.is=i})(Vt||(Vt={}));var Jr;(function(n){function e(r,i,s){const a={label:r};return i!==void 0&&(a.needsConfirmation=i),s!==void 0&&(a.description=s),a}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&p.string(i.label)&&(p.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(p.string(i.description)||i.description===void 0)}n.is=t})(Jr||(Jr={}));var Wt;(function(n){function e(t){const r=t;return p.string(r)}n.is=e})(Wt||(Wt={}));var Hs;(function(n){function e(s,a,o){return{range:s,newText:a,annotationId:o}}n.replace=e;function t(s,a,o){return{range:{start:s,end:s},newText:a,annotationId:o}}n.insert=t;function r(s,a){return{range:s,newText:"",annotationId:a}}n.del=r;function i(s){const a=s;return Vt.is(a)&&(Jr.is(a.annotationId)||Wt.is(a.annotationId))}n.is=i})(Hs||(Hs={}));var Qr;(function(n){function e(r,i){return{textDocument:r,edits:i}}n.create=e;function t(r){let i=r;return p.defined(i)&&ri.is(i.textDocument)&&Array.isArray(i.edits)}n.is=t})(Qr||(Qr={}));var Zr;(function(n){function e(r,i,s){let a={kind:"create",uri:r};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}n.create=e;function t(r){let i=r;return i&&i.kind==="create"&&p.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||p.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||p.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Wt.is(i.annotationId))}n.is=t})(Zr||(Zr={}));var ei;(function(n){function e(r,i,s,a){let o={kind:"rename",oldUri:r,newUri:i};return s!==void 0&&(s.overwrite!==void 0||s.ignoreIfExists!==void 0)&&(o.options=s),a!==void 0&&(o.annotationId=a),o}n.create=e;function t(r){let i=r;return i&&i.kind==="rename"&&p.string(i.oldUri)&&p.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||p.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||p.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||Wt.is(i.annotationId))}n.is=t})(ei||(ei={}));var ti;(function(n){function e(r,i,s){let a={kind:"delete",uri:r};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(a.options=i),s!==void 0&&(a.annotationId=s),a}n.create=e;function t(r){let i=r;return i&&i.kind==="delete"&&p.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||p.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||p.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||Wt.is(i.annotationId))}n.is=t})(ti||(ti={}));var ni;(function(n){function e(t){let r=t;return r&&(r.changes!==void 0||r.documentChanges!==void 0)&&(r.documentChanges===void 0||r.documentChanges.every(i=>p.string(i.kind)?Zr.is(i)||ei.is(i)||ti.is(i):Qr.is(i)))}n.is=e})(ni||(ni={}));var Ks;(function(n){function e(r){return{uri:r}}n.create=e;function t(r){let i=r;return p.defined(i)&&p.string(i.uri)}n.is=t})(Ks||(Ks={}));var zs;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){let i=r;return p.defined(i)&&p.string(i.uri)&&p.integer(i.version)}n.is=t})(zs||(zs={}));var ri;(function(n){function e(r,i){return{uri:r,version:i}}n.create=e;function t(r){let i=r;return p.defined(i)&&p.string(i.uri)&&(i.version===null||p.integer(i.version))}n.is=t})(ri||(ri={}));var qs;(function(n){function e(r,i,s,a){return{uri:r,languageId:i,version:s,text:a}}n.create=e;function t(r){let i=r;return p.defined(i)&&p.string(i.uri)&&p.string(i.languageId)&&p.integer(i.version)&&p.string(i.text)}n.is=t})(qs||(qs={}));var ii;(function(n){n.PlainText="plaintext",n.Markdown="markdown";function e(t){const r=t;return r===n.PlainText||r===n.Markdown}n.is=e})(ii||(ii={}));var un;(function(n){function e(t){const r=t;return p.objectLiteral(t)&&ii.is(r.kind)&&p.string(r.value)}n.is=e})(un||(un={}));var Ys;(function(n){n.Text=1,n.Method=2,n.Function=3,n.Constructor=4,n.Field=5,n.Variable=6,n.Class=7,n.Interface=8,n.Module=9,n.Property=10,n.Unit=11,n.Value=12,n.Enum=13,n.Keyword=14,n.Snippet=15,n.Color=16,n.File=17,n.Reference=18,n.Folder=19,n.EnumMember=20,n.Constant=21,n.Struct=22,n.Event=23,n.Operator=24,n.TypeParameter=25})(Ys||(Ys={}));var Xs;(function(n){n.PlainText=1,n.Snippet=2})(Xs||(Xs={}));var Js;(function(n){n.Deprecated=1})(Js||(Js={}));var Qs;(function(n){function e(r,i,s){return{newText:r,insert:i,replace:s}}n.create=e;function t(r){const i=r;return i&&p.string(i.newText)&&b.is(i.insert)&&b.is(i.replace)}n.is=t})(Qs||(Qs={}));var Zs;(function(n){n.asIs=1,n.adjustIndentation=2})(Zs||(Zs={}));var ea;(function(n){function e(t){const r=t;return r&&(p.string(r.detail)||r.detail===void 0)&&(p.string(r.description)||r.description===void 0)}n.is=e})(ea||(ea={}));var ta;(function(n){function e(t){return{label:t}}n.create=e})(ta||(ta={}));var na;(function(n){function e(t,r){return{items:t||[],isIncomplete:!!r}}n.create=e})(na||(na={}));var qn;(function(n){function e(r){return r.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}n.fromPlainText=e;function t(r){const i=r;return p.string(i)||p.objectLiteral(i)&&p.string(i.language)&&p.string(i.value)}n.is=t})(qn||(qn={}));var ra;(function(n){function e(t){let r=t;return!!r&&p.objectLiteral(r)&&(un.is(r.contents)||qn.is(r.contents)||p.typedArray(r.contents,qn.is))&&(t.range===void 0||b.is(t.range))}n.is=e})(ra||(ra={}));var ia;(function(n){function e(t,r){return r?{label:t,documentation:r}:{label:t}}n.create=e})(ia||(ia={}));var sa;(function(n){function e(t,r,...i){let s={label:t};return p.defined(r)&&(s.documentation=r),p.defined(i)?s.parameters=i:s.parameters=[],s}n.create=e})(sa||(sa={}));var aa;(function(n){n.Text=1,n.Read=2,n.Write=3})(aa||(aa={}));var oa;(function(n){function e(t,r){let i={range:t};return p.number(r)&&(i.kind=r),i}n.create=e})(oa||(oa={}));var ca;(function(n){n.File=1,n.Module=2,n.Namespace=3,n.Package=4,n.Class=5,n.Method=6,n.Property=7,n.Field=8,n.Constructor=9,n.Enum=10,n.Interface=11,n.Function=12,n.Variable=13,n.Constant=14,n.String=15,n.Number=16,n.Boolean=17,n.Array=18,n.Object=19,n.Key=20,n.Null=21,n.EnumMember=22,n.Struct=23,n.Event=24,n.Operator=25,n.TypeParameter=26})(ca||(ca={}));var la;(function(n){n.Deprecated=1})(la||(la={}));var ua;(function(n){function e(t,r,i,s,a){let o={name:t,kind:r,location:{uri:s,range:i}};return a&&(o.containerName=a),o}n.create=e})(ua||(ua={}));var da;(function(n){function e(t,r,i,s){return s!==void 0?{name:t,kind:r,location:{uri:i,range:s}}:{name:t,kind:r,location:{uri:i}}}n.create=e})(da||(da={}));var fa;(function(n){function e(r,i,s,a,o,c){let l={name:r,detail:i,kind:s,range:a,selectionRange:o};return c!==void 0&&(l.children=c),l}n.create=e;function t(r){let i=r;return i&&p.string(i.name)&&p.number(i.kind)&&b.is(i.range)&&b.is(i.selectionRange)&&(i.detail===void 0||p.string(i.detail))&&(i.deprecated===void 0||p.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}n.is=t})(fa||(fa={}));var ha;(function(n){n.Empty="",n.QuickFix="quickfix",n.Refactor="refactor",n.RefactorExtract="refactor.extract",n.RefactorInline="refactor.inline",n.RefactorRewrite="refactor.rewrite",n.Source="source",n.SourceOrganizeImports="source.organizeImports",n.SourceFixAll="source.fixAll"})(ha||(ha={}));var Yn;(function(n){n.Invoked=1,n.Automatic=2})(Yn||(Yn={}));var pa;(function(n){function e(r,i,s){let a={diagnostics:r};return i!=null&&(a.only=i),s!=null&&(a.triggerKind=s),a}n.create=e;function t(r){let i=r;return p.defined(i)&&p.typedArray(i.diagnostics,zn.is)&&(i.only===void 0||p.typedArray(i.only,p.string))&&(i.triggerKind===void 0||i.triggerKind===Yn.Invoked||i.triggerKind===Yn.Automatic)}n.is=t})(pa||(pa={}));var ma;(function(n){function e(r,i,s){let a={title:r},o=!0;return typeof i=="string"?(o=!1,a.kind=i):Bt.is(i)?a.command=i:a.edit=i,o&&s!==void 0&&(a.kind=s),a}n.create=e;function t(r){let i=r;return i&&p.string(i.title)&&(i.diagnostics===void 0||p.typedArray(i.diagnostics,zn.is))&&(i.kind===void 0||p.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||Bt.is(i.command))&&(i.isPreferred===void 0||p.boolean(i.isPreferred))&&(i.edit===void 0||ni.is(i.edit))}n.is=t})(ma||(ma={}));var ga;(function(n){function e(r,i){let s={range:r};return p.defined(i)&&(s.data=i),s}n.create=e;function t(r){let i=r;return p.defined(i)&&b.is(i.range)&&(p.undefined(i.command)||Bt.is(i.command))}n.is=t})(ga||(ga={}));var ya;(function(n){function e(r,i){return{tabSize:r,insertSpaces:i}}n.create=e;function t(r){let i=r;return p.defined(i)&&p.uinteger(i.tabSize)&&p.boolean(i.insertSpaces)}n.is=t})(ya||(ya={}));var Ta;(function(n){function e(r,i,s){return{range:r,target:i,data:s}}n.create=e;function t(r){let i=r;return p.defined(i)&&b.is(i.range)&&(p.undefined(i.target)||p.string(i.target))}n.is=t})(Ta||(Ta={}));var Ra;(function(n){function e(r,i){return{range:r,parent:i}}n.create=e;function t(r){let i=r;return p.objectLiteral(i)&&b.is(i.range)&&(i.parent===void 0||n.is(i.parent))}n.is=t})(Ra||(Ra={}));var Aa;(function(n){n.namespace="namespace",n.type="type",n.class="class",n.enum="enum",n.interface="interface",n.struct="struct",n.typeParameter="typeParameter",n.parameter="parameter",n.variable="variable",n.property="property",n.enumMember="enumMember",n.event="event",n.function="function",n.method="method",n.macro="macro",n.keyword="keyword",n.modifier="modifier",n.comment="comment",n.string="string",n.number="number",n.regexp="regexp",n.operator="operator",n.decorator="decorator"})(Aa||(Aa={}));var va;(function(n){n.declaration="declaration",n.definition="definition",n.readonly="readonly",n.static="static",n.deprecated="deprecated",n.abstract="abstract",n.async="async",n.modification="modification",n.documentation="documentation",n.defaultLibrary="defaultLibrary"})(va||(va={}));var Ea;(function(n){function e(t){const r=t;return p.objectLiteral(r)&&(r.resultId===void 0||typeof r.resultId=="string")&&Array.isArray(r.data)&&(r.data.length===0||typeof r.data[0]=="number")}n.is=e})(Ea||(Ea={}));var ka;(function(n){function e(r,i){return{range:r,text:i}}n.create=e;function t(r){const i=r;return i!=null&&b.is(i.range)&&p.string(i.text)}n.is=t})(ka||(ka={}));var Sa;(function(n){function e(r,i,s){return{range:r,variableName:i,caseSensitiveLookup:s}}n.create=e;function t(r){const i=r;return i!=null&&b.is(i.range)&&p.boolean(i.caseSensitiveLookup)&&(p.string(i.variableName)||i.variableName===void 0)}n.is=t})(Sa||(Sa={}));var Ia;(function(n){function e(r,i){return{range:r,expression:i}}n.create=e;function t(r){const i=r;return i!=null&&b.is(i.range)&&(p.string(i.expression)||i.expression===void 0)}n.is=t})(Ia||(Ia={}));var xa;(function(n){function e(r,i){return{frameId:r,stoppedLocation:i}}n.create=e;function t(r){const i=r;return p.defined(i)&&b.is(r.stoppedLocation)}n.is=t})(xa||(xa={}));var si;(function(n){n.Type=1,n.Parameter=2;function e(t){return t===1||t===2}n.is=e})(si||(si={}));var ai;(function(n){function e(r){return{value:r}}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&(i.tooltip===void 0||p.string(i.tooltip)||un.is(i.tooltip))&&(i.location===void 0||Kn.is(i.location))&&(i.command===void 0||Bt.is(i.command))}n.is=t})(ai||(ai={}));var Na;(function(n){function e(r,i,s){const a={position:r,label:i};return s!==void 0&&(a.kind=s),a}n.create=e;function t(r){const i=r;return p.objectLiteral(i)&&P.is(i.position)&&(p.string(i.label)||p.typedArray(i.label,ai.is))&&(i.kind===void 0||si.is(i.kind))&&i.textEdits===void 0||p.typedArray(i.textEdits,Vt.is)&&(i.tooltip===void 0||p.string(i.tooltip)||un.is(i.tooltip))&&(i.paddingLeft===void 0||p.boolean(i.paddingLeft))&&(i.paddingRight===void 0||p.boolean(i.paddingRight))}n.is=t})(Na||(Na={}));var Ca;(function(n){function e(t){return{kind:"snippet",value:t}}n.createSnippet=e})(Ca||(Ca={}));var _a;(function(n){function e(t,r,i,s){return{insertText:t,filterText:r,range:i,command:s}}n.create=e})(_a||(_a={}));var wa;(function(n){function e(t){return{items:t}}n.create=e})(wa||(wa={}));var La;(function(n){n.Invoked=0,n.Automatic=1})(La||(La={}));var $a;(function(n){function e(t,r){return{range:t,text:r}}n.create=e})($a||($a={}));var Oa;(function(n){function e(t,r){return{triggerKind:t,selectedCompletionInfo:r}}n.create=e})(Oa||(Oa={}));var ba;(function(n){function e(t){const r=t;return p.objectLiteral(r)&&qr.is(r.uri)&&p.string(r.name)}n.is=e})(ba||(ba={}));var Pa;(function(n){function e(s,a,o,c){return new xp(s,a,o,c)}n.create=e;function t(s){let a=s;return!!(p.defined(a)&&p.string(a.uri)&&(p.undefined(a.languageId)||p.string(a.languageId))&&p.uinteger(a.lineCount)&&p.func(a.getText)&&p.func(a.positionAt)&&p.func(a.offsetAt))}n.is=t;function r(s,a){let o=s.getText(),c=i(a,(u,d)=>{let f=u.range.start.line-d.range.start.line;return f===0?u.range.start.character-d.range.start.character:f}),l=o.length;for(let u=c.length-1;u>=0;u--){let d=c[u],f=s.offsetAt(d.range.start),h=s.offsetAt(d.range.end);if(h<=l)o=o.substring(0,f)+d.newText+o.substring(h,o.length);else throw new Error("Overlapping edit");l=f}return o}n.applyEdits=r;function i(s,a){if(s.length<=1)return s;const o=s.length/2|0,c=s.slice(0,o),l=s.slice(o);i(c,a),i(l,a);let u=0,d=0,f=0;for(;u0&&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(),r=0,i=t.length;if(i===0)return P.create(0,e);for(;re?i=a:r=a+1}let s=r-1;return P.create(s,e-t[s])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let r=t[e.line],i=e.line+1"u"}n.undefined=r;function i(h){return h===!0||h===!1}n.boolean=i;function s(h){return e.call(h)==="[object String]"}n.string=s;function a(h){return e.call(h)==="[object Number]"}n.number=a;function o(h,m,g){return e.call(h)==="[object Number]"&&m<=h&&h<=g}n.numberRange=o;function c(h){return e.call(h)==="[object Number]"&&-2147483648<=h&&h<=2147483647}n.integer=c;function l(h){return e.call(h)==="[object Number]"&&0<=h&&h<=2147483647}n.uinteger=l;function u(h){return e.call(h)==="[object Function]"}n.func=u;function d(h){return h!==null&&typeof h=="object"}n.objectLiteral=d;function f(h,m){return Array.isArray(h)&&h.every(m)}n.typedArray=f})(p||(p={}));class Np{constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]}buildRootNode(e){return this.rootNode=new Qc(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){const t=new Gi;return t.grammarSource=e,t.root=this.rootNode,this.current.content.push(t),this.nodeStack.push(t),t}buildLeafNode(e,t){const r=new oi(e.startOffset,e.image.length,Mr(e),e.tokenType,!1);return r.grammarSource=t,r.root=this.rootNode,this.current.content.push(r),r}removeNode(e){const t=e.container;if(t){const r=t.content.indexOf(e);r>=0&&t.content.splice(r,1)}}construct(e){const t=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=t;const r=this.nodeStack.pop();(r==null?void 0:r.content.length)===0&&this.removeNode(r)}addHiddenTokens(e){for(const t of e){const r=new oi(t.startOffset,t.image.length,Mr(t),t.tokenType,!0);r.root=this.rootNode,this.addHiddenToken(this.rootNode,r)}}addHiddenToken(e,t){const{offset:r,end:i}=t;for(let s=0;so&&i=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}}class Ui extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,Ui.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...r){return this.addParents(r),super.splice(e,t,...r)}addParents(e){for(const t of e)t.container=this.parent}}class Qc extends Gi{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}const ci=Symbol("Datatype");function wr(n){return n.$type===ci}const Ma="​",Zc=n=>n.endsWith(Ma)?n:n+Ma;class el{constructor(e){this._unorderedGroups=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition;this.wrapper=new $p(t,Object.assign(Object.assign({},e.parser.ParserConfig),{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)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class Cp extends el{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new Np,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 r=e.fragment?void 0:xi(e)?ci:lr(e),i=this.wrapper.DEFINE_RULE(Zc(e.name),this.startImplementation(r,t).bind(this));return e.entry&&(this.mainRule=i),i}parse(e){this.nodeBuilder.buildRootNode(e);const t=this.lexer.tokenize(e);this.wrapper.input=t.tokens;const r=this.mainRule.call(this.wrapper,{});return this.nodeBuilder.addHiddenTokens(t.hidden),this.unorderedGroups.clear(),{value:r,lexerErrors:t.errors,parserErrors:this.wrapper.errors}}startImplementation(e,t){return r=>{if(!this.isRecording()){const s={$type:e};this.stack.push(s),e===ci&&(s.value="")}let i;try{i=t(r)}catch{i=void 0}return!this.isRecording()&&i===void 0&&(i=this.construct()),i}}consume(e,t,r){const i=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(i)){const s=this.nodeBuilder.buildLeafNode(i,r),{assignment:a,isCrossRef:o}=this.getAssignment(r),c=this.current;if(a){const l=dt(r)?i.image:this.converter.convert(i.image,s);this.assign(a.operator,a.feature,l,s,o)}else if(wr(c)){let l=i.image;dt(r)||(l=this.converter.convert(l,s).toString()),c.value+=l}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,t,r,i){let s;this.isRecording()||(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,r){const{assignment:i,isCrossRef:s}=this.getAssignment(t);if(i)this.assign(i.operator,i.feature,e,r,s);else if(!i){const a=this.current;if(wr(a))a.value+=e.toString();else if(typeof e=="object"&&e){const o=e.$type,c=this.assignWithoutOverride(e,a);o&&(c.$type=o);const l=c;this.stack.pop(),this.stack.push(l)}}}action(e,t){if(!this.isRecording()){let r=this.current;if(!r.$cstNode&&t.feature&&t.operator){r=this.construct(!1);const s=r.$cstNode.feature;this.nodeBuilder.buildCompositeNode(s)}const i={$type:e};this.stack.pop(),this.stack.push(i),t.feature&&t.operator&&this.assign(t.operator,t.feature,r,r.$cstNode,!1)}}construct(e=!0){if(this.isRecording())return;const t=this.current;return ad(t),this.nodeBuilder.construct(t),e&&this.stack.pop(),wr(t)?this.converter.convert(t.value,t.$cstNode):(cd(this.astReflection,t),t)}getAssignment(e){if(!this.assignmentMap.has(e)){const t=ar(e,ut);this.assignmentMap.set(e,{assignment:t,isCrossRef:t?Ei(t.terminal):!1})}return this.assignmentMap.get(e)}assign(e,t,r,i,s){const a=this.current;let o;switch(s&&typeof r=="string"?o=this.linker.buildReference(a,t,i,r):o=r,e){case"=":{a[t]=o;break}case"?=":{a[t]=!0;break}case"+=":Array.isArray(a[t])||(a[t]=[]),a[t].push(o)}}assignWithoutOverride(e,t){for(const[r,i]of Object.entries(t)){const s=e[r];s===void 0?e[r]=i:Array.isArray(s)&&Array.isArray(i)&&(i.push(...s),e[r]=i)}return e}get definitionErrors(){return this.wrapper.definitionErrors}}class _p{buildMismatchTokenMessage(e){return At.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return At.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return At.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return At.buildEarlyExitMessage(e)}}class tl extends _p{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 wp extends el{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);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 r=this.wrapper.DEFINE_RULE(Zc(e.name),this.startImplementation(t).bind(this));return e.entry&&(this.mainRule=r),r}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const r=this.keepStackSize();try{e(t)}finally{this.resetStackSize(r)}}}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,r){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,r],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,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 Lp={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new tl};class $p extends Gh{constructor(e,t){const r=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},Lp),{lookaheadStrategy:r?new Oi({maxLookahead:t.maxLookahead}):new ap}),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,r){return this.subrule(e,t,{ARGS:[r]})}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)}}function nl(n,e,t){return Op({parser:e,tokens:t,rules:new Map,ruleNames:new Map},n),e}function Op(n,e){const t=ec(e,!1),r=Q(e.rules).filter(Ce).filter(i=>t.has(i));for(const i of r){const s=Object.assign(Object.assign({},n),{consume:1,optional:1,subrule:1,many:1,or:1});s.rules.set(i.name,n.parser.rule(i,pt(s,i.definition)))}}function pt(n,e,t=!1){let r;if(dt(e))r=Up(n,e);else if(sr(e))r=bp(n,e);else if(ut(e))r=pt(n,e.terminal);else if(Ei(e))r=rl(n,e);else if(ft(e))r=Pp(n,e);else if(Oo(e))r=Dp(n,e);else if(zo(e))r=Fp(n,e);else if(ki(e))r=Gp(n,e);else if(Qu(e)){const i=n.consume++;r=()=>n.parser.consume(i,tt,e)}else throw new go(e.$cstNode,`Unexpected element type: ${e.$type}`);return il(n,t?void 0:Xn(e),r,e.cardinality)}function bp(n,e){const t=lr(e);return()=>n.parser.action(t,e)}function Pp(n,e){const t=e.rule.ref;if(Ce(t)){const r=n.subrule++,i=e.arguments.length>0?Mp(t,e.arguments):()=>({});return s=>n.parser.subrule(r,sl(n,t),e,i(s))}else if(gt(t)){const r=n.consume++,i=li(n,t.name);return()=>n.parser.consume(r,i,e)}else if(t)ir();else throw new go(e.$cstNode,`Undefined rule type: ${e.$type}`)}function Mp(n,e){const t=e.map(r=>He(r.value));return r=>{const i={};for(let s=0;se(r)||t(r)}else if(Fu(n)){const e=He(n.left),t=He(n.right);return r=>e(r)&&t(r)}else if(Bu(n)){const e=He(n.value);return t=>!e(t)}else if(ju(n)){const e=n.parameter.ref.name;return t=>t!==void 0&&t[e]===!0}else if(Du(n)){const e=!!n.true;return()=>e}ir()}function Dp(n,e){if(e.elements.length===1)return pt(n,e.elements[0]);{const t=[];for(const i of e.elements){const s={ALT:pt(n,i,!0)},a=Xn(i);a&&(s.GATE=He(a)),t.push(s)}const r=n.or++;return i=>n.parser.alternatives(r,t.map(s=>{const a={ALT:()=>s.ALT(i)},o=s.GATE;return o&&(a.GATE=()=>o(i)),a}))}}function Fp(n,e){if(e.elements.length===1)return pt(n,e.elements[0]);const t=[];for(const o of e.elements){const c={ALT:pt(n,o,!0)},l=Xn(o);l&&(c.GATE=He(l)),t.push(c)}const r=n.or++,i=(o,c)=>{const l=c.getRuleStack().join("-");return`uGroup_${o}_${l}`},s=o=>n.parser.alternatives(r,t.map((c,l)=>{const u={ALT:()=>!0},d=n.parser;u.ALT=()=>{if(c.ALT(o),!d.isRecording()){const h=i(r,d);d.unorderedGroups.get(h)||d.unorderedGroups.set(h,[]);const m=d.unorderedGroups.get(h);typeof(m==null?void 0:m[l])>"u"&&(m[l]=!0)}};const f=c.GATE;return f?u.GATE=()=>f(o):u.GATE=()=>{const h=d.unorderedGroups.get(i(r,d));return!(h!=null&&h[l])},u})),a=il(n,Xn(e),s,"*");return o=>{a(o),n.parser.isRecording()||n.parser.unorderedGroups.delete(i(r,n.parser))}}function Gp(n,e){const t=e.elements.map(r=>pt(n,r));return r=>t.forEach(i=>i(r))}function Xn(n){if(ki(n))return n.guardCondition}function rl(n,e,t=e.terminal){if(t)if(ft(t)&&Ce(t.rule.ref)){const r=n.subrule++;return i=>n.parser.subrule(r,sl(n,t.rule.ref),e,i)}else if(ft(t)&>(t.rule.ref)){const r=n.consume++,i=li(n,t.rule.ref.name);return()=>n.parser.consume(r,i,e)}else if(dt(t)){const r=n.consume++,i=li(n,t.value);return()=>n.parser.consume(r,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);const r=rc(e.type.ref),i=r==null?void 0:r.terminal;if(!i)throw new Error("Could not find name assignment for type: "+lr(e.type.ref));return rl(n,e,i)}}function Up(n,e){const t=n.consume++,r=n.tokens[e.value];if(!r)throw new Error("Could not find token for keyword: "+e.value);return()=>n.parser.consume(t,r,e)}function il(n,e,t,r){const i=e&&He(e);if(!r)if(i){const s=n.or++;return a=>n.parser.alternatives(s,[{ALT:()=>t(a),GATE:()=>i(a)},{ALT:Ls(),GATE:()=>!i(a)}])}else return t;if(r==="*"){const s=n.many++;return a=>n.parser.many(s,{DEF:()=>t(a),GATE:i?()=>i(a):void 0})}else if(r==="+"){const s=n.many++;if(i){const a=n.or++;return o=>n.parser.alternatives(a,[{ALT:()=>n.parser.atLeastOne(s,{DEF:()=>t(o)}),GATE:()=>i(o)},{ALT:Ls(),GATE:()=>!i(o)}])}else return a=>n.parser.atLeastOne(s,{DEF:()=>t(a)})}else if(r==="?"){const s=n.optional++;return a=>n.parser.optional(s,{DEF:()=>t(a),GATE:i?()=>i(a):void 0})}else ir()}function sl(n,e){const t=Bp(n,e),r=n.rules.get(t);if(!r)throw new Error(`Rule "${t}" not found."`);return r}function Bp(n,e){if(Ce(e))return e.name;if(n.ruleNames.has(e))return n.ruleNames.get(e);{let t=e,r=t.$container,i=e.$type;for(;!Ce(r);)(ki(r)||Oo(r)||zo(r))&&(i=r.elements.indexOf(t).toString()+":"+i),t=r,r=r.$container;return i=r.name+":"+i,n.ruleNames.set(e,i),i}}function li(n,e){const t=n.tokens[e];if(!t)throw new Error(`Token "${e}" not found."`);return t}function Vp(n){const e=n.Grammar,t=n.parser.Lexer,r=new wp(n);return nl(e,r,t.definition),r.finalize(),r}function Wp(n){const e=jp(n);return e.finalize(),e}function jp(n){const e=n.Grammar,t=n.parser.Lexer,r=new Cp(n);return nl(e,r,t.definition)}class al{buildTokens(e,t){const r=Q(ec(e,!1)),i=this.buildTerminalTokens(r),s=this.buildKeywordTokens(r,i,t);return i.forEach(a=>{const o=a.PATTERN;typeof o=="object"&&o&&"test"in o&&os(o)?s.unshift(a):s.push(a)}),s}buildTerminalTokens(e){return e.filter(gt).filter(t=>!t.fragment).map(t=>this.buildTerminalToken(t)).toArray()}buildTerminalToken(e){const t=Ni(e),r=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:r,LINE_BREAKS:!0};return e.hidden&&(i.GROUP=os(t)?de.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")?!0:!!(e.source.includes("?<=")||e.source.includes("?(t.lastIndex=i,t.exec(r))}buildKeywordTokens(e,t,r){return e.filter(Ce).flatMap(i=>pn(i).filter(dt)).distinct(i=>i.value).toArray().sort((i,s)=>s.value.length-i.value.length).map(i=>this.buildKeywordToken(i,t,!!(r!=null&&r.caseInsensitive)))}buildKeywordToken(e,t,r){return{name:e.value,PATTERN:this.buildKeywordPattern(e,r),LONGER_ALT:this.findLongerAlt(e,t)}}buildKeywordPattern(e,t){return t?new RegExp(gd(e.value)):e.value}findLongerAlt(e,t){return t.reduce((r,i)=>{const s=i==null?void 0:i.PATTERN;return s!=null&&s.source&&yd("^"+s.source+"$",e.value)&&r.push(i),r},[])}}class ol{convert(e,t){let r=t.grammarSource;if(Ei(r)&&(r=vd(r)),ft(r)){const i=r.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,t)}return e}runConverter(e,t,r){var i;switch(e.name.toUpperCase()){case"INT":return je.convertInt(t);case"STRING":return je.convertString(t);case"ID":return je.convertID(t)}switch((i=Cd(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return je.convertNumber(t);case"boolean":return je.convertBoolean(t);case"bigint":return je.convertBigint(t);case"date":return je.convertDate(t);default:return t}}}var je;(function(n){function e(l){let u="";for(let d=1;dll(e))}se.stringArray=Yp;var jt={};Object.defineProperty(jt,"__esModule",{value:!0});jt.Emitter=jt.Event=void 0;const Xp=yr;var Da;(function(n){const e={dispose(){}};n.None=function(){return e}})(Da||(jt.Event=Da={}));class Jp{add(e,t=null,r){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(t),Array.isArray(r)&&r.push({dispose:()=>this.remove(e,t)})}remove(e,t=null){if(!this._callbacks)return;let r=!1;for(let i=0,s=this._callbacks.length;i{this._callbacks||(this._callbacks=new Jp),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),i.dispose=Tr._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(r)&&r.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}jt.Emitter=Tr;Tr._noop=function(){};var X;Object.defineProperty(dn,"__esModule",{value:!0});var di=dn.CancellationTokenSource=X=dn.CancellationToken=void 0;const Qp=yr,Zp=se,fi=jt;var Jn;(function(n){n.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:fi.Event.None}),n.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:fi.Event.None});function e(t){const r=t;return r&&(r===n.None||r===n.Cancelled||Zp.boolean(r.isCancellationRequested)&&!!r.onCancellationRequested)}n.is=e})(Jn||(X=dn.CancellationToken=Jn={}));const em=Object.freeze(function(n,e){const t=(0,Qp.default)().timer.setTimeout(n.bind(e),0);return{dispose(){t.dispose()}}});class Fa{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?em:(this._emitter||(this._emitter=new fi.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}class tm{get token(){return this._token||(this._token=new Fa),this._token}cancel(){this._token?this._token.cancel():this._token=Jn.Cancelled}dispose(){this._token?this._token instanceof Fa&&this._token.dispose():this._token=Jn.None}}di=dn.CancellationTokenSource=tm;function nm(){return new Promise(n=>{typeof setImmediate>"u"?setTimeout(n,0):setImmediate(n)})}let Ga=0,rm=10;const Qn=Symbol("OperationCancelled");function Bi(n){return n===Qn}async function Oe(n){if(n===X.None)return;const e=Date.now();if(e-Ga>=rm&&(Ga=e,await nm()),n.isCancellationRequested)throw Qn}class Vi{constructor(){this.promise=new Promise((e,t)=>{this.resolve=r=>(e(r),this),this.reject=r=>(t(r),this)})}}class fn{constructor(e,t,r,i){this._uri=e,this._languageId=t,this._version=r,this._content=i,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),r=this.offsetAt(e.end);return this._content.substring(t,r)}return this._content}update(e,t){for(const r of e)if(fn.isIncremental(r)){const i=fl(r.range),s=this.offsetAt(i.start),a=this.offsetAt(i.end);this._content=this._content.substring(0,s)+r.text+this._content.substring(a,this._content.length);const o=Math.max(i.start.line,0),c=Math.max(i.end.line,0);let l=this._lineOffsets;const u=Ua(r.text,!1,s);if(c-o===u.length)for(let f=0,h=u.length;fe?i=a:r=a+1}const s=r-1;return e=this.ensureBeforeEOL(e,t[s]),{line:s,character:e-t[s]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const r=t[e.line];if(e.character<=0)return r;const i=e.line+1t&&dl(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return t!=null&&typeof t.text=="string"&&t.range!==void 0&&(t.rangeLength===void 0||typeof t.rangeLength=="number")}static isFull(e){const t=e;return t!=null&&typeof t.text=="string"&&t.range===void 0&&t.rangeLength===void 0}}var hi;(function(n){function e(i,s,a,o){return new fn(i,s,a,o)}n.create=e;function t(i,s,a){if(i instanceof fn)return i.update(s,a),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}n.update=t;function r(i,s){const a=i.getText(),o=pi(s.map(im),(u,d)=>{const f=u.range.start.line-d.range.start.line;return f===0?u.range.start.character-d.range.start.character:f});let c=0;const l=[];for(const u of o){const d=i.offsetAt(u.range.start);if(dc&&l.push(a.substring(c,d)),u.newText.length&&l.push(u.newText),c=i.offsetAt(u.range.end)}return l.push(a.substr(c)),l.join("")}n.applyEdits=r})(hi||(hi={}));function pi(n,e){if(n.length<=1)return n;const t=n.length/2|0,r=n.slice(0,t),i=n.slice(t);pi(r,e),pi(i,e);let s=0,a=0,o=0;for(;st.line||e.line===t.line&&e.character>t.character?{start:t,end:e}:n}function im(n){const e=fl(n.range);return e!==n.range?{newText:n.newText,range:e}:n}var hl;(()=>{var n={470:i=>{function s(c){if(typeof c!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(c))}function a(c,l){for(var u,d="",f=0,h=-1,m=0,g=0;g<=c.length;++g){if(g2){var A=d.lastIndexOf("/");if(A!==d.length-1){A===-1?(d="",f=0):f=(d=d.slice(0,A)).length-1-d.lastIndexOf("/"),h=g,m=0;continue}}else if(d.length===2||d.length===1){d="",f=0,h=g,m=0;continue}}l&&(d.length>0?d+="/..":d="..",f=2)}else d.length>0?d+="/"+c.slice(h+1,g):d=c.slice(h+1,g),f=g-h-1;h=g,m=0}else u===46&&m!==-1?++m:m=-1}return d}var o={resolve:function(){for(var c,l="",u=!1,d=arguments.length-1;d>=-1&&!u;d--){var f;d>=0?f=arguments[d]:(c===void 0&&(c=process.cwd()),f=c),s(f),f.length!==0&&(l=f+"/"+l,u=f.charCodeAt(0)===47)}return l=a(l,!u),u?l.length>0?"/"+l:"/":l.length>0?l:"."},normalize:function(c){if(s(c),c.length===0)return".";var l=c.charCodeAt(0)===47,u=c.charCodeAt(c.length-1)===47;return(c=a(c,!l)).length!==0||l||(c="."),c.length>0&&u&&(c+="/"),l?"/"+c:c},isAbsolute:function(c){return s(c),c.length>0&&c.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var c,l=0;l0&&(c===void 0?c=u:c+="/"+u)}return c===void 0?".":o.normalize(c)},relative:function(c,l){if(s(c),s(l),c===l||(c=o.resolve(c))===(l=o.resolve(l)))return"";for(var u=1;ug){if(l.charCodeAt(h+y)===47)return l.slice(h+y+1);if(y===0)return l.slice(h+y)}else f>g&&(c.charCodeAt(u+y)===47?A=y:y===0&&(A=0));break}var v=c.charCodeAt(u+y);if(v!==l.charCodeAt(h+y))break;v===47&&(A=y)}var R="";for(y=u+A+1;y<=d;++y)y!==d&&c.charCodeAt(y)!==47||(R.length===0?R+="..":R+="/..");return R.length>0?R+l.slice(h+A):(h+=A,l.charCodeAt(h)===47&&++h,l.slice(h))},_makeLong:function(c){return c},dirname:function(c){if(s(c),c.length===0)return".";for(var l=c.charCodeAt(0),u=l===47,d=-1,f=!0,h=c.length-1;h>=1;--h)if((l=c.charCodeAt(h))===47){if(!f){d=h;break}}else f=!1;return d===-1?u?"/":".":u&&d===1?"//":c.slice(0,d)},basename:function(c,l){if(l!==void 0&&typeof l!="string")throw new TypeError('"ext" argument must be a string');s(c);var u,d=0,f=-1,h=!0;if(l!==void 0&&l.length>0&&l.length<=c.length){if(l.length===c.length&&l===c)return"";var m=l.length-1,g=-1;for(u=c.length-1;u>=0;--u){var A=c.charCodeAt(u);if(A===47){if(!h){d=u+1;break}}else g===-1&&(h=!1,g=u+1),m>=0&&(A===l.charCodeAt(m)?--m==-1&&(f=u):(m=-1,f=g))}return d===f?f=g:f===-1&&(f=c.length),c.slice(d,f)}for(u=c.length-1;u>=0;--u)if(c.charCodeAt(u)===47){if(!h){d=u+1;break}}else f===-1&&(h=!1,f=u+1);return f===-1?"":c.slice(d,f)},extname:function(c){s(c);for(var l=-1,u=0,d=-1,f=!0,h=0,m=c.length-1;m>=0;--m){var g=c.charCodeAt(m);if(g!==47)d===-1&&(f=!1,d=m+1),g===46?l===-1?l=m:h!==1&&(h=1):l!==-1&&(h=-1);else if(!f){u=m+1;break}}return l===-1||d===-1||h===0||h===1&&l===d-1&&l===u+1?"":c.slice(l,d)},format:function(c){if(c===null||typeof c!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof c);return function(l,u){var d=u.dir||u.root,f=u.base||(u.name||"")+(u.ext||"");return d?d===u.root?d+f:d+"/"+f:f}(0,c)},parse:function(c){s(c);var l={root:"",dir:"",base:"",ext:"",name:""};if(c.length===0)return l;var u,d=c.charCodeAt(0),f=d===47;f?(l.root="/",u=1):u=0;for(var h=-1,m=0,g=-1,A=!0,y=c.length-1,v=0;y>=u;--y)if((d=c.charCodeAt(y))!==47)g===-1&&(A=!1,g=y+1),d===46?h===-1?h=y:v!==1&&(v=1):h!==-1&&(v=-1);else if(!A){m=y+1;break}return h===-1||g===-1||v===0||v===1&&h===g-1&&h===m+1?g!==-1&&(l.base=l.name=m===0&&f?c.slice(1,g):c.slice(m,g)):(m===0&&f?(l.name=c.slice(1,h),l.base=c.slice(1,g)):(l.name=c.slice(m,h),l.base=c.slice(m,g)),l.ext=c.slice(h,g)),m>0?l.dir=c.slice(0,m-1):f&&(l.dir="/"),l},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,i.exports=o}},e={};function t(i){var s=e[i];if(s!==void 0)return s.exports;var a=e[i]={exports:{}};return n[i](a,a.exports,t),a.exports}t.d=(i,s)=>{for(var a in s)t.o(s,a)&&!t.o(i,a)&&Object.defineProperty(i,a,{enumerable:!0,get:s[a]})},t.o=(i,s)=>Object.prototype.hasOwnProperty.call(i,s),t.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var r={};(()=>{let i;t.r(r),t.d(r,{URI:()=>f,Utils:()=>Se}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);const s=/^\w[\w\d+.-]*$/,a=/^\//,o=/^\/\//;function c(k,T){if(!k.scheme&&T)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${k.authority}", path: "${k.path}", query: "${k.query}", fragment: "${k.fragment}"}`);if(k.scheme&&!s.test(k.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(k.path){if(k.authority){if(!a.test(k.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(o.test(k.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}const l="",u="/",d=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class f{constructor(T,E,I,O,$,L=!1){Je(this,"scheme");Je(this,"authority");Je(this,"path");Je(this,"query");Je(this,"fragment");typeof T=="object"?(this.scheme=T.scheme||l,this.authority=T.authority||l,this.path=T.path||l,this.query=T.query||l,this.fragment=T.fragment||l):(this.scheme=function(ye,z){return ye||z?ye:"file"}(T,L),this.authority=E||l,this.path=function(ye,z){switch(ye){case"https":case"http":case"file":z?z[0]!==u&&(z=u+z):z=u}return z}(this.scheme,I||l),this.query=O||l,this.fragment=$||l,c(this,L))}static isUri(T){return T instanceof f||!!T&&typeof T.authority=="string"&&typeof T.fragment=="string"&&typeof T.path=="string"&&typeof T.query=="string"&&typeof T.scheme=="string"&&typeof T.fsPath=="string"&&typeof T.with=="function"&&typeof T.toString=="function"}get fsPath(){return v(this)}with(T){if(!T)return this;let{scheme:E,authority:I,path:O,query:$,fragment:L}=T;return E===void 0?E=this.scheme:E===null&&(E=l),I===void 0?I=this.authority:I===null&&(I=l),O===void 0?O=this.path:O===null&&(O=l),$===void 0?$=this.query:$===null&&($=l),L===void 0?L=this.fragment:L===null&&(L=l),E===this.scheme&&I===this.authority&&O===this.path&&$===this.query&&L===this.fragment?this:new m(E,I,O,$,L)}static parse(T,E=!1){const I=d.exec(T);return I?new m(I[2]||l,ne(I[4]||l),ne(I[5]||l),ne(I[7]||l),ne(I[9]||l),E):new m(l,l,l,l,l)}static file(T){let E=l;if(i&&(T=T.replace(/\\/g,u)),T[0]===u&&T[1]===u){const I=T.indexOf(u,2);I===-1?(E=T.substring(2),T=u):(E=T.substring(2,I),T=T.substring(I)||u)}return new m("file",E,T,l,l)}static from(T){const E=new m(T.scheme,T.authority,T.path,T.query,T.fragment);return c(E,!0),E}toString(T=!1){return R(this,T)}toJSON(){return this}static revive(T){if(T){if(T instanceof f)return T;{const E=new m(T);return E._formatted=T.external,E._fsPath=T._sep===h?T.fsPath:null,E}}return T}}const h=i?1:void 0;class m extends f{constructor(){super(...arguments);Je(this,"_formatted",null);Je(this,"_fsPath",null)}get fsPath(){return this._fsPath||(this._fsPath=v(this)),this._fsPath}toString(E=!1){return E?R(this,!0):(this._formatted||(this._formatted=R(this,!1)),this._formatted)}toJSON(){const E={$mid:1};return this._fsPath&&(E.fsPath=this._fsPath,E._sep=h),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 g={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 A(k,T,E){let I,O=-1;for(let $=0;$=97&&L<=122||L>=65&&L<=90||L>=48&&L<=57||L===45||L===46||L===95||L===126||T&&L===47||E&&L===91||E&&L===93||E&&L===58)O!==-1&&(I+=encodeURIComponent(k.substring(O,$)),O=-1),I!==void 0&&(I+=k.charAt($));else{I===void 0&&(I=k.substr(0,$));const ye=g[L];ye!==void 0?(O!==-1&&(I+=encodeURIComponent(k.substring(O,$)),O=-1),I+=ye):O===-1&&(O=$)}}return O!==-1&&(I+=encodeURIComponent(k.substring(O))),I!==void 0?I:k}function y(k){let T;for(let E=0;E1&&k.scheme==="file"?`//${k.authority}${k.path}`:k.path.charCodeAt(0)===47&&(k.path.charCodeAt(1)>=65&&k.path.charCodeAt(1)<=90||k.path.charCodeAt(1)>=97&&k.path.charCodeAt(1)<=122)&&k.path.charCodeAt(2)===58?k.path[1].toLowerCase()+k.path.substr(2):k.path,i&&(E=E.replace(/\//g,"\\")),E}function R(k,T){const E=T?y:A;let I="",{scheme:O,authority:$,path:L,query:ye,fragment:z}=k;if(O&&(I+=O,I+=":"),($||O==="file")&&(I+=u,I+=u),$){let V=$.indexOf("@");if(V!==-1){const at=$.substr(0,V);$=$.substr(V+1),V=at.lastIndexOf(":"),V===-1?I+=E(at,!1,!1):(I+=E(at.substr(0,V),!1,!1),I+=":",I+=E(at.substr(V+1),!1,!0)),I+="@"}$=$.toLowerCase(),V=$.lastIndexOf(":"),V===-1?I+=E($,!1,!0):(I+=E($.substr(0,V),!1,!0),I+=$.substr(V))}if(L){if(L.length>=3&&L.charCodeAt(0)===47&&L.charCodeAt(2)===58){const V=L.charCodeAt(1);V>=65&&V<=90&&(L=`/${String.fromCharCode(V+32)}:${L.substr(3)}`)}else if(L.length>=2&&L.charCodeAt(1)===58){const V=L.charCodeAt(0);V>=65&&V<=90&&(L=`${String.fromCharCode(V+32)}:${L.substr(2)}`)}I+=E(L,!0,!1)}return ye&&(I+="?",I+=E(ye,!1,!1)),z&&(I+="#",I+=T?z:A(z,!1,!1)),I}function N(k){try{return decodeURIComponent(k)}catch{return k.length>3?k.substr(0,3)+N(k.substr(3)):k}}const F=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ne(k){return k.match(F)?k.replace(F,T=>N(T)):k}var we=t(470);const ge=we.posix||we,De="/";var Se;(function(k){k.joinPath=function(T,...E){return T.with({path:ge.join(T.path,...E)})},k.resolvePath=function(T,...E){let I=T.path,O=!1;I[0]!==De&&(I=De+I,O=!0);let $=ge.resolve(I,...E);return O&&$[0]===De&&!T.authority&&($=$.substring(1)),T.with({path:$})},k.dirname=function(T){if(T.path.length===0||T.path===De)return T;let E=ge.dirname(T.path);return E.length===1&&E.charCodeAt(0)===46&&(E=""),T.with({path:E})},k.basename=function(T){return ge.basename(T.path)},k.extname=function(T){return ge.extname(T.path)}})(Se||(Se={}))})(),hl=r})();const{URI:Ht,Utils:sn}=hl;var rt;(function(n){n.basename=sn.basename,n.dirname=sn.dirname,n.extname=sn.extname,n.joinPath=sn.joinPath,n.resolvePath=sn.resolvePath;function e(r,i){return(r==null?void 0:r.toString())===(i==null?void 0:i.toString())}n.equals=e;function t(r,i){const s=typeof r=="string"?r:r.path,a=typeof i=="string"?i:i.path,o=s.split("/").filter(f=>f.length>0),c=a.split("/").filter(f=>f.length>0);let l=0;for(;li??(i=hi.create(e.toString(),r.getServices(e).LanguageMetaData.languageId,0,t??""))}}class am{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory}get all(){return Q(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 r=this.getDocument(e);return r||(r=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(r),r)}createDocument(e,t,r){if(r)return this.langiumDocumentFactory.fromString(t,e,r).then(i=>(this.addDocument(i),i));{const i=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){const t=e.toString(),r=this.documentMap.get(t);return r&&(r.state=U.Changed,r.precomputedScopes=void 0,r.references=[],r.diagnostics=void 0),r}deleteDocument(e){const t=e.toString(),r=this.documentMap.get(t);return r&&(r.state=U.Changed,this.documentMap.delete(t)),r}}class om{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=X.None){for(const r of vt(e.parseResult.value))await Oe(t),Jo(r).forEach(i=>this.doLink(i,e))}doLink(e,t){const r=e.reference;if(r._ref===void 0)try{const i=this.getCandidate(e);if(xn(i))r._ref=i;else if(r._nodeDescription=i,this.langiumDocuments().hasDocument(i.documentUri)){const s=this.loadAstNode(i);r._ref=s??this.createLinkingError(e,i)}}catch(i){r._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${r.$refText}': ${i}`})}t.references.push(r)}unlink(e){for(const t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){const r=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return r??this.createLinkingError(e)}buildReference(e,t,r,i){const s=this,a={$refNode:r,$refText:i,get ref(){var o;if(ae(this._ref))return this._ref;if(Su(this._nodeDescription)){const c=s.loadAstNode(this._nodeDescription);this._ref=c??s.createLinkingError({reference:a,container:e,property:t},this._nodeDescription)}else if(this._ref===void 0){const c=s.getLinkedNode({reference:a,container:e,property:t});if(c.error&&Ue(e).state=e.end)return s.ref}}if(r){const i=this.nameProvider.getNameNode(r);if(i&&(i===e||Nu(e,i)))return r}}}findDeclarationNode(e){const t=this.findDeclaration(e);if(t!=null&&t.$cstNode){const r=this.nameProvider.getNameNode(t);return r??t.$cstNode}}findReferences(e,t){const r=[];if(t.includeDeclaration){const s=this.getReferenceToSelf(e);s&&r.push(s)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(i=i.filter(s=>rt.equals(s.sourceUri,t.documentUri))),r.push(...i),Q(r)}getReferenceToSelf(e){const t=this.nameProvider.getNameNode(e);if(t){const r=Ue(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:r.uri,sourcePath:i,targetUri:r.uri,targetPath:i,segment:On(t),local:!0}}}}class Wi{constructor(e){if(this.map=new Map,e)for(const[t,r]of e)this.add(t,r)}get size(){return br.sum(Q(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,t){if(t===void 0)return this.map.delete(e);{const r=this.map.get(e);if(r){const i=r.indexOf(t);if(i>=0)return r.length===1?this.map.delete(e):r.splice(i,1),!0}return!1}}get(e){var t;return(t=this.map.get(e))!==null&&t!==void 0?t:[]}has(e,t){if(t===void 0)return this.map.has(e);{const r=this.map.get(e);return r?r.indexOf(t)>=0:!1}}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,r)=>t.forEach(i=>e(i,r,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Q(this.map.entries()).flatMap(([e,t])=>t.map(r=>[e,r]))}keys(){return Q(this.map.keys())}values(){return Q(this.map.values()).flat()}entriesGroupedByKey(){return Q(this.map.entries())}}class Ba{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,r]of e)this.set(t,r)}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 t!==void 0?(this.map.delete(e),this.inverse.delete(t),!0):!1}}class dm{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=X.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,r=Si,i=X.None){const s=[];this.exportNode(e,s,t);for(const a of r(e))await Oe(i),this.exportNode(a,s,t);return s}exportNode(e,t,r){const i=this.nameProvider.getName(e);i&&t.push(this.descriptions.createDescription(e,i,r))}async computeLocalScopes(e,t=X.None){const r=e.parseResult.value,i=new Wi;for(const s of pn(r))await Oe(t),this.processNode(s,e,i);return i}processNode(e,t,r){const i=e.$container;if(i){const s=this.nameProvider.getName(e);s&&r.add(i,this.descriptions.createDescription(e,s,t))}}}class Va{constructor(e,t,r){var i;this.elements=e,this.outerScope=t,this.caseInsensitive=(i=r==null?void 0:r.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?this.elements.find(r=>r.name.toLowerCase()===e.toLowerCase()):this.elements.find(r=>r.name===e);if(t)return t;if(this.outerScope)return this.outerScope.getElement(e)}}class fm{constructor(e,t,r){var i;this.elements=new Map,this.caseInsensitive=(i=r==null?void 0:r.caseInsensitive)!==null&&i!==void 0?i:!1;for(const s of e){const a=this.caseInsensitive?s.name.toLowerCase():s.name;this.elements.set(a,s)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,r=this.elements.get(t);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=Q(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}}class pl{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 hm extends pl{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 r=t();return this.cache.set(e,r),r}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}}class pm extends pl{constructor(e){super(),this.cache=new Map,this.converter=e??(t=>t)}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,r){this.throwIfDisposed(),this.cacheForContext(e).set(t,r)}get(e,t,r){this.throwIfDisposed();const i=this.cacheForContext(e);if(i.has(t))return i.get(t);if(r){const s=r();return i.set(t,s),s}else return}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 r=this.cache.get(t);return r||(r=new Map,this.cache.set(t,r)),r}}class mm extends hm{constructor(e){super(),this.onDispose(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}class gm{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 mm(e.shared)}getScope(e){const t=[],r=this.reflection.getReferenceType(e),i=Ue(e.container).precomputedScopes;if(i){let a=e.container;do{const o=i.get(a);o.length>0&&t.push(Q(o).filter(c=>this.reflection.isSubtype(c.type,r))),a=a.$container}while(a)}let s=this.getGlobalScope(r,e);for(let a=t.length-1;a>=0;a--)s=this.createScope(t[a],s);return s}createScope(e,t,r){return new Va(Q(e),t,r)}createScopeForNodes(e,t,r){const i=Q(e).map(s=>{const a=this.nameProvider.getName(s);if(a)return this.descriptions.createDescription(s,a)}).nonNullable();return new Va(i,t,r)}getGlobalScope(e,t){return this.globalScopeCache.get(e,()=>new fm(this.indexManager.allElements(e)))}}function ym(n){return typeof n.$comment=="string"}function Wa(n){return typeof n=="object"&&!!n&&("$ref"in n||"$error"in n)}class Tm{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 r=t==null?void 0:t.replacer,i=(a,o)=>this.replacer(a,o,t),s=r?(a,o)=>r(a,o,i):i;try{return this.currentDocument=Ue(e),JSON.stringify(e,s,t==null?void 0:t.space)}finally{this.currentDocument=void 0}}deserialize(e,t={}){const r=JSON.parse(e);return this.linkNode(r,r,t),r}replacer(e,t,{refText:r,sourceText:i,textRegions:s,comments:a,uriConverter:o}){var c,l,u,d;if(!this.ignoreProperties.has(e))if(Ge(t)){const f=t.ref,h=r?t.$refText:void 0;if(f){const m=Ue(f);let g="";this.currentDocument&&this.currentDocument!==m&&(o?g=o(m.uri,t):g=m.uri.toString());const A=this.astNodeLocator.getAstNodePath(f);return{$ref:`${g}#${A}`,$refText:h}}else return{$error:(l=(c=t.error)===null||c===void 0?void 0:c.message)!==null&&l!==void 0?l:"Could not resolve reference",$refText:h}}else if(ae(t)){let f;if(s&&(f=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),(!e||t.$document)&&(f!=null&&f.$textRegion)&&(f.$textRegion.documentURI=(u=this.currentDocument)===null||u===void 0?void 0:u.uri.toString())),i&&!e&&(f??(f=Object.assign({},t)),f.$sourceText=(d=t.$cstNode)===null||d===void 0?void 0:d.text),a){f??(f=Object.assign({},t));const h=this.commentProvider.getComment(t);h&&(f.$comment=h.replace(/\r/g,""))}return f??t}else return t}addAstNodeRegionWithAssignmentsTo(e){const t=r=>({offset:r.offset,end:r.end,length:r.length,range:r.range});if(e.$cstNode){const r=e.$textRegion=t(e.$cstNode),i=r.assignments={};return Object.keys(e).filter(s=>!s.startsWith("$")).forEach(s=>{const a=kd(e.$cstNode,s).map(t);a.length!==0&&(i[s]=a)}),e}}linkNode(e,t,r,i,s,a){for(const[c,l]of Object.entries(e))if(Array.isArray(l))for(let u=0;u{try{await e.call(t,r,i,s)}catch(a){if(Bi(a))throw a;console.error("An error occurred during validation:",a);const o=a instanceof Error?a.message:String(a);a instanceof Error&&a.stack&&console.error(a.stack),i("error","An error occurred during validation: "+o,{node:r})}}}addEntry(e,t){if(e==="AstNode"){this.entries.add("AstNode",t);return}for(const r of this.reflection.getAllSubTypes(e))this.entries.add(r,t)}getChecks(e,t){let r=Q(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(r=r.filter(i=>t.includes(i.category))),r.map(i=>i.check)}}class vm{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},r=X.None){const i=e.parseResult,s=[];if(await Oe(r),(!t.categories||t.categories.includes("built-in"))&&(this.processLexingErrors(i,s,t),t.stopAfterLexingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Qe.LexingError})||(this.processParsingErrors(i,s,t),t.stopAfterParsingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Qe.ParsingError}))||(this.processLinkingErrors(e,s,t),t.stopAfterLinkingErrors&&s.some(a=>{var o;return((o=a.data)===null||o===void 0?void 0:o.code)===Qe.LinkingError}))))return s;try{s.push(...await this.validateAst(i.value,t,r))}catch(a){if(Bi(a))throw a;console.error("An error occurred during validation:",a)}return await Oe(r),s}processLexingErrors(e,t,r){for(const i of e.lexerErrors){const s={severity:Lr("error"),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:ja(Qe.LexingError),source:this.getSource()};t.push(s)}}processParsingErrors(e,t,r){for(const i of e.parserErrors){let s;if(isNaN(i.token.startOffset)){if("previousToken"in i){const a=i.previousToken;if(isNaN(a.startOffset)){const o={line:0,character:0};s={start:o,end:o}}else{const o={line:a.endLine-1,character:a.endColumn};s={start:o,end:o}}}}else s=Mr(i.token);if(s){const a={severity:Lr("error"),range:s,message:i.message,data:ja(Qe.ParsingError),source:this.getSource()};t.push(a)}}}processLinkingErrors(e,t,r){for(const i of e.references){const s=i.error;if(s){const a={node:s.container,property:s.property,index:s.index,data:{code:Qe.LinkingError,containerType:s.container.$type,property:s.property,refText:s.reference.$refText}};t.push(this.toDiagnostic("error",s.message,a))}}}async validateAst(e,t,r=X.None){const i=[],s=(a,o,c)=>{i.push(this.toDiagnostic(a,o,c))};return await Promise.all(vt(e).map(async a=>{await Oe(r);const o=this.validationRegistry.getChecks(a.$type,t.categories);for(const c of o)await c(a,s,r)})),i}toDiagnostic(e,t,r){return{message:t,range:Em(r),severity:Lr(e),code:r.code,codeDescription:r.codeDescription,tags:r.tags,relatedInformation:r.relatedInformation,data:r.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function Em(n){if(n.range)return n.range;let e;return typeof n.property=="string"?e=nc(n.node.$cstNode,n.property,n.index):typeof n.keyword=="string"&&(e=Sd(n.node.$cstNode,n.keyword,n.index)),e??(e=n.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function Lr(n){switch(n){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+n)}}var Qe;(function(n){n.LexingError="lexing-error",n.ParsingError="parsing-error",n.LinkingError="linking-error"})(Qe||(Qe={}));class km{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,r=Ue(e)){t??(t=this.nameProvider.getName(e));const i=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${i} has no name.`);let s;const a=()=>{var o;return s??(s=On((o=this.nameProvider.getNameNode(e))!==null&&o!==void 0?o:e.$cstNode))};return{node:e,name:t,get nameSegment(){return a()},selectionSegment:On(e.$cstNode),type:e.$type,documentUri:r.uri,path:i}}}class Sm{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=X.None){const r=[],i=e.parseResult.value;for(const s of vt(i))await Oe(t),Jo(s).filter(a=>!xn(a)).forEach(a=>{const o=this.createDescription(a);o&&r.push(o)});return r}createDescription(e){const t=e.reference.$nodeDescription,r=e.reference.$refNode;if(!t||!r)return;const i=Ue(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:On(r),local:rt.equals(t.documentUri,i)}}}class Im{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),r=this.getPathSegment(e);return t+this.segmentSeparator+r}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return t!==void 0?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce((i,s)=>{if(!i||s.length===0)return i;const a=s.indexOf(this.indexSeparator);if(a>0){const o=s.substring(0,a),c=parseInt(s.substring(a+1)),l=i[o];return l==null?void 0:l[c]}return i[s]},e)}}class xm{constructor(e){this._ready=new Vi,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,r;this.workspaceConfig=(r=(t=e.capabilities.workspace)===null||t===void 0?void 0:t.configuration)!==null&&r!==void 0?r:!1}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map(r=>this.toSectionName(r.LanguageMetaData.languageId))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),r=await e.fetchConfiguration(t);t.forEach((i,s)=>{this.updateSectionConfiguration(i.section,r[s])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(t=>{this.updateSectionConfiguration(t,e.settings[t])})}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const r=this.toSectionName(e);if(this.settings[r])return this.settings[r][t]}toSectionName(e){return`${e}`}}var er;(function(n){function e(t){return{dispose:async()=>await t()}}n.create=e})(er||(er={}));class Nm{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Wi,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=U.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},r=X.None){var i,s;for(const a of e){const o=a.uri.toString();if(a.state===U.Validated){if(typeof t.validation=="boolean"&&t.validation)a.state=U.IndexedReferences,a.diagnostics=void 0,this.buildState.delete(o);else if(typeof t.validation=="object"){const c=this.buildState.get(o),l=(i=c==null?void 0:c.result)===null||i===void 0?void 0:i.validationChecks;if(l){const d=((s=t.validation.categories)!==null&&s!==void 0?s:Zn.all).filter(f=>!l.includes(f));d.length>0&&(this.buildState.set(o,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:d})},result:c.result}),a.state=U.IndexedReferences)}}}else this.buildState.delete(o)}this.currentState=U.Changed,await this.emitUpdate(e.map(a=>a.uri),[]),await this.buildDocuments(e,t,r)}async update(e,t,r=X.None){this.currentState=U.Changed;for(const a of t)this.langiumDocuments.deleteDocument(a),this.buildState.delete(a.toString()),this.indexManager.remove(a);for(const a of e){if(!this.langiumDocuments.invalidateDocument(a)){const c=this.langiumDocumentFactory.fromModel({$type:"INVALID"},a);c.state=U.Changed,this.langiumDocuments.addDocument(c)}this.buildState.delete(a.toString())}const i=Q(e).concat(t).map(a=>a.toString()).toSet();this.langiumDocuments.all.filter(a=>!i.has(a.uri.toString())&&this.shouldRelink(a,i)).forEach(a=>{this.serviceRegistry.getServices(a.uri).references.Linker.unlink(a),a.state=Math.min(a.state,U.ComputedScopes),a.diagnostics=void 0}),await this.emitUpdate(e,t),await Oe(r);const s=this.langiumDocuments.all.filter(a=>{var o;return a.stater(e,t)))}shouldRelink(e,t){return e.references.some(r=>r.error!==void 0)?!0:this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),er.create(()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)})}async buildDocuments(e,t,r){this.prepareBuild(e,t),await this.runCancelable(e,U.Parsed,r,s=>this.langiumDocumentFactory.update(s,r)),await this.runCancelable(e,U.IndexedContent,r,s=>this.indexManager.updateContent(s,r)),await this.runCancelable(e,U.ComputedScopes,r,async s=>{const a=this.serviceRegistry.getServices(s.uri).references.ScopeComputation;s.precomputedScopes=await a.computeLocalScopes(s,r)}),await this.runCancelable(e,U.Linked,r,s=>this.serviceRegistry.getServices(s.uri).references.Linker.link(s,r)),await this.runCancelable(e,U.IndexedReferences,r,s=>this.indexManager.updateReferences(s,r));const i=e.filter(s=>this.shouldValidate(s));await this.runCancelable(i,U.Validated,r,s=>this.validate(s,r));for(const s of e){const a=this.buildState.get(s.uri.toString());a&&(a.completed=!0)}}prepareBuild(e,t){for(const r of e){const i=r.uri.toString(),s=this.buildState.get(i);(!s||s.completed)&&this.buildState.set(i,{completed:!1,options:t,result:s==null?void 0:s.result})}}async runCancelable(e,t,r,i){const s=e.filter(a=>a.state{this.buildPhaseListeners.delete(e,t)})}waitUntil(e,t,r){let i;if(t&&"path"in t?i=t:r=t,r??(r=X.None),i){const s=this.langiumDocuments.getDocument(i);if(s&&s.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):r.isCancellationRequested?Promise.reject(Qn):new Promise((s,a)=>{const o=this.onBuildPhase(e,()=>{if(o.dispose(),c.dispose(),i){const l=this.langiumDocuments.getDocument(i);s(l==null?void 0:l.uri)}else s(void 0)}),c=r.onCancellationRequested(()=>{o.dispose(),c.dispose(),a(Qn)})})}async notifyBuildPhase(e,t,r){if(e.length===0)return;const i=this.buildPhaseListeners.get(t);for(const s of i)await Oe(r),await s(e,r)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,t){var r,i;const s=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,a=this.getBuildOptions(e).validation,o=typeof a=="object"?a:void 0,c=await s.validateDocument(e,o,t);e.diagnostics?e.diagnostics.push(...c):e.diagnostics=c;const l=this.buildState.get(e.uri.toString());if(l){(r=l.result)!==null&&r!==void 0||(l.result={});const u=(i=o==null?void 0:o.categories)!==null&&i!==void 0?i:Zn.all;l.result.validationChecks?l.result.validationChecks.push(...u):l.result.validationChecks=[...u]}}getBuildOptions(e){var t,r;return(r=(t=this.buildState.get(e.uri.toString()))===null||t===void 0?void 0:t.options)!==null&&r!==void 0?r:{}}}class Cm{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new pm,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const r=Ue(e).uri,i=[];return this.referenceIndex.forEach(s=>{s.forEach(a=>{rt.equals(a.targetUri,r)&&a.targetPath===t&&i.push(a)})}),Q(i)}allElements(e,t){let r=Q(this.symbolIndex.keys());return t&&(r=r.filter(i=>!t||t.has(i))),r.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,t){var r;return t?this.symbolByTypeIndex.get(e,t,()=>{var s;return((s=this.symbolIndex.get(e))!==null&&s!==void 0?s:[]).filter(o=>this.astReflection.isSubtype(o.type,t))}):(r=this.symbolIndex.get(e))!==null&&r!==void 0?r:[]}remove(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=X.None){const i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,t),s=e.uri.toString();this.symbolIndex.set(s,i),this.symbolByTypeIndex.clear(s)}async updateReferences(e,t=X.None){const i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,t){const r=this.referenceIndex.get(e.uri.toString());return r?r.some(i=>!i.local&&t.has(i.targetUri.toString())):!1}}class _m{constructor(e){this.initialBuildOptions={},this._ready=new Vi,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}initialize(e){var t;this.folders=(t=e.workspaceFolders)!==null&&t!==void 0?t:void 0}initialized(e){return this.mutex.write(t=>{var r;return this.initializeWorkspace((r=this.folders)!==null&&r!==void 0?r:[],t)})}async initializeWorkspace(e,t=X.None){const r=await this.performStartup(e);await Oe(t),await this.documentBuilder.build(r,this.initialBuildOptions,t)}async performStartup(e){const t=this.serviceRegistry.all.flatMap(s=>s.LanguageMetaData.fileExtensions),r=[],i=s=>{r.push(s),this.langiumDocuments.hasDocument(s.uri)||this.langiumDocuments.addDocument(s)};return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(s=>[s,this.getRootFolder(s)]).map(async s=>this.traverseFolder(...s,t,i))),this._ready.resolve(),r}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return Ht.parse(e.uri)}async traverseFolder(e,t,r,i){const s=await this.fileSystemProvider.readDirectory(t);await Promise.all(s.map(async a=>{if(this.includeEntry(e,a,r)){if(a.isDirectory)await this.traverseFolder(e,a.uri,r,i);else if(a.isFile){const o=await this.langiumDocuments.getOrCreateDocument(a.uri);i(o)}}}))}includeEntry(e,t,r){const i=rt.basename(t.uri);if(i.startsWith("."))return!1;if(t.isDirectory)return i!=="node_modules"&&i!=="out";if(t.isFile){const s=rt.extname(t.uri);return r.includes(s)}return!1}}class wm{constructor(e){const t=e.parser.TokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const r=Ha(t)?Object.values(t):t;this.chevrotainLexer=new de(r,{positionTracking:"full"})}get definition(){return this.tokenTypes}tokenize(e){var t;const r=this.chevrotainLexer.tokenize(e);return{tokens:r.tokens,errors:r.errors,hidden:(t=r.groups.hidden)!==null&&t!==void 0?t:[]}}toTokenTypeDictionary(e){if(Ha(e))return e;const t=ml(e)?Object.values(e.modes).flat():e,r={};return t.forEach(i=>r[i.name]=i),r}}function Lm(n){return Array.isArray(n)&&(n.length===0||"name"in n[0])}function ml(n){return n&&"modes"in n&&"defaultMode"in n}function Ha(n){return!Lm(n)&&!ml(n)}function $m(n,e,t){let r,i;typeof n=="string"?(i=e,r=t):(i=n.range.start,r=e),i||(i=P.create(0,0));const s=gl(n),a=ji(r),o=Pm({lines:s,position:i,options:a});return Um({index:0,tokens:o,position:i})}function Om(n,e){const t=ji(e),r=gl(n);if(r.length===0)return!1;const i=r[0],s=r[r.length-1],a=t.start,o=t.end;return!!(a!=null&&a.exec(i))&&!!(o!=null&&o.exec(s))}function gl(n){let e="";return typeof n=="string"?e=n:e=n.text,e.split(fd)}const Ka=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,bm=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;function Pm(n){var e,t,r;const i=[];let s=n.position.line,a=n.position.character;for(let o=0;o=u.length){if(i.length>0){const h=P.create(s,a);i.push({type:"break",content:"",range:b.create(h,h)})}}else{Ka.lastIndex=d;const h=Ka.exec(u);if(h){const m=h[0],g=h[1],A=P.create(s,a+d),y=P.create(s,a+d+m.length);i.push({type:"tag",content:g,range:b.create(A,y)}),d+=m.length,d=mi(u,d)}if(d0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function Mm(n,e,t,r){const i=[];if(n.length===0){const s=P.create(t,r),a=P.create(t,r+e.length);i.push({type:"text",content:e,range:b.create(s,a)})}else{let s=0;for(const o of n){const c=o.index,l=e.substring(s,c);l.length>0&&i.push({type:"text",content:e.substring(s,c),range:b.create(P.create(t,s+r),P.create(t,c+r))});let u=l.length+1;const d=o[1];if(i.push({type:"inline-tag",content:d,range:b.create(P.create(t,s+u+r),P.create(t,s+u+d.length+r))}),u+=d.length,o.length===4){u+=o[2].length;const f=o[3];i.push({type:"text",content:f,range:b.create(P.create(t,s+u+r),P.create(t,s+u+f.length+r))})}else i.push({type:"text",content:"",range:b.create(P.create(t,s+u+r),P.create(t,s+u+r))});s=c+o[0].length}const a=e.substring(s);a.length>0&&i.push({type:"text",content:a,range:b.create(P.create(t,s+r),P.create(t,s+r+a.length))})}return i}const Dm=/\S/,Fm=/\s*$/;function mi(n,e){const t=n.substring(e).match(Dm);return t?e+t.index:n.length}function Gm(n){const e=n.match(Fm);if(e&&typeof e.index=="number")return e.index}function Um(n){var e,t,r,i;const s=P.create(n.position.line,n.position.character);if(n.tokens.length===0)return new za([],b.create(s,s));const a=[];for(;n.indext.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(e.length===0)e=t.toString();else{const r=t.toString();e+=qa(e)+r}return e.trim()}toMarkdown(e){let t="";for(const r of this.elements)if(t.length===0)t=r.toMarkdown(e);else{const i=r.toMarkdown(e);t+=qa(t)+i}return t.trim()}}class Or{constructor(e,t,r,i){this.name=e,this.content=t,this.inline=r,this.range=i}toString(){let e=`@${this.name}`;const t=this.content.toString();return this.content.inlines.length===1?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e} +${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,r;return(r=(t=e==null?void 0:e.renderTag)===null||t===void 0?void 0:t.call(e,this))!==null&&r!==void 0?r:this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const s=jm(this.name,t,e??{});if(typeof s=="string")return s}let r="";(e==null?void 0:e.tag)==="italic"||(e==null?void 0:e.tag)===void 0?r="*":(e==null?void 0:e.tag)==="bold"?r="**":(e==null?void 0:e.tag)==="bold-italic"&&(r="***");let i=`${r}@${this.name}${r}`;return this.content.inlines.length===1?i=`${i} — ${t}`:this.content.inlines.length>1&&(i=`${i} +${t}`),this.inline?`{${i}}`:i}}function jm(n,e,t){var r,i;if(n==="linkplain"||n==="linkcode"||n==="link"){const s=e.indexOf(" ");let a=e;if(s>0){const c=mi(e,s);a=e.substring(c),e=e.substring(0,s)}return(n==="linkcode"||n==="link"&&t.link==="code")&&(a=`\`${a}\``),(i=(r=t.renderLink)===null||r===void 0?void 0:r.call(t,e,a))!==null&&i!==void 0?i:Hm(e,a)}}function Hm(n,e){try{return Ht.parse(n,!0),`[${e}](${n})`}catch{return n}}class gi{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tr.range.start.line&&(e+=` +`)}return e}toMarkdown(e){let t="";for(let r=0;ri.range.start.line&&(t+=` +`)}return t}}class Al{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}}function qa(n){return n.endsWith(` +`)?` +`:` + +`}class Km{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&Om(t))return $m(t).toMarkdown({renderLink:(i,s)=>this.documentationLinkRenderer(e,i,s),renderTag:i=>this.documentationTagRenderer(e,i)})}documentationLinkRenderer(e,t,r){var i;const s=(i=this.findNameInPrecomputedScopes(e,t))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,t);if(s&&s.nameSegment){const a=s.nameSegment.range.start.line+1,o=s.nameSegment.range.start.character+1,c=s.documentUri.with({fragment:`L${a},${o}`});return`[${r}](${c.toString()})`}else return}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){const i=Ue(e).precomputedScopes;if(!i)return;let s=e;do{const o=i.get(s).find(c=>c.name===t);if(o)return o;s=s.$container}while(s)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find(i=>i.name===t)}}class zm{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return ym(e)?e.$comment:(t=Lu(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||t===void 0?void 0:t.text}}class qm{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e){return Promise.resolve(this.syncParser.parse(e))}}class Ym{constructor(){this.previousTokenSource=new di,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=new di;return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,r){const i=new Vi,s={action:t,deferred:i,cancellationToken:r??X.None};return e.push(s),this.performNextOperation(),i.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)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:t,deferred:r,cancellationToken:i})=>{try{const s=await Promise.resolve().then(()=>t(i));r.resolve(s)}catch(s){Bi(s)?r.resolve(void 0):r.reject(s)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class Xm{constructor(e){this.grammarElementIdMap=new Ba,this.tokenTypeIdMap=new Ba,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors.map(t=>Object.assign({},t)),parserErrors:e.parserErrors.map(t=>Object.assign({},t)),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}createDehyrationContext(e){const t=new Map,r=new Map;for(const i of vt(e))t.set(i,{});if(e.$cstNode)for(const i of Pr(e.$cstNode))r.set(i,{});return{astNodes:t,cstNodes:r}}dehydrateAstNode(e,t){const r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(r.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[i,s]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(s)){const a=[];r[i]=a;for(const o of s)ae(o)?a.push(this.dehydrateAstNode(o,t)):Ge(o)?a.push(this.dehydrateReference(o,t)):a.push(o)}else ae(s)?r[i]=this.dehydrateAstNode(s,t):Ge(s)?r[i]=this.dehydrateReference(s,t):s!==void 0&&(r[i]=s);return r}dehydrateReference(e,t){const r={};return r.$refText=e.$refText,e.$refNode&&(r.$refNode=t.cstNodes.get(e.$refNode)),r}dehydrateCstNode(e,t){const r=t.cstNodes.get(e);return mo(e)?r.fullText=e.fullText:r.grammarSource=this.getGrammarElementId(e.grammarSource),r.hidden=e.hidden,r.astNode=t.astNodes.get(e.astNode),Gt(e)?r.content=e.content.map(i=>this.dehydrateCstNode(i,t)):po(e)&&(r.tokenType=e.tokenType.name,r.offset=e.offset,r.length=e.length,r.startLine=e.range.start.line,r.startColumn=e.range.start.character,r.endLine=e.range.end.line,r.endColumn=e.range.end.character),r}hydrate(e){const t=e.value,r=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,r),{lexerErrors:e.lexerErrors,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,r)}}createHydrationContext(e){const t=new Map,r=new Map;for(const s of vt(e))t.set(s,{});let i;if(e.$cstNode)for(const s of Pr(e.$cstNode)){let a;"fullText"in s?(a=new Qc(s.fullText),i=a):"content"in s?a=new Gi:"tokenType"in s&&(a=this.hydrateCstLeafNode(s)),a&&(r.set(s,a),a.root=i)}return{astNodes:t,cstNodes:r}}hydrateAstNode(e,t){const r=t.astNodes.get(e);r.$type=e.$type,r.$containerIndex=e.$containerIndex,r.$containerProperty=e.$containerProperty,e.$cstNode&&(r.$cstNode=t.cstNodes.get(e.$cstNode));for(const[i,s]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(s)){const a=[];r[i]=a;for(const o of s)ae(o)?a.push(this.setParent(this.hydrateAstNode(o,t),r)):Ge(o)?a.push(this.hydrateReference(o,r,i,t)):a.push(o)}else ae(s)?r[i]=this.setParent(this.hydrateAstNode(s,t),r):Ge(s)?r[i]=this.hydrateReference(s,r,i,t):s!==void 0&&(r[i]=s);return r}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,r,i){return this.linker.buildReference(t,r,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,r=0){const i=t.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=t.astNodes.get(e.astNode),Gt(i))for(const s of e.content){const a=this.hydrateCstNode(s,t,r++);i.content.push(a)}return i}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),r=e.offset,i=e.length,s=e.startLine,a=e.startColumn,o=e.endLine,c=e.endColumn,l=e.hidden;return new oi(r,i,{start:{line:s,character:a},end:{line:o,character:c}},t,l)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap();const t=this.grammarElementIdMap.getKey(e);if(t)return t;throw new Error("Invalid grammar element id: "+e)}createGrammarElementIdMap(){let e=0;for(const t of vt(this.grammar))bu(t)&&this.grammarElementIdMap.set(t,e++)}}function Jt(n){return{documentation:{CommentProvider:e=>new zm(e),DocumentationProvider:e=>new Km(e)},parser:{AsyncParser:e=>new qm(e),GrammarConfig:e=>bd(e),LangiumParser:e=>Wp(e),CompletionParser:e=>Vp(e),ValueConverter:()=>new ol,TokenBuilder:()=>new al,Lexer:e=>new wm(e),ParserErrorMessageProvider:()=>new tl},workspace:{AstNodeLocator:()=>new Im,AstNodeDescriptionProvider:e=>new km(e),ReferenceDescriptionProvider:e=>new Sm(e)},references:{Linker:e=>new om(e),NameProvider:()=>new lm,ScopeProvider:e=>new gm(e),ScopeComputation:e=>new dm(e),References:e=>new um(e)},serializer:{Hydrator:e=>new Xm(e),JsonSerializer:e=>new Tm(e)},validation:{DocumentValidator:e=>new vm(e),ValidationRegistry:e=>new Am(e)},shared:()=>n.shared}}function Qt(n){return{ServiceRegistry:()=>new Rm,workspace:{LangiumDocuments:e=>new am(e),LangiumDocumentFactory:e=>new sm(e),DocumentBuilder:e=>new Nm(e),IndexManager:e=>new Cm(e),WorkspaceManager:e=>new _m(e),FileSystemProvider:e=>n.fileSystemProvider(e),WorkspaceLock:()=>new Ym,ConfigurationProvider:e=>new xm(e)}}}var Ya;(function(n){n.merge=(e,t)=>tr(tr({},e),t)})(Ya||(Ya={}));function _e(n,e,t,r,i,s,a,o,c){const l=[n,e,t,r,i,s,a,o,c].reduce(tr,{});return vl(l)}const Xa=Symbol("isProxy");function vl(n,e){const t=new Proxy({},{deleteProperty:()=>!1,get:(r,i)=>Qa(r,i,n,e||t),getOwnPropertyDescriptor:(r,i)=>(Qa(r,i,n,e||t),Object.getOwnPropertyDescriptor(r,i)),has:(r,i)=>i in n,ownKeys:()=>[...Reflect.ownKeys(n),Xa]});return t[Xa]=!0,t}const Ja=Symbol();function Qa(n,e,t,r){if(e in n){if(n[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:n[e]});if(n[e]===Ja)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. See https://langium.org/docs/configuration-services/#resolving-cyclic-dependencies');return n[e]}else if(e in t){const i=t[e];n[e]=Ja;try{n[e]=typeof i=="function"?i(r):vl(i,r)}catch(s){throw n[e]=s instanceof Error?s:void 0,s}return n[e]}else return}function tr(n,e){if(e){for(const[t,r]of Object.entries(e))if(r!==void 0){const i=n[t];i!==null&&r!==null&&typeof i=="object"&&typeof r=="object"?n[t]=tr(i,r):n[t]=r}}return n}class Jm{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const Zt={fileSystemProvider:()=>new Jm},Qm={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},Zm={AstReflection:()=>new Xo};function eg(){const n=_e(Qt(Zt),Zm),e=_e(Jt({shared:n}),Qm);return n.ServiceRegistry.register(e),e}function An(n){var e;const t=eg(),r=t.serializer.JsonSerializer.deserialize(n);return t.shared.workspace.LangiumDocumentFactory.fromModel(r,Ht.parse(`memory://${(e=r.name)!==null&&e!==void 0?e:"grammar"}.langium`)),r}var tg=Object.defineProperty,x=(n,e)=>tg(n,"name",{value:e,configurable:!0}),ng="Statement",rg="Architecture";function ig(n){return Me.isInstance(n,rg)}x(ig,"isArchitecture");var El="Branch";function sg(n){return Me.isInstance(n,El)}x(sg,"isBranch");var ag="Checkout",og="CherryPicking",kl="Commit";function cg(n){return Me.isInstance(n,kl)}x(cg,"isCommit");var lg="Common";function ug(n){return Me.isInstance(n,lg)}x(ug,"isCommon");var Sl="GitGraph";function dg(n){return Me.isInstance(n,Sl)}x(dg,"isGitGraph");var fg="Info";function hg(n){return Me.isInstance(n,fg)}x(hg,"isInfo");var Il="Merge";function pg(n){return Me.isInstance(n,Il)}x(pg,"isMerge");var mg="Packet";function gg(n){return Me.isInstance(n,mg)}x(gg,"isPacket");var yg="PacketBlock";function Tg(n){return Me.isInstance(n,yg)}x(Tg,"isPacketBlock");var Rg="Pie";function Ag(n){return Me.isInstance(n,Rg)}x(Ag,"isPie");var vg="PieSection";function Eg(n){return Me.isInstance(n,vg)}x(Eg,"isPieSection");var kg="Direction",kt,xl=(kt=class extends ho{getAllTypes(){return["Architecture","Branch","Checkout","CherryPicking","Commit","Common","Direction","Edge","GitGraph","Group","Info","Junction","Merge","Packet","PacketBlock","Pie","PieSection","Service","Statement"]}computeIsSubtype(e,t){switch(e){case El:case ag:case og:case kl:case Il:return this.isSubtype(ng,t);case kg:return this.isSubtype(Sl,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case"Architecture":return{name:"Architecture",properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case"Branch":return{name:"Branch",properties:[{name:"name"},{name:"order"}]};case"Checkout":return{name:"Checkout",properties:[{name:"branch"}]};case"CherryPicking":return{name:"CherryPicking",properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case"Commit":return{name:"Commit",properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Common":return{name:"Common",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Edge":return{name:"Edge",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"GitGraph":return{name:"GitGraph",properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case"Group":return{name:"Group",properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case"Info":return{name:"Info",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Junction":return{name:"Junction",properties:[{name:"id"},{name:"in"}]};case"Merge":return{name:"Merge",properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Packet":return{name:"Packet",properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case"PacketBlock":return{name:"PacketBlock",properties:[{name:"end"},{name:"label"},{name:"start"}]};case"Pie":return{name:"Pie",properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case"PieSection":return{name:"PieSection",properties:[{name:"label"},{name:"value"}]};case"Service":return{name:"Service",properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case"Direction":return{name:"Direction",properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:e,properties:[]}}}},x(kt,"MermaidAstReflection"),kt),Me=new xl,Za,Sg=x(()=>Za??(Za=An('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","name":"Info","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"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@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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","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":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),eo,Ig=x(()=>eo??(eo=An(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","name":"Packet","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":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":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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","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":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),to,xg=x(()=>to??(to=An('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","name":"Pie","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"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@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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","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":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),no,Ng=x(()=>no??(no=An('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","name":"Architecture","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","fragment":true,"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","name":"LeftPort","fragment":true,"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","name":"RightPort","fragment":true,"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","name":"Arrow","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"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@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"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@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":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},{"$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","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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","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":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),ro,Cg=x(()=>ro??(ro=An(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"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","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":"ParserRule","name":"GitGraph","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"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@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"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@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"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@1"},"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@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"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@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"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@1"},"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@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"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@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"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":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),_g={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},wg={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},Lg={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},$g={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},Og={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},vn={AstReflection:x(()=>new xl,"AstReflection")},bg={Grammar:x(()=>Sg(),"Grammar"),LanguageMetaData:x(()=>_g,"LanguageMetaData"),parser:{}},Pg={Grammar:x(()=>Ig(),"Grammar"),LanguageMetaData:x(()=>wg,"LanguageMetaData"),parser:{}},Mg={Grammar:x(()=>xg(),"Grammar"),LanguageMetaData:x(()=>Lg,"LanguageMetaData"),parser:{}},Dg={Grammar:x(()=>Ng(),"Grammar"),LanguageMetaData:x(()=>$g,"LanguageMetaData"),parser:{}},Fg={Grammar:x(()=>Cg(),"Grammar"),LanguageMetaData:x(()=>Og,"LanguageMetaData"),parser:{}},Gg=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,Ug=/accTitle[\t ]*:([^\n\r]*)/,Bg=/title([\t ][^\n\r]*|)/,Vg={ACC_DESCR:Gg,ACC_TITLE:Ug,TITLE:Bg},St,Hi=(St=class extends ol{runConverter(e,t,r){let i=this.runCommonConverter(e,t,r);return i===void 0&&(i=this.runCustomConverter(e,t,r)),i===void 0?super.runConverter(e,t,r):i}runCommonConverter(e,t,r){const i=Vg[e.name];if(i===void 0)return;const s=i.exec(t);if(s!==null){if(s[1]!==void 0)return s[1].trim().replace(/[\t ]{2,}/gm," ");if(s[2]!==void 0)return s[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` +`)}}},x(St,"AbstractMermaidValueConverter"),St),It,Ki=(It=class extends Hi{runCustomConverter(e,t,r){}},x(It,"CommonValueConverter"),It),xt,en=(xt=class extends al{constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,r){const i=super.buildKeywordTokens(e,t,r);return i.forEach(s=>{this.keywords.has(s.name)&&s.PATTERN!==void 0&&(s.PATTERN=new RegExp(s.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),i}},x(xt,"AbstractMermaidTokenBuilder"),xt),Nt;Nt=class extends en{},x(Nt,"CommonTokenBuilder");var Ct,Wg=(Ct=class extends en{constructor(){super(["gitGraph"])}},x(Ct,"GitGraphTokenBuilder"),Ct),Nl={parser:{TokenBuilder:x(()=>new Wg,"TokenBuilder"),ValueConverter:x(()=>new Ki,"ValueConverter")}};function Cl(n=Zt){const e=_e(Qt(n),vn),t=_e(Jt({shared:e}),Fg,Nl);return e.ServiceRegistry.register(t),{shared:e,GitGraph:t}}x(Cl,"createGitGraphServices");var _t,jg=(_t=class extends en{constructor(){super(["info","showInfo"])}},x(_t,"InfoTokenBuilder"),_t),_l={parser:{TokenBuilder:x(()=>new jg,"TokenBuilder"),ValueConverter:x(()=>new Ki,"ValueConverter")}};function wl(n=Zt){const e=_e(Qt(n),vn),t=_e(Jt({shared:e}),bg,_l);return e.ServiceRegistry.register(t),{shared:e,Info:t}}x(wl,"createInfoServices");var wt,Hg=(wt=class extends en{constructor(){super(["packet-beta"])}},x(wt,"PacketTokenBuilder"),wt),Ll={parser:{TokenBuilder:x(()=>new Hg,"TokenBuilder"),ValueConverter:x(()=>new Ki,"ValueConverter")}};function $l(n=Zt){const e=_e(Qt(n),vn),t=_e(Jt({shared:e}),Pg,Ll);return e.ServiceRegistry.register(t),{shared:e,Packet:t}}x($l,"createPacketServices");var Lt,Kg=(Lt=class extends en{constructor(){super(["pie","showData"])}},x(Lt,"PieTokenBuilder"),Lt),$t,zg=($t=class extends Hi{runCustomConverter(e,t,r){if(e.name==="PIE_SECTION_LABEL")return t.replace(/"/g,"").trim()}},x($t,"PieValueConverter"),$t),Ol={parser:{TokenBuilder:x(()=>new Kg,"TokenBuilder"),ValueConverter:x(()=>new zg,"ValueConverter")}};function bl(n=Zt){const e=_e(Qt(n),vn),t=_e(Jt({shared:e}),Mg,Ol);return e.ServiceRegistry.register(t),{shared:e,Pie:t}}x(bl,"createPieServices");var Ot,qg=(Ot=class extends en{constructor(){super(["architecture"])}},x(Ot,"ArchitectureTokenBuilder"),Ot),bt,Yg=(bt=class extends Hi{runCustomConverter(e,t,r){if(e.name==="ARCH_ICON")return t.replace(/[()]/g,"").trim();if(e.name==="ARCH_TEXT_ICON")return t.replace(/["()]/g,"");if(e.name==="ARCH_TITLE")return t.replace(/[[\]]/g,"").trim()}},x(bt,"ArchitectureValueConverter"),bt),Pl={parser:{TokenBuilder:x(()=>new qg,"TokenBuilder"),ValueConverter:x(()=>new Yg,"ValueConverter")}};function Ml(n=Zt){const e=_e(Qt(n),vn),t=_e(Jt({shared:e}),Dg,Pl);return e.ServiceRegistry.register(t),{shared:e,Architecture:t}}x(Ml,"createArchitectureServices");var ct={},Xg={info:x(async()=>{const{createInfoServices:n}=await tn(async()=>{const{createInfoServices:t}=await Promise.resolve().then(()=>Zg);return{createInfoServices:t}},void 0),e=n().Info.parser.LangiumParser;ct.info=e},"info"),packet:x(async()=>{const{createPacketServices:n}=await tn(async()=>{const{createPacketServices:t}=await Promise.resolve().then(()=>ey);return{createPacketServices:t}},void 0),e=n().Packet.parser.LangiumParser;ct.packet=e},"packet"),pie:x(async()=>{const{createPieServices:n}=await tn(async()=>{const{createPieServices:t}=await Promise.resolve().then(()=>ty);return{createPieServices:t}},void 0),e=n().Pie.parser.LangiumParser;ct.pie=e},"pie"),architecture:x(async()=>{const{createArchitectureServices:n}=await tn(async()=>{const{createArchitectureServices:t}=await Promise.resolve().then(()=>ny);return{createArchitectureServices:t}},void 0),e=n().Architecture.parser.LangiumParser;ct.architecture=e},"architecture"),gitGraph:x(async()=>{const{createGitGraphServices:n}=await tn(async()=>{const{createGitGraphServices:t}=await Promise.resolve().then(()=>ry);return{createGitGraphServices:t}},void 0),e=n().GitGraph.parser.LangiumParser;ct.gitGraph=e},"gitGraph")};async function Jg(n,e){const t=Xg[n];if(!t)throw new Error(`Unknown diagram type: ${n}`);ct[n]||await t();const i=ct[n].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new Qg(i);return i.value}x(Jg,"parse");var Pt,Qg=(Pt=class extends Error{constructor(e){const t=e.lexerErrors.map(i=>i.message).join(` +`),r=e.parserErrors.map(i=>i.message).join(` +`);super(`Parsing failed: ${t} ${r}`),this.result=e}},x(Pt,"MermaidParseError"),Pt);const Zg=Object.freeze(Object.defineProperty({__proto__:null,InfoModule:_l,createInfoServices:wl},Symbol.toStringTag,{value:"Module"})),ey=Object.freeze(Object.defineProperty({__proto__:null,PacketModule:Ll,createPacketServices:$l},Symbol.toStringTag,{value:"Module"})),ty=Object.freeze(Object.defineProperty({__proto__:null,PieModule:Ol,createPieServices:bl},Symbol.toStringTag,{value:"Module"})),ny=Object.freeze(Object.defineProperty({__proto__:null,ArchitectureModule:Pl,createArchitectureServices:Ml},Symbol.toStringTag,{value:"Module"})),ry=Object.freeze(Object.defineProperty({__proto__:null,GitGraphModule:Nl,createGitGraphServices:Cl},Symbol.toStringTag,{value:"Module"}));export{Jg as p}; diff --git a/assets/chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js b/assets/chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js new file mode 100644 index 00000000..1a6a393b --- /dev/null +++ b/assets/chunks/gitGraphDiagram-NRZ2UAAF.dWgZOpWf.js @@ -0,0 +1,65 @@ +import{p as Z}from"./chunk-TMUBEWPD.CkIL-JDd.js";import{I as F}from"./chunk-KFBOBJHC.B571SeHl.js";import{D as U,_ as h,d as rr,E as er,F as tr,G as ar,l as w,s as nr,g as sr,b as or,c as cr,q as ir,r as dr,e as B,x as hr,j as lr,v as $r,H as fr}from"../app.BCWCbnje.js";import{p as gr}from"./gitGraph-YCYPL57B.CPbwsOso.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";import"./clone.BdpAoxvF.js";var p={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},yr=U.gitGraph,z=h(()=>er({...yr,...tr().gitGraph}),"getConfig"),i=new F(()=>{const t=z(),r=t.mainBranchName,a=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:a}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}});function j(){return ar({length:7})}h(j,"getID");function N(t,r){const a=Object.create(null);return t.reduce((s,e)=>{const n=r(e);return a[n]||(a[n]=!0,s.push(e)),s},[])}h(N,"uniqBy");var xr=h(function(t){i.records.direction=t},"setDirection"),pr=h(function(t){w.debug("options str",t),t=t==null?void 0:t.trim(),t=t||"{}";try{i.records.options=JSON.parse(t)}catch(r){w.error("error while parsing gitGraph options",r.message)}},"setOptions"),ur=h(function(){return i.records.options},"getOptions"),br=h(function(t){let r=t.msg,a=t.id;const s=t.type;let e=t.tags;w.info("commit",r,a,s,e),w.debug("Entering commit:",r,a,s,e);const n=z();a=B.sanitizeText(a,n),r=B.sanitizeText(r,n),e=e==null?void 0:e.map(o=>B.sanitizeText(o,n));const c={id:a||i.records.seq+"-"+j(),message:r,seq:i.records.seq++,type:s??p.NORMAL,tags:e??[],parents:i.records.head==null?[]:[i.records.head.id],branch:i.records.currBranch};i.records.head=c,w.info("main branch",n.mainBranchName),i.records.commits.set(c.id,c),i.records.branches.set(i.records.currBranch,c.id),w.debug("in pushCommit "+c.id)},"commit"),mr=h(function(t){let r=t.name;const a=t.order;if(r=B.sanitizeText(r,z()),i.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}")`);i.records.branches.set(r,i.records.head!=null?i.records.head.id:null),i.records.branchConfig.set(r,{name:r,order:a}),_(r),w.debug("in createBranch")},"branch"),wr=h(t=>{let r=t.branch,a=t.id;const s=t.type,e=t.tags,n=z();r=B.sanitizeText(r,n),a&&(a=B.sanitizeText(a,n));const c=i.records.branches.get(i.records.currBranch),o=i.records.branches.get(r),$=c?i.records.commits.get(c):void 0,l=o?i.records.commits.get(o):void 0;if($&&l&&$.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(i.records.currBranch===r){const d=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw d.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},d}if($===void 0||!$){const d=new Error(`Incorrect usage of "merge". Current branch (${i.records.currBranch})has no commits`);throw d.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},d}if(!i.records.branches.has(r)){const d=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw d.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},d}if(l===void 0||!l){const d=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw d.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},d}if($===l){const d=new Error('Incorrect usage of "merge". Both branches have same head');throw d.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},d}if(a&&i.records.commits.has(a)){const d=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw d.hash={text:`merge ${r} ${a} ${s} ${e==null?void 0:e.join(" ")}`,token:`merge ${r} ${a} ${s} ${e==null?void 0:e.join(" ")}`,expected:[`merge ${r} ${a}_UNIQUE ${s} ${e==null?void 0:e.join(" ")}`]},d}const f=o||"",g={id:a||`${i.records.seq}-${j()}`,message:`merged branch ${r} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,f],branch:i.records.currBranch,type:p.MERGE,customType:s,customId:!!a,tags:e??[]};i.records.head=g,i.records.commits.set(g.id,g),i.records.branches.set(i.records.currBranch,g.id),w.debug(i.records.branches),w.debug("in mergeBranch")},"merge"),vr=h(function(t){let r=t.id,a=t.targetId,s=t.tags,e=t.parent;w.debug("Entering cherryPick:",r,a,s);const n=z();if(r=B.sanitizeText(r,n),a=B.sanitizeText(a,n),s=s==null?void 0:s.map($=>B.sanitizeText($,n)),e=B.sanitizeText(e,n),!r||!i.records.commits.has(r)){const $=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw $.hash={text:`cherryPick ${r} ${a}`,token:`cherryPick ${r} ${a}`,expected:["cherry-pick abc"]},$}const c=i.records.commits.get(r);if(c===void 0||!c)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(e&&!(Array.isArray(c.parents)&&c.parents.includes(e)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");const o=c.branch;if(c.type===p.MERGE&&!e)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!a||!i.records.commits.has(a)){if(o===i.records.currBranch){const g=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw g.hash={text:`cherryPick ${r} ${a}`,token:`cherryPick ${r} ${a}`,expected:["cherry-pick abc"]},g}const $=i.records.branches.get(i.records.currBranch);if($===void 0||!$){const g=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${r} ${a}`,token:`cherryPick ${r} ${a}`,expected:["cherry-pick abc"]},g}const l=i.records.commits.get($);if(l===void 0||!l){const g=new Error(`Incorrect usage of "cherry-pick". Current branch (${i.records.currBranch})has no commits`);throw g.hash={text:`cherryPick ${r} ${a}`,token:`cherryPick ${r} ${a}`,expected:["cherry-pick abc"]},g}const f={id:i.records.seq+"-"+j(),message:`cherry-picked ${c==null?void 0:c.message} into ${i.records.currBranch}`,seq:i.records.seq++,parents:i.records.head==null?[]:[i.records.head.id,c.id],branch:i.records.currBranch,type:p.CHERRY_PICK,tags:s?s.filter(Boolean):[`cherry-pick:${c.id}${c.type===p.MERGE?`|parent:${e}`:""}`]};i.records.head=f,i.records.commits.set(f.id,f),i.records.branches.set(i.records.currBranch,f.id),w.debug(i.records.branches),w.debug("in cherryPick")}},"cherryPick"),_=h(function(t){if(t=B.sanitizeText(t,z()),i.records.branches.has(t)){i.records.currBranch=t;const r=i.records.branches.get(i.records.currBranch);r===void 0||!r?i.records.head=null:i.records.head=i.records.commits.get(r)??null}else{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}},"checkout");function A(t,r,a){const s=t.indexOf(r);s===-1?t.push(a):t.splice(s,1,a)}h(A,"upsert");function D(t){const r=t.reduce((e,n)=>e.seq>n.seq?e:n,t[0]);let a="";t.forEach(function(e){e===r?a+=" *":a+=" |"});const s=[a,r.id,r.seq];for(const e in i.records.branches)i.records.branches.get(e)===r.id&&s.push(e);if(w.debug(s.join(" ")),r.parents&&r.parents.length==2&&r.parents[0]&&r.parents[1]){const e=i.records.commits.get(r.parents[0]);A(t,r,e),r.parents[1]&&t.push(i.records.commits.get(r.parents[1]))}else{if(r.parents.length==0)return;if(r.parents[0]){const e=i.records.commits.get(r.parents[0]);A(t,r,e)}}t=N(t,e=>e.id),D(t)}h(D,"prettyPrintCommitHistory");var Cr=h(function(){w.debug(i.records.commits);const t=V()[0];D([t])},"prettyPrint"),Er=h(function(){i.reset(),hr()},"clear"),Br=h(function(){return[...i.records.branchConfig.values()].map((r,a)=>r.order!==null&&r.order!==void 0?r:{...r,order:parseFloat(`0.${a}`)}).sort((r,a)=>(r.order??0)-(a.order??0)).map(({name:r})=>({name:r}))},"getBranchesAsObjArray"),kr=h(function(){return i.records.branches},"getBranches"),Lr=h(function(){return i.records.commits},"getCommits"),V=h(function(){const t=[...i.records.commits.values()];return t.forEach(function(r){w.debug(r.id)}),t.sort((r,a)=>r.seq-a.seq),t},"getCommitsArray"),Tr=h(function(){return i.records.currBranch},"getCurrentBranch"),Mr=h(function(){return i.records.direction},"getDirection"),Rr=h(function(){return i.records.head},"getHead"),X={commitType:p,getConfig:z,setDirection:xr,setOptions:pr,getOptions:ur,commit:br,branch:mr,merge:wr,cherryPick:vr,checkout:_,prettyPrint:Cr,clear:Er,getBranchesAsObjArray:Br,getBranches:kr,getCommits:Lr,getCommitsArray:V,getCurrentBranch:Tr,getDirection:Mr,getHead:Rr,setAccTitle:nr,getAccTitle:sr,getAccDescription:or,setAccDescription:cr,setDiagramTitle:ir,getDiagramTitle:dr},Ir=h((t,r)=>{Z(t,r),t.dir&&r.setDirection(t.dir);for(const a of t.statements)qr(a,r)},"populate"),qr=h((t,r)=>{const s={Commit:h(e=>r.commit(Or(e)),"Commit"),Branch:h(e=>r.branch(zr(e)),"Branch"),Merge:h(e=>r.merge(Gr(e)),"Merge"),Checkout:h(e=>r.checkout(Hr(e)),"Checkout"),CherryPicking:h(e=>r.cherryPick(Pr(e)),"CherryPicking")}[t.$type];s?s(t):w.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),Or=h(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?p[t.type]:p.NORMAL,tags:t.tags??void 0}),"parseCommit"),zr=h(t=>({name:t.name,order:t.order??0}),"parseBranch"),Gr=h(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?p[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),Hr=h(t=>t.branch,"parseCheckout"),Pr=h(t=>{var a;return{id:t.id,targetId:"",tags:((a=t.tags)==null?void 0:a.length)===0?void 0:t.tags,parent:t.parent}},"parseCherryPicking"),Wr={parse:h(async t=>{const r=await gr("gitGraph",t);w.debug(r),Ir(r,X)},"parse")},S=rr(),b=S==null?void 0:S.gitGraph,R=10,I=40,k=4,L=2,O=8,C=new Map,E=new Map,P=30,G=new Map,W=[],M=0,x="LR",jr=h(()=>{C.clear(),E.clear(),G.clear(),M=0,W=[],x="LR"},"clear"),J=h(t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(s=>{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=s.trim(),r.appendChild(e)}),r},"drawText"),Q=h(t=>{let r,a,s;return x==="BT"?(a=h((e,n)=>e<=n,"comparisonFunc"),s=1/0):(a=h((e,n)=>e>=n,"comparisonFunc"),s=0),t.forEach(e=>{var c,o;const n=x==="TB"||x=="BT"?(c=E.get(e))==null?void 0:c.y:(o=E.get(e))==null?void 0:o.x;n!==void 0&&a(n,s)&&(r=e,s=n)}),r},"findClosestParent"),Sr=h(t=>{let r="",a=1/0;return t.forEach(s=>{const e=E.get(s).y;e<=a&&(r=s,a=e)}),r||void 0},"findClosestParentBT"),Ar=h((t,r,a)=>{let s=a,e=a;const n=[];t.forEach(c=>{const o=r.get(c);if(!o)throw new Error(`Commit not found for key ${c}`);o.parents.length?(s=Yr(o),e=Math.max(s,e)):n.push(o),Kr(o,s)}),s=e,n.forEach(c=>{Nr(c,s,a)}),t.forEach(c=>{const o=r.get(c);if(o!=null&&o.parents.length){const $=Sr(o.parents);s=E.get($).y-I,s<=e&&(e=s);const l=C.get(o.branch).pos,f=s-R;E.set(o.id,{x:l,y:f})}})},"setParallelBTPos"),Dr=h(t=>{var s;const r=Q(t.parents.filter(e=>e!==null));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const a=(s=E.get(r))==null?void 0:s.y;if(a===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return a},"findClosestParentPos"),Yr=h(t=>Dr(t)+I,"calculateCommitPosition"),Kr=h((t,r)=>{const a=C.get(t.branch);if(!a)throw new Error(`Branch not found for commit ${t.id}`);const s=a.pos,e=r+R;return E.set(t.id,{x:s,y:e}),{x:s,y:e}},"setCommitPosition"),Nr=h((t,r,a)=>{const s=C.get(t.branch);if(!s)throw new Error(`Branch not found for commit ${t.id}`);const e=r+a,n=s.pos;E.set(t.id,{x:n,y:e})},"setRootPosition"),_r=h((t,r,a,s,e,n)=>{if(n===p.HIGHLIGHT)t.append("rect").attr("x",a.x-10).attr("y",a.y-10).attr("width",20).attr("height",20).attr("class",`commit ${r.id} commit-highlight${e%O} ${s}-outer`),t.append("rect").attr("x",a.x-6).attr("y",a.y-6).attr("width",12).attr("height",12).attr("class",`commit ${r.id} commit${e%O} ${s}-inner`);else if(n===p.CHERRY_PICK)t.append("circle").attr("cx",a.x).attr("cy",a.y).attr("r",10).attr("class",`commit ${r.id} ${s}`),t.append("circle").attr("cx",a.x-3).attr("cy",a.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${s}`),t.append("circle").attr("cx",a.x+3).attr("cy",a.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${s}`),t.append("line").attr("x1",a.x+3).attr("y1",a.y+1).attr("x2",a.x).attr("y2",a.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${s}`),t.append("line").attr("x1",a.x-3).attr("y1",a.y+1).attr("x2",a.x).attr("y2",a.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${s}`);else{const c=t.append("circle");if(c.attr("cx",a.x),c.attr("cy",a.y),c.attr("r",r.type===p.MERGE?9:10),c.attr("class",`commit ${r.id} commit${e%O}`),n===p.MERGE){const o=t.append("circle");o.attr("cx",a.x),o.attr("cy",a.y),o.attr("r",6),o.attr("class",`commit ${s} ${r.id} commit${e%O}`)}n===p.REVERSE&&t.append("path").attr("d",`M ${a.x-5},${a.y-5}L${a.x+5},${a.y+5}M${a.x-5},${a.y+5}L${a.x+5},${a.y-5}`).attr("class",`commit ${s} ${r.id} commit${e%O}`)}},"drawCommitBullet"),Vr=h((t,r,a,s)=>{var e;if(r.type!==p.CHERRY_PICK&&(r.customId&&r.type===p.MERGE||r.type!==p.MERGE)&&(b!=null&&b.showCommitLabel)){const n=t.append("g"),c=n.insert("rect").attr("class","commit-label-bkg"),o=n.append("text").attr("x",s).attr("y",a.y+25).attr("class","commit-label").text(r.id),$=(e=o.node())==null?void 0:e.getBBox();if($&&(c.attr("x",a.posWithOffset-$.width/2-L).attr("y",a.y+13.5).attr("width",$.width+2*L).attr("height",$.height+2*L),x==="TB"||x==="BT"?(c.attr("x",a.x-($.width+4*k+5)).attr("y",a.y-12),o.attr("x",a.x-($.width+4*k)).attr("y",a.y+$.height-12)):o.attr("x",a.posWithOffset-$.width/2),b.rotateCommitLabel))if(x==="TB"||x==="BT")o.attr("transform","rotate(-45, "+a.x+", "+a.y+")"),c.attr("transform","rotate(-45, "+a.x+", "+a.y+")");else{const l=-7.5-($.width+10)/25*9.5,f=10+$.width/25*8.5;n.attr("transform","translate("+l+", "+f+") rotate(-45, "+s+", "+a.y+")")}}},"drawCommitLabel"),Xr=h((t,r,a,s)=>{var e;if(r.tags.length>0){let n=0,c=0,o=0;const $=[];for(const l of r.tags.reverse()){const f=t.insert("polygon"),g=t.append("circle"),d=t.append("text").attr("y",a.y-16-n).attr("class","tag-label").text(l),y=(e=d.node())==null?void 0:e.getBBox();if(!y)throw new Error("Tag bbox not found");c=Math.max(c,y.width),o=Math.max(o,y.height),d.attr("x",a.posWithOffset-y.width/2),$.push({tag:d,hole:g,rect:f,yOffset:n}),n+=20}for(const{tag:l,hole:f,rect:g,yOffset:d}of $){const y=o/2,u=a.y-19.2-d;if(g.attr("class","tag-label-bkg").attr("points",` + ${s-c/2-k/2},${u+L} + ${s-c/2-k/2},${u-L} + ${a.posWithOffset-c/2-k},${u-y-L} + ${a.posWithOffset+c/2+k},${u-y-L} + ${a.posWithOffset+c/2+k},${u+y+L} + ${a.posWithOffset-c/2-k},${u+y+L}`),f.attr("cy",u).attr("cx",s-c/2+k/2).attr("r",1.5).attr("class","tag-hole"),x==="TB"||x==="BT"){const m=s+d;g.attr("class","tag-label-bkg").attr("points",` + ${a.x},${m+2} + ${a.x},${m-2} + ${a.x+R},${m-y-2} + ${a.x+R+c+4},${m-y-2} + ${a.x+R+c+4},${m+y+2} + ${a.x+R},${m+y+2}`).attr("transform","translate(12,12) rotate(45, "+a.x+","+s+")"),f.attr("cx",a.x+k/2).attr("cy",m).attr("transform","translate(12,12) rotate(45, "+a.x+","+s+")"),l.attr("x",a.x+5).attr("y",m+3).attr("transform","translate(14,14) rotate(45, "+a.x+","+s+")")}}}},"drawCommitTags"),Jr=h(t=>{switch(t.customType??t.type){case p.NORMAL:return"commit-normal";case p.REVERSE:return"commit-reverse";case p.HIGHLIGHT:return"commit-highlight";case p.MERGE:return"commit-merge";case p.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),Qr=h((t,r,a,s)=>{const e={x:0,y:0};if(t.parents.length>0){const n=Q(t.parents);if(n){const c=s.get(n)??e;return r==="TB"?c.y+I:r==="BT"?(s.get(t.id)??e).y-I:c.x+I}}else return r==="TB"?P:r==="BT"?(s.get(t.id)??e).y-I:0;return 0},"calculatePosition"),Zr=h((t,r,a)=>{var c,o;const s=x==="BT"&&a?r:r+R,e=x==="TB"||x==="BT"?s:(c=C.get(t.branch))==null?void 0:c.pos,n=x==="TB"||x==="BT"?(o=C.get(t.branch))==null?void 0:o.pos:s;if(n===void 0||e===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:n,y:e,posWithOffset:s}},"getCommitPosition"),K=h((t,r,a)=>{if(!b)throw new Error("GitGraph config not found");const s=t.append("g").attr("class","commit-bullets"),e=t.append("g").attr("class","commit-labels");let n=x==="TB"||x==="BT"?P:0;const c=[...r.keys()],o=(b==null?void 0:b.parallelCommits)??!1,$=h((f,g)=>{var u,m;const d=(u=r.get(f))==null?void 0:u.seq,y=(m=r.get(g))==null?void 0:m.seq;return d!==void 0&&y!==void 0?d-y:0},"sortKeys");let l=c.sort($);x==="BT"&&(o&&Ar(l,r,n),l=l.reverse()),l.forEach(f=>{var y;const g=r.get(f);if(!g)throw new Error(`Commit not found for key ${f}`);o&&(n=Qr(g,x,n,E));const d=Zr(g,n,o);if(a){const u=Jr(g),m=g.customType??g.type,q=((y=C.get(g.branch))==null?void 0:y.index)??0;_r(s,g,d,u,q,m),Vr(e,g,d,n),Xr(e,g,d,n)}x==="TB"||x==="BT"?E.set(g.id,{x:d.x,y:d.posWithOffset}):E.set(g.id,{x:d.posWithOffset,y:d.y}),n=x==="BT"&&o?n+I:n+I+R,n>M&&(M=n)})},"drawCommits"),Fr=h((t,r,a,s,e)=>{const c=(x==="TB"||x==="BT"?a.xl.branch===c,"isOnBranchToGetCurve"),$=h(l=>l.seq>t.seq&&l.seq$(l)&&o(l))},"shouldRerouteArrow"),H=h((t,r,a=0)=>{const s=t+Math.abs(t-r)/2;if(a>5)return s;if(W.every(c=>Math.abs(c-s)>=10))return W.push(s),s;const n=Math.abs(t-r);return H(t,r-n/5,a+1)},"findLane"),Ur=h((t,r,a,s)=>{var y,u,m,q,Y;const e=E.get(r.id),n=E.get(a.id);if(e===void 0||n===void 0)throw new Error(`Commit positions not found for commits ${r.id} and ${a.id}`);const c=Fr(r,a,e,n,s);let o="",$="",l=0,f=0,g=(y=C.get(a.branch))==null?void 0:y.index;a.type===p.MERGE&&r.id!==a.parents[0]&&(g=(u=C.get(r.branch))==null?void 0:u.index);let d;if(c){o="A 10 10, 0, 0, 0,",$="A 10 10, 0, 0, 1,",l=10,f=10;const T=e.yn.x&&(o="A 20 20, 0, 0, 0,",$="A 20 20, 0, 0, 1,",l=20,f=20,a.type===p.MERGE&&r.id!==a.parents[0]?d=`M ${e.x} ${e.y} L ${e.x} ${n.y-l} ${$} ${e.x-f} ${n.y} L ${n.x} ${n.y}`:d=`M ${e.x} ${e.y} L ${n.x+l} ${e.y} ${o} ${n.x} ${e.y+f} L ${n.x} ${n.y}`),e.x===n.x&&(d=`M ${e.x} ${e.y} L ${n.x} ${n.y}`)):x==="BT"?(e.xn.x&&(o="A 20 20, 0, 0, 0,",$="A 20 20, 0, 0, 1,",l=20,f=20,a.type===p.MERGE&&r.id!==a.parents[0]?d=`M ${e.x} ${e.y} L ${e.x} ${n.y+l} ${o} ${e.x-f} ${n.y} L ${n.x} ${n.y}`:d=`M ${e.x} ${e.y} L ${n.x-l} ${e.y} ${o} ${n.x} ${e.y-f} L ${n.x} ${n.y}`),e.x===n.x&&(d=`M ${e.x} ${e.y} L ${n.x} ${n.y}`)):(e.yn.y&&(a.type===p.MERGE&&r.id!==a.parents[0]?d=`M ${e.x} ${e.y} L ${n.x-l} ${e.y} ${o} ${n.x} ${e.y-f} L ${n.x} ${n.y}`:d=`M ${e.x} ${e.y} L ${e.x} ${n.y+l} ${$} ${e.x+f} ${n.y} L ${n.x} ${n.y}`),e.y===n.y&&(d=`M ${e.x} ${e.y} L ${n.x} ${n.y}`));if(d===void 0)throw new Error("Line definition not found");t.append("path").attr("d",d).attr("class","arrow arrow"+g%O)},"drawArrow"),re=h((t,r)=>{const a=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach(s=>{const e=r.get(s);e.parents&&e.parents.length>0&&e.parents.forEach(n=>{Ur(a,r.get(n),e,r)})})},"drawArrows"),ee=h((t,r)=>{const a=t.append("g");r.forEach((s,e)=>{var u;const n=e%O,c=(u=C.get(s.name))==null?void 0:u.pos;if(c===void 0)throw new Error(`Position not found for branch ${s.name}`);const o=a.append("line");o.attr("x1",0),o.attr("y1",c),o.attr("x2",M),o.attr("y2",c),o.attr("class","branch branch"+n),x==="TB"?(o.attr("y1",P),o.attr("x1",c),o.attr("y2",M),o.attr("x2",c)):x==="BT"&&(o.attr("y1",M),o.attr("x1",c),o.attr("y2",P),o.attr("x2",c)),W.push(c);const $=s.name,l=J($),f=a.insert("rect"),d=a.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+n);d.node().appendChild(l);const y=l.getBBox();f.attr("class","branchLabelBkg label"+n).attr("rx",4).attr("ry",4).attr("x",-y.width-4-((b==null?void 0:b.rotateCommitLabel)===!0?30:0)).attr("y",-y.height/2+8).attr("width",y.width+18).attr("height",y.height+4),d.attr("transform","translate("+(-y.width-14-((b==null?void 0:b.rotateCommitLabel)===!0?30:0))+", "+(c-y.height/2-1)+")"),x==="TB"?(f.attr("x",c-y.width/2-10).attr("y",0),d.attr("transform","translate("+(c-y.width/2-5)+", 0)")):x==="BT"?(f.attr("x",c-y.width/2-10).attr("y",M),d.attr("transform","translate("+(c-y.width/2-5)+", "+M+")")):f.attr("transform","translate(-19, "+(c-y.height/2)+")")})},"drawBranches"),te=h(function(t,r,a,s,e){return C.set(t,{pos:r,index:a}),r+=50+(e?40:0)+(x==="TB"||x==="BT"?s.width/2:0),r},"setBranchPosition"),ae=h(function(t,r,a,s){if(jr(),w.debug("in gitgraph renderer",t+` +`,"id:",r,a),!b)throw new Error("GitGraph config not found");const e=b.rotateCommitLabel??!1,n=s.db;G=n.getCommits();const c=n.getBranchesAsObjArray();x=n.getDirection();const o=lr(`[id="${r}"]`);let $=0;c.forEach((l,f)=>{var q;const g=J(l.name),d=o.append("g"),y=d.insert("g").attr("class","branchLabel"),u=y.insert("g").attr("class","label branch-label");(q=u.node())==null||q.appendChild(g);const m=g.getBBox();$=te(l.name,$,f,m,e),u.remove(),y.remove(),d.remove()}),K(o,G,!1),b.showBranches&&ee(o,c),re(o,G),K(o,G,!0),$r.insertTitle(o,"gitTitleText",b.titleTopMargin??0,n.getDiagramTitle()),fr(void 0,o,b.diagramPadding,b.useMaxWidth)},"draw"),ne={draw:ae},se=h(t=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(r=>` + .branch-label${r} { fill: ${t["gitBranchLabel"+r]}; } + .commit${r} { stroke: ${t["git"+r]}; fill: ${t["git"+r]}; } + .commit-highlight${r} { stroke: ${t["gitInv"+r]}; fill: ${t["gitInv"+r]}; } + .label${r} { fill: ${t["git"+r]}; } + .arrow${r} { stroke: ${t["git"+r]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${t.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};} + .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};} + .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; } + .tag-hole { fill: ${t.textColor}; } + + .commit-merge { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + } + .commit-reverse { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${t.primaryColor}; + fill: ${t.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${t.textColor}; + } +`,"getStyles"),oe=se,xe={parser:Wr,db:X,renderer:ne,styles:oe};export{xe as diagram}; diff --git a/assets/chunks/graph.DlH8fBwT.js b/assets/chunks/graph.DlH8fBwT.js new file mode 100644 index 00000000..081a7f2b --- /dev/null +++ b/assets/chunks/graph.DlH8fBwT.js @@ -0,0 +1 @@ +import{aq as N,ar as j,as as f,at as b,au as E}from"../app.BCWCbnje.js";import{a as v,c as P,k as _,f as g,d,i as l,v as p,r as D}from"./baseUniq.CLqXXsun.js";var w=N(function(o){return v(P(o,1,j,!0))}),F="\0",a="\0",O="";class L{constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=f(void 0),this._defaultEdgeLabelFn=f(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 b(e)||(e=f(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return _(this._nodes)}sources(){var e=this;return g(this.nodes(),function(t){return E(e._in[t])})}sinks(){var e=this;return g(this.nodes(),function(t){return E(e._out[t])})}setNodes(e,t){var s=arguments,i=this;return d(e,function(r){s.length>1?i.setNode(r,t):i.setNode(r)}),this}setNode(e,t){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=t),this):(this._nodes[e]=arguments.length>1?t: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 t=s=>this.removeEdge(this._edgeObjs[s]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],d(this.children(e),s=>{this.setParent(s)}),delete this._children[e]),d(_(this._in[e]),t),delete this._in[e],delete this._preds[e],d(_(this._out[e]),t),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,t){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(l(t))t=a;else{t+="";for(var s=t;!l(s);s=this.parent(s))if(s===e)throw new Error("Setting "+t+" as parent of "+e+" would create a cycle");this.setNode(t)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=t,this._children[t][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var t=this._parent[e];if(t!==a)return t}}children(e){if(l(e)&&(e=a),this._isCompound){var t=this._children[e];if(t)return _(t)}else{if(e===a)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var t=this._preds[e];if(t)return _(t)}successors(e){var t=this._sucs[e];if(t)return _(t)}neighbors(e){var t=this.predecessors(e);if(t)return w(t,this.successors(e))}isLeaf(e){var t;return this.isDirected()?t=this.successors(e):t=this.neighbors(e),t.length===0}filterNodes(e){var t=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});t.setGraph(this.graph());var s=this;d(this._nodes,function(n,h){e(h)&&t.setNode(h,n)}),d(this._edgeObjs,function(n){t.hasNode(n.v)&&t.hasNode(n.w)&&t.setEdge(n,s.edge(n))});var i={};function r(n){var h=s.parent(n);return h===void 0||t.hasNode(h)?(i[n]=h,h):h in i?i[h]:r(h)}return this._isCompound&&d(t.nodes(),function(n){t.setParent(n,r(n))}),t}setDefaultEdgeLabel(e){return b(e)||(e=f(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return p(this._edgeObjs)}setPath(e,t){var s=this,i=arguments;return D(e,function(r,n){return i.length>1?s.setEdge(r,n,t):s.setEdge(r,n),n}),this}setEdge(){var e,t,s,i,r=!1,n=arguments[0];typeof n=="object"&&n!==null&&"v"in n?(e=n.v,t=n.w,s=n.name,arguments.length===2&&(i=arguments[1],r=!0)):(e=n,t=arguments[1],s=arguments[3],arguments.length>2&&(i=arguments[2],r=!0)),e=""+e,t=""+t,l(s)||(s=""+s);var h=c(this._isDirected,e,t,s);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,h))return r&&(this._edgeLabels[h]=i),this;if(!l(s)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(t),this._edgeLabels[h]=r?i:this._defaultEdgeLabelFn(e,t,s);var u=M(this._isDirected,e,t,s);return e=u.v,t=u.w,Object.freeze(u),this._edgeObjs[h]=u,y(this._preds[t],e),y(this._sucs[e],t),this._in[t][h]=u,this._out[e][h]=u,this._edgeCount++,this}edge(e,t,s){var i=arguments.length===1?m(this._isDirected,arguments[0]):c(this._isDirected,e,t,s);return this._edgeLabels[i]}hasEdge(e,t,s){var i=arguments.length===1?m(this._isDirected,arguments[0]):c(this._isDirected,e,t,s);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,t,s){var i=arguments.length===1?m(this._isDirected,arguments[0]):c(this._isDirected,e,t,s),r=this._edgeObjs[i];return r&&(e=r.v,t=r.w,delete this._edgeLabels[i],delete this._edgeObjs[i],C(this._preds[t],e),C(this._sucs[e],t),delete this._in[t][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,t){var s=this._in[e];if(s){var i=p(s);return t?g(i,function(r){return r.v===t}):i}}outEdges(e,t){var s=this._out[e];if(s){var i=p(s);return t?g(i,function(r){return r.w===t}):i}}nodeEdges(e,t){var s=this.inEdges(e,t);if(s)return s.concat(this.outEdges(e,t))}}L.prototype._nodeCount=0;L.prototype._edgeCount=0;function y(o,e){o[e]?o[e]++:o[e]=1}function C(o,e){--o[e]||delete o[e]}function c(o,e,t,s){var i=""+e,r=""+t;if(!o&&i>r){var n=i;i=r,r=n}return i+O+r+O+(l(s)?F:s)}function M(o,e,t,s){var i=""+e,r=""+t;if(!o&&i>r){var n=i;i=r,r=n}var h={v:i,w:r};return s&&(h.name=s),h}function m(o,e){return c(o,e.v,e.w,e.name)}export{L as G}; diff --git a/assets/chunks/index.CRBiAhYs.js b/assets/chunks/index.CRBiAhYs.js new file mode 100644 index 00000000..fc2d9dd9 --- /dev/null +++ b/assets/chunks/index.CRBiAhYs.js @@ -0,0 +1 @@ +import{d as r,a5 as a,a6 as n,a7 as o,V as h}from"./framework.BDUoXecB.js";const l=r({name:"github-button",props:{href:String,ariaLabel:String,title:String,dataIcon:String,dataColorScheme:String,dataSize:String,dataShowCount:String,dataText:String},render:function(){const t={ref:"_"};for(const e in this.$props)t[a(e)]=this.$props[e];return n("span",[o(this.$slots,"default")?n("a",t,this.$slots.default()):n("a",t)])},mounted:function(){this.paint()},beforeUpdate:function(){this.reset()},updated:function(){this.paint()},beforeUnmount:function(){this.reset()},methods:{paint:function(){if(this.$el.lastChild!==this.$refs._)return;const t=this.$el.appendChild(document.createElement("span")),e=this;h(()=>import("./buttons.esm.DK2fWHEW.js"),[]).then(function(i){e.$el.lastChild===t&&i.render(t.appendChild(e.$refs._),function(s){e.$el.lastChild===t&&t.parentNode.replaceChild(s,t)})})},reset:function(){this.$refs._!=null&&this.$el.replaceChild(this.$refs._,this.$el.lastChild)}}});export{l as default}; diff --git a/assets/chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js b/assets/chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js new file mode 100644 index 00000000..d22be428 --- /dev/null +++ b/assets/chunks/infoDiagram-A4XQUW5V.DmsmdPh7.js @@ -0,0 +1,2 @@ +import{_ as e,l as o,I as i,k as n,K as p}from"../app.BCWCbnje.js";import{p as g}from"./gitGraph-YCYPL57B.CPbwsOso.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";import"./clone.BdpAoxvF.js";var m={parse:e(async r=>{const a=await g("info",r);o.debug(a)},"parse")},v={version:p},d=e(()=>v.version,"getVersion"),c={getVersion:d},l=e((r,a,s)=>{o.debug(`rendering info diagram +`+r);const t=i(a);n(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${s}`)},"draw"),f={draw:l},D={parser:m,db:c,renderer:f};export{D as diagram}; diff --git a/assets/chunks/init.Gi6I4Gst.js b/assets/chunks/init.Gi6I4Gst.js new file mode 100644 index 00000000..d44de941 --- /dev/null +++ b/assets/chunks/init.Gi6I4Gst.js @@ -0,0 +1 @@ +function t(e,a){switch(arguments.length){case 0:break;case 1:this.range(e);break;default:this.range(a).domain(e);break}return this}export{t as i}; diff --git a/assets/chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js b/assets/chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js new file mode 100644 index 00000000..a63f9b3f --- /dev/null +++ b/assets/chunks/journeyDiagram-G5WM74LC.DAXNNvc-.js @@ -0,0 +1,139 @@ +import{d as ft,f as gt,g as at,b as mt}from"./chunk-ASOPGD6M.DXiLsIdP.js";import{_ as i,d as A,q as xt,r as kt,s as _t,g as vt,c as bt,b as wt,x as Tt,j as W,k as St}from"../app.BCWCbnje.js";import{d as tt}from"./arc.D0VzCNCr.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var H=function(){var t=i(function(g,r,a,l){for(a=a||{},l=g.length;l--;a[g[l]]=r);return a},"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],c=[1,10],s=[1,11],u=[1,12],h=[1,13],p=[1,14],d={trace:i(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:i(function(r,a,l,y,f,o,S){var _=o.length-1;switch(f){case 1:return o[_-1];case 2:this.$=[];break;case 3:o[_-1].push(o[_]),this.$=o[_-1];break;case 4:case 5:this.$=o[_];break;case 6:case 7:this.$=[];break;case 8:y.setDiagramTitle(o[_].substr(6)),this.$=o[_].substr(6);break;case 9:this.$=o[_].trim(),y.setAccTitle(this.$);break;case 10:case 11:this.$=o[_].trim(),y.setAccDescription(this.$);break;case 12:y.addSection(o[_].substr(8)),this.$=o[_].substr(8);break;case 13:y.addTask(o[_-1],o[_]),this.$="task";break}},"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:c,14:s,16:u,17:h,18:p},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:c,14:s,16:u,17:h,18:p},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:i(function(r,a){if(a.recoverable)this.trace(r);else{var l=new Error(r);throw l.hash=a,l}},"parseError"),parse:i(function(r){var a=this,l=[0],y=[],f=[null],o=[],S=this.table,_="",B=0,J=0,ut=2,K=1,yt=o.slice.call(arguments,1),k=Object.create(this.lexer),E={yy:{}};for(var O in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O)&&(E.yy[O]=this.yy[O]);k.setInput(r,E.yy),E.yy.lexer=k,E.yy.parser=this,typeof k.yylloc>"u"&&(k.yylloc={});var Y=k.yylloc;o.push(Y);var dt=k.options&&k.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pt(b){l.length=l.length-2*b,f.length=f.length-b,o.length=o.length-b}i(pt,"popStack");function Q(){var b;return b=y.pop()||k.lex()||K,typeof b!="number"&&(b instanceof Array&&(y=b,b=y.pop()),b=a.symbols_[b]||b),b}i(Q,"lex");for(var v,P,w,q,C={},j,M,D,N;;){if(P=l[l.length-1],this.defaultActions[P]?w=this.defaultActions[P]:((v===null||typeof v>"u")&&(v=Q()),w=S[P]&&S[P][v]),typeof w>"u"||!w.length||!w[0]){var G="";N=[];for(j in S[P])this.terminals_[j]&&j>ut&&N.push("'"+this.terminals_[j]+"'");k.showPosition?G="Parse error on line "+(B+1)+`: +`+k.showPosition()+` +Expecting `+N.join(", ")+", got '"+(this.terminals_[v]||v)+"'":G="Parse error on line "+(B+1)+": Unexpected "+(v==K?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(G,{text:k.match,token:this.terminals_[v]||v,line:k.yylineno,loc:Y,expected:N})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+v);switch(w[0]){case 1:l.push(v),f.push(k.yytext),o.push(k.yylloc),l.push(w[1]),v=null,J=k.yyleng,_=k.yytext,B=k.yylineno,Y=k.yylloc;break;case 2:if(M=this.productions_[w[1]][1],C.$=f[f.length-M],C._$={first_line:o[o.length-(M||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(M||1)].first_column,last_column:o[o.length-1].last_column},dt&&(C._$.range=[o[o.length-(M||1)].range[0],o[o.length-1].range[1]]),q=this.performAction.apply(C,[_,J,B,E.yy,w[1],f,o].concat(yt)),typeof q<"u")return q;M&&(l=l.slice(0,-1*M*2),f=f.slice(0,-1*M),o=o.slice(0,-1*M)),l.push(this.productions_[w[1]][0]),f.push(C.$),o.push(C._$),D=S[l[l.length-2]][l[l.length-1]],l.push(D);break;case 3:return!0}}return!0},"parse")},x=function(){var g={EOF:1,parseError:i(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:i(function(r,a){return this.yy=a||this.yy||{},this._input=r,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:i(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var a=r.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:i(function(r){var a=r.length,l=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var y=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),l.length-1&&(this.yylineno-=l.length-1);var f=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:l?(l.length===y.length?this.yylloc.first_column:0)+y[y.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:i(function(){return this._more=!0,this},"more"),reject:i(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:i(function(r){this.unput(this.match.slice(r))},"less"),pastInput:i(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:i(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:i(function(){var r=this.pastInput(),a=new Array(r.length+1).join("-");return r+this.upcomingInput()+` +`+a+"^"},"showPosition"),test_match:i(function(r,a){var l,y,f;if(this.options.backtrack_lexer&&(f={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&&(f.yylloc.range=this.yylloc.range.slice(0))),y=r[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,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(r[0].length),this.matched+=r[0],l=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var o in f)this[o]=f[o];return!1}return!1},"test_match"),next:i(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,a,l,y;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),o=0;oa[0].length)){if(a=l,y=o,this.options.backtrack_lexer){if(r=this.test_match(l,f[o]),r!==!1)return r;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(r=this.test_match(a,f[y]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:i(function(){var a=this.next();return a||this.lex()},"lex"),begin:i(function(a){this.conditionStack.push(a)},"begin"),popState:i(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:i(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:i(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:i(function(a){this.begin(a)},"pushState"),stateStackSize:i(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:i(function(a,l,y,f){switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;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}}};return g}();d.lexer=x;function m(){this.yy={}}return i(m,"Parser"),m.prototype=d,d.Parser=m,new m}();H.parser=H;var Mt=H,V="",U=[],R=[],F=[],$t=i(function(){U.length=0,R.length=0,V="",F.length=0,Tt()},"clear"),Et=i(function(t){V=t,U.push(t)},"addSection"),Pt=i(function(){return U},"getSections"),It=i(function(){let t=et();const e=100;let n=0;for(;!t&&n{n.people&&t.push(...n.people)}),[...new Set(t)].sort()},"updateActors"),Ct=i(function(t,e){const n=e.substr(1).split(":");let c=0,s=[];n.length===1?(c=Number(n[0]),s=[]):(c=Number(n[0]),s=n[1].split(","));const u=s.map(p=>p.trim()),h={section:V,type:V,people:u,task:t,score:c};F.push(h)},"addTask"),Vt=i(function(t){const e={section:V,type:V,description:t,task:t,classes:[]};R.push(e)},"addTaskOrg"),et=i(function(){const t=i(function(n){return F[n].processed},"compileTask");let e=!0;for(const[n,c]of F.entries())t(n),e=e&&c.processed;return e},"compileTasks"),Rt=i(function(){return At()},"getActors"),rt={getConfig:i(()=>A().journey,"getConfig"),clear:$t,setDiagramTitle:xt,getDiagramTitle:kt,setAccTitle:_t,getAccTitle:vt,setAccDescription:bt,getAccDescription:wt,addSection:Et,getSections:Pt,getTasks:It,addTask:Ct,addTaskOrg:Vt,getActors:Rt},Ft=i(t=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${t.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${t.textColor} + } + + .legend { + fill: ${t.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${t.textColor} + } + + .face { + ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${t.mainBkg}; + stroke: ${t.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${t.arrowheadColor}; + } + + .edgePath .path { + stroke: ${t.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${t.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${t.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${t.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${t.tertiaryColor}; + border: 1px solid ${t.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${t.fillType0?`fill: ${t.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${t.fillType0?`fill: ${t.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${t.fillType0?`fill: ${t.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${t.fillType0?`fill: ${t.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${t.fillType0?`fill: ${t.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${t.fillType0?`fill: ${t.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${t.fillType0?`fill: ${t.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${t.fillType0?`fill: ${t.fillType7}`:""}; + } + + .actor-0 { + ${t.actor0?`fill: ${t.actor0}`:""}; + } + .actor-1 { + ${t.actor1?`fill: ${t.actor1}`:""}; + } + .actor-2 { + ${t.actor2?`fill: ${t.actor2}`:""}; + } + .actor-3 { + ${t.actor3?`fill: ${t.actor3}`:""}; + } + .actor-4 { + ${t.actor4?`fill: ${t.actor4}`:""}; + } + .actor-5 { + ${t.actor5?`fill: ${t.actor5}`:""}; + } +`,"getStyles"),Lt=Ft,Z=i(function(t,e){return ft(t,e)},"drawRect"),Bt=i(function(t,e){const c=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");s.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function u(d){const x=tt().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);d.append("path").attr("class","mouth").attr("d",x).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}i(u,"smile");function h(d){const x=tt().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);d.append("path").attr("class","mouth").attr("d",x).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}i(h,"sad");function p(d){d.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 i(p,"ambivalent"),e.score>3?u(s):e.score<3?h(s):p(s),c},"drawFace"),lt=i(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),n.class!==void 0&&n.attr("class",n.class),e.title!==void 0&&n.append("title").text(e.title),n},"drawCircle"),ot=i(function(t,e){return gt(t,e)},"drawText"),jt=i(function(t,e){function n(s,u,h,p,d){return s+","+u+" "+(s+h)+","+u+" "+(s+h)+","+(u+p-d)+" "+(s+h-d*1.2)+","+(u+p)+" "+s+","+(u+p)}i(n,"genPoints");const c=t.append("polygon");c.attr("points",n(e.x,e.y,50,20,7)),c.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,ot(t,e)},"drawLabel"),Nt=i(function(t,e,n){const c=t.append("g"),s=at();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),s.height=n.height,s.class="journey-section section-type-"+e.num,s.rx=3,s.ry=3,Z(c,s),ct(n)(e.text,c,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+e.num},n,e.colour)},"drawSection"),st=-1,zt=i(function(t,e,n){const c=e.x+n.width/2,s=t.append("g");st++;const u=300+5*30;s.append("line").attr("id","task"+st).attr("x1",c).attr("y1",e.y).attr("x2",c).attr("y2",u).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Bt(s,{cx:c,cy:300+(5-e.score)*30,score:e.score});const h=at();h.x=e.x,h.y=e.y,h.fill=e.fill,h.width=n.width,h.height=n.height,h.class="task task-type-"+e.num,h.rx=3,h.ry=3,Z(s,h);let p=e.x+14;e.people.forEach(d=>{const x=e.actors[d].color,m={cx:p,cy:e.y,r:7,fill:x,stroke:"#000",title:d,pos:e.actors[d].position};lt(s,m),p+=10}),ct(n)(e.task,s,h.x,h.y,h.width,h.height,{class:"task"},n,e.colour)},"drawTask"),Ot=i(function(t,e){mt(t,e)},"drawBackgroundRect"),ct=function(){function t(s,u,h,p,d,x,m,g){const r=u.append("text").attr("x",h+d/2).attr("y",p+x/2+5).style("font-color",g).style("text-anchor","middle").text(s);c(r,m)}i(t,"byText");function e(s,u,h,p,d,x,m,g,r){const{taskFontSize:a,taskFontFamily:l}=g,y=s.split(//gi);for(let f=0;f{const s=$[c].color,u={cx:20,cy:n,r:7,fill:s,stroke:"#000",pos:$[c].position};L.drawCircle(t,u);const h={x:40,y:n+7,fill:"#666",text:c,textMargin:e.boxTextMargin|5};L.drawText(t,h),n+=20})}i(ht,"drawActorLegend");var z=A().journey,I=z.leftMargin,Gt=i(function(t,e,n,c){const s=A().journey,u=A().securityLevel;let h;u==="sandbox"&&(h=W("#i"+e));const p=u==="sandbox"?W(h.nodes()[0].contentDocument.body):W("body");T.init();const d=p.select("#"+e);L.initGraphics(d);const x=c.db.getTasks(),m=c.db.getDiagramTitle(),g=c.db.getActors();for(const o in $)delete $[o];let r=0;g.forEach(o=>{$[o]={color:s.actorColours[r%s.actorColours.length],position:r},r++}),ht(d),T.insert(0,0,I,Object.keys($).length*50),Wt(d,x,0);const a=T.getBounds();m&&d.append("text").text(m).attr("x",I).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const l=a.stopy-a.starty+2*s.diagramMarginY,y=I+a.stopx+2*s.diagramMarginX;St(d,l,y,s.useMaxWidth),d.append("line").attr("x1",I).attr("y1",s.height*4).attr("x2",y-I-4).attr("y2",s.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const f=m?70:0;d.attr("viewBox",`${a.startx} -25 ${y} ${l+f}`),d.attr("preserveAspectRatio","xMinYMin meet"),d.attr("height",l+f+25)},"draw"),T={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:i(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:i(function(t,e,n,c){t[e]===void 0?t[e]=n:t[e]=c(n,t[e])},"updateVal"),updateBounds:i(function(t,e,n,c){const s=A().journey,u=this;let h=0;function p(d){return i(function(m){h++;const g=u.sequenceItems.length-h+1;u.updateVal(m,"starty",e-g*s.boxMargin,Math.min),u.updateVal(m,"stopy",c+g*s.boxMargin,Math.max),u.updateVal(T.data,"startx",t-g*s.boxMargin,Math.min),u.updateVal(T.data,"stopx",n+g*s.boxMargin,Math.max),d!=="activation"&&(u.updateVal(m,"startx",t-g*s.boxMargin,Math.min),u.updateVal(m,"stopx",n+g*s.boxMargin,Math.max),u.updateVal(T.data,"starty",e-g*s.boxMargin,Math.min),u.updateVal(T.data,"stopy",c+g*s.boxMargin,Math.max))},"updateItemBounds")}i(p,"updateFn"),this.sequenceItems.forEach(p())},"updateBounds"),insert:i(function(t,e,n,c){const s=Math.min(t,n),u=Math.max(t,n),h=Math.min(e,c),p=Math.max(e,c);this.updateVal(T.data,"startx",s,Math.min),this.updateVal(T.data,"starty",h,Math.min),this.updateVal(T.data,"stopx",u,Math.max),this.updateVal(T.data,"stopy",p,Math.max),this.updateBounds(s,h,u,p)},"insert"),bumpVerticalPos:i(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:i(function(){return this.verticalPos},"getVerticalPos"),getBounds:i(function(){return this.data},"getBounds")},X=z.sectionFills,it=z.sectionColours,Wt=i(function(t,e,n){const c=A().journey;let s="";const u=c.height*2+c.diagramMarginY,h=n+u;let p=0,d="#CCC",x="black",m=0;for(const[g,r]of e.entries()){if(s!==r.section){d=X[p%X.length],m=p%X.length,x=it[p%it.length];let l=0;const y=r.section;for(let o=g;o($[y]&&(l[y]=$[y]),l),{});r.x=g*c.taskMargin+g*c.width+I,r.y=h,r.width=c.diagramMarginX,r.height=c.diagramMarginY,r.colour=x,r.fill=d,r.num=m,r.actors=a,L.drawTask(t,r,c),T.insert(r.x,r.y,r.x+r.width+c.taskMargin,300+5*30)}},"drawTasks"),nt={setConf:qt,draw:Gt},Kt={parser:Mt,db:rt,renderer:nt,styles:Lt,init:i(t=>{nt.setConf(t.journey),rt.clear()},"init")};export{Kt as diagram}; diff --git a/assets/chunks/kanban-definition-QRCXZQQD.OUxfabEb.js b/assets/chunks/kanban-definition-QRCXZQQD.OUxfabEb.js new file mode 100644 index 00000000..a931343d --- /dev/null +++ b/assets/chunks/kanban-definition-QRCXZQQD.OUxfabEb.js @@ -0,0 +1,88 @@ +import{_ as c,l as te,d as W,I as fe,ag as ye,ah as be,ai as me,ac as _e,D as Y,i as G,t as Ee,J as ke,ad as Se,ae as le,af as ce}from"../app.BCWCbnje.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var $=function(){var t=c(function(_,s,n,a){for(n=n||{},a=_.length;a--;n[_[a]]=s);return n},"o"),g=[1,4],d=[1,13],r=[1,12],p=[1,15],E=[1,16],f=[1,20],h=[1,19],L=[6,7,8],C=[1,26],w=[1,24],N=[1,25],i=[6,7,11],M=[1,31],x=[6,7,11,24],P=[1,6,13,16,17,20,23],U=[1,35],j=[1,36],A=[1,6,7,11,13,16,17,20,23],H=[1,38],V={trace:c(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:c(function(s,n,a,o,u,e,B){var l=e.length-1;switch(u){case 6:case 7:return o;case 8:o.getLogger().trace("Stop NL ");break;case 9:o.getLogger().trace("Stop EOF ");break;case 11:o.getLogger().trace("Stop NL2 ");break;case 12:o.getLogger().trace("Stop EOF2 ");break;case 15:o.getLogger().info("Node: ",e[l-1].id),o.addNode(e[l-2].length,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 16:o.getLogger().info("Node: ",e[l].id),o.addNode(e[l-1].length,e[l].id,e[l].descr,e[l].type);break;case 17:o.getLogger().trace("Icon: ",e[l]),o.decorateNode({icon:e[l]});break;case 18:case 23:o.decorateNode({class:e[l]});break;case 19:o.getLogger().trace("SPACELIST");break;case 20:o.getLogger().trace("Node: ",e[l-1].id),o.addNode(0,e[l-1].id,e[l-1].descr,e[l-1].type,e[l]);break;case 21:o.getLogger().trace("Node: ",e[l].id),o.addNode(0,e[l].id,e[l].descr,e[l].type);break;case 22:o.decorateNode({icon:e[l]});break;case 27:o.getLogger().trace("node found ..",e[l-2]),this.$={id:e[l-1],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 28:this.$={id:e[l],descr:e[l],type:0};break;case 29:o.getLogger().trace("node found ..",e[l-3]),this.$={id:e[l-3],descr:e[l-1],type:o.getType(e[l-2],e[l])};break;case 30:this.$=e[l-1]+e[l];break;case 31:this.$=e[l];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:g},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:g},{6:d,7:[1,10],9:9,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(L,[2,3]),{1:[2,2]},t(L,[2,4]),t(L,[2,5]),{1:[2,6],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:d,9:22,12:11,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},{6:C,7:w,10:23,11:N},t(i,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:f,23:h}),t(i,[2,19]),t(i,[2,21],{15:30,24:M}),t(i,[2,22]),t(i,[2,23]),t(x,[2,25]),t(x,[2,26]),t(x,[2,28],{20:[1,32]}),{21:[1,33]},{6:C,7:w,10:34,11:N},{1:[2,7],6:d,12:21,13:r,14:14,16:p,17:E,18:17,19:18,20:f,23:h},t(P,[2,14],{7:U,11:j}),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(i,[2,16],{15:37,24:M}),t(i,[2,17]),t(i,[2,18]),t(i,[2,20],{24:H}),t(x,[2,31]),{21:[1,39]},{22:[1,40]},t(P,[2,13],{7:U,11:j}),t(A,[2,11]),t(A,[2,12]),t(i,[2,15],{24:H}),t(x,[2,30]),{22:[1,41]},t(x,[2,27]),t(x,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:c(function(s,n){if(n.recoverable)this.trace(s);else{var a=new Error(s);throw a.hash=n,a}},"parseError"),parse:c(function(s){var n=this,a=[0],o=[],u=[null],e=[],B=this.table,l="",z=0,ie=0,ue=2,re=1,ge=e.slice.call(arguments,1),b=Object.create(this.lexer),T={yy:{}};for(var J in this.yy)Object.prototype.hasOwnProperty.call(this.yy,J)&&(T.yy[J]=this.yy[J]);b.setInput(s,T.yy),T.yy.lexer=b,T.yy.parser=this,typeof b.yylloc>"u"&&(b.yylloc={});var q=b.yylloc;e.push(q);var de=b.options&&b.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(S){a.length=a.length-2*S,u.length=u.length-S,e.length=e.length-S}c(pe,"popStack");function ae(){var S;return S=o.pop()||b.lex()||re,typeof S!="number"&&(S instanceof Array&&(o=S,S=o.pop()),S=n.symbols_[S]||S),S}c(ae,"lex");for(var k,R,v,Q,F={},X,I,oe,K;;){if(R=a[a.length-1],this.defaultActions[R]?v=this.defaultActions[R]:((k===null||typeof k>"u")&&(k=ae()),v=B[R]&&B[R][k]),typeof v>"u"||!v.length||!v[0]){var Z="";K=[];for(X in B[R])this.terminals_[X]&&X>ue&&K.push("'"+this.terminals_[X]+"'");b.showPosition?Z="Parse error on line "+(z+1)+`: +`+b.showPosition()+` +Expecting `+K.join(", ")+", got '"+(this.terminals_[k]||k)+"'":Z="Parse error on line "+(z+1)+": Unexpected "+(k==re?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(Z,{text:b.match,token:this.terminals_[k]||k,line:b.yylineno,loc:q,expected:K})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+R+", token: "+k);switch(v[0]){case 1:a.push(k),u.push(b.yytext),e.push(b.yylloc),a.push(v[1]),k=null,ie=b.yyleng,l=b.yytext,z=b.yylineno,q=b.yylloc;break;case 2:if(I=this.productions_[v[1]][1],F.$=u[u.length-I],F._$={first_line:e[e.length-(I||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(I||1)].first_column,last_column:e[e.length-1].last_column},de&&(F._$.range=[e[e.length-(I||1)].range[0],e[e.length-1].range[1]]),Q=this.performAction.apply(F,[l,ie,z,T.yy,v[1],u,e].concat(ge)),typeof Q<"u")return Q;I&&(a=a.slice(0,-1*I*2),u=u.slice(0,-1*I),e=e.slice(0,-1*I)),a.push(this.productions_[v[1]][0]),u.push(F.$),e.push(F._$),oe=B[a[a.length-2]][a[a.length-1]],a.push(oe);break;case 3:return!0}}return!0},"parse")},m=function(){var _={EOF:1,parseError:c(function(n,a){if(this.yy.parser)this.yy.parser.parseError(n,a);else throw new Error(n)},"parseError"),setInput:c(function(s,n){return this.yy=n||this.yy||{},this._input=s,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:c(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var n=s.match(/(?:\r\n?|\n).*/g);return n?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:c(function(s){var n=s.length,a=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var o=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 u=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===o.length?this.yylloc.first_column:0)+o[o.length-a.length].length-a[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this},"unput"),more:c(function(){return this._more=!0,this},"more"),reject:c(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:c(function(s){this.unput(this.match.slice(s))},"less"),pastInput:c(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:c(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:c(function(){var s=this.pastInput(),n=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+n+"^"},"showPosition"),test_match:c(function(s,n){var a,o,u;if(this.options.backtrack_lexer&&(u={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&&(u.yylloc.range=this.yylloc.range.slice(0))),o=s[0].match(/(?:\r\n?|\n).*/g),o&&(this.yylineno+=o.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:o?o[o.length-1].length-o[o.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,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(s[0].length),this.matched+=s[0],a=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var e in u)this[e]=u[e];return!1}return!1},"test_match"),next:c(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,n,a,o;this._more||(this.yytext="",this.match="");for(var u=this._currentRules(),e=0;en[0].length)){if(n=a,o=e,this.options.backtrack_lexer){if(s=this.test_match(a,u[e]),s!==!1)return s;if(this._backtrack){n=!1;continue}else return!1}else if(!this.options.flex)break}return n?(s=this.test_match(n,u[o]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:c(function(){var n=this.next();return n||this.lex()},"lex"),begin:c(function(n){this.conditionStack.push(n)},"begin"),popState:c(function(){var n=this.conditionStack.length-1;return n>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:c(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:c(function(n){return n=this.conditionStack.length-1-Math.abs(n||0),n>=0?this.conditionStack[n]:"INITIAL"},"topState"),pushState:c(function(n){this.begin(n)},"pushState"),stateStackSize:c(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:c(function(n,a,o,u){switch(o){case 0:return this.pushState("shapeData"),a.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const e=/\n\s*/g;return a.yytext=a.yytext.replace(e,"
    "),24;case 4:return 24;case 5:this.popState();break;case 6:return n.getLogger().trace("Found comment",a.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 10:this.popState();break;case 11:n.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return n.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:n.getLogger().trace("end icon"),this.popState();break;case 16:return n.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return n.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return n.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return n.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:return this.begin("NODE"),20;case 21:return this.begin("NODE"),20;case 22:return this.begin("NODE"),20;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 29:this.popState();break;case 30:n.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return n.getLogger().trace("description:",a.yytext),"NODE_DESCR";case 32:this.popState();break;case 33:return this.popState(),n.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),n.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),n.getLogger().trace("node end ...",a.yytext),"NODE_DEND";case 36:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";case 37:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";case 38:return this.popState(),n.getLogger().trace("node end (-"),"NODE_DEND";case 39:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";case 40:return this.popState(),n.getLogger().trace("node end (("),"NODE_DEND";case 41:return n.getLogger().trace("Long description:",a.yytext),21;case 42:return n.getLogger().trace("Long description:",a.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}}};return _}();V.lexer=m;function O(){this.yy={}}return c(O,"Parser"),O.prototype=V,V.Parser=O,new O}();$.parser=$;var Ne=$,D=[],ne=[],ee=0,se={},xe=c(()=>{D=[],ne=[],ee=0,se={}},"clear"),ve=c(t=>{if(D.length===0)return null;const g=D[0].level;let d=null;for(let r=D.length-1;r>=0;r--)if(D[r].level===g&&!d&&(d=D[r]),D[r].levelh.parentId===p.id);for(const h of f){const L={id:h.id,parentId:p.id,label:G(h.label??"",r),isGroup:!1,ticket:h==null?void 0:h.ticket,priority:h==null?void 0:h.priority,assigned:h==null?void 0:h.assigned,icon:h==null?void 0:h.icon,shape:"kanbanItem",level:h.level,rx:5,ry:5,cssStyles:["text-align: left"]};g.push(L)}}return{nodes:g,edges:t,other:{},config:W()}},"getData"),Le=c((t,g,d,r,p)=>{var C,w;const E=W();let f=((C=E.mindmap)==null?void 0:C.padding)??Y.mindmap.padding;switch(r){case y.ROUNDED_RECT:case y.RECT:case y.HEXAGON:f*=2}const h={id:G(g,E)||"kbn"+ee++,level:t,label:G(d,E),width:((w=E.mindmap)==null?void 0:w.maxNodeWidth)??Y.mindmap.maxNodeWidth,padding:f,isGroup:!1};if(p!==void 0){let N;p.includes(` +`)?N=p+` +`:N=`{ +`+p+` +}`;const i=Ee(N,{schema:ke});if(i.shape&&(i.shape!==i.shape.toLowerCase()||i.shape.includes("_")))throw new Error(`No such shape: ${i.shape}. Shape names should be lowercase.`);i!=null&&i.shape&&i.shape==="kanbanItem"&&(h.shape=i==null?void 0:i.shape),i!=null&&i.label&&(h.label=i==null?void 0:i.label),i!=null&&i.icon&&(h.icon=i==null?void 0:i.icon.toString()),i!=null&&i.assigned&&(h.assigned=i==null?void 0:i.assigned.toString()),i!=null&&i.ticket&&(h.ticket=i==null?void 0:i.ticket.toString()),i!=null&&i.priority&&(h.priority=i==null?void 0:i.priority)}const L=ve(t);L?h.parentId=L.id||"kbn"+ee++:ne.push(h),D.push(h)},"addNode"),y={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Oe=c((t,g)=>{switch(te.debug("In get type",t,g),t){case"[":return y.RECT;case"(":return g===")"?y.ROUNDED_RECT:y.CLOUD;case"((":return y.CIRCLE;case")":return y.CLOUD;case"))":return y.BANG;case"{{":return y.HEXAGON;default:return y.DEFAULT}},"getType"),Ie=c((t,g)=>{se[t]=g},"setElementForId"),Ce=c(t=>{if(!t)return;const g=W(),d=D[D.length-1];t.icon&&(d.icon=G(t.icon,g)),t.class&&(d.cssClasses=G(t.class,g))},"decorateNode"),we=c(t=>{switch(t){case y.DEFAULT:return"no-border";case y.RECT:return"rect";case y.ROUNDED_RECT:return"rounded-rect";case y.CIRCLE:return"circle";case y.CLOUD:return"cloud";case y.BANG:return"bang";case y.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),Ae=c(()=>te,"getLogger"),Te=c(t=>se[t],"getElementById"),Re={clear:xe,addNode:Le,getSections:he,getData:De,nodeType:y,getType:Oe,setElementForId:Ie,decorateNode:Ce,type2Str:we,getLogger:Ae,getElementById:Te},Pe=Re,Ve=c(async(t,g,d,r)=>{var U,j,A,H,V;te.debug(`Rendering kanban diagram +`+t);const E=r.db.getData(),f=W();f.htmlLabels=!1;const h=fe(g),L=h.append("g");L.attr("class","sections");const C=h.append("g");C.attr("class","items");const w=E.nodes.filter(m=>m.isGroup);let N=0;const i=10,M=[];let x=25;for(const m of w){const O=((U=f==null?void 0:f.kanban)==null?void 0:U.sectionWidth)||200;N=N+1,m.x=O*N+(N-1)*i/2,m.width=O,m.y=0,m.height=O*3,m.rx=5,m.ry=5,m.cssClasses=m.cssClasses+" section-"+N;const _=await ye(L,m);x=Math.max(x,(j=_==null?void 0:_.labelBBox)==null?void 0:j.height),M.push(_)}let P=0;for(const m of w){const O=M[P];P=P+1;const _=((A=f==null?void 0:f.kanban)==null?void 0:A.sectionWidth)||200,s=-_*3/2+x;let n=s;const a=E.nodes.filter(e=>e.parentId===m.id);for(const e of a){if(e.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");e.x=m.x,e.width=_-1.5*i;const l=(await be(C,e,{config:f})).node().getBBox();e.y=n+l.height/2,await me(e),n=e.y+l.height/2+i/2}const o=O.cluster.select("rect"),u=Math.max(n-s+3*i,50)+(x-25);o.attr("height",u)}_e(void 0,h,((H=f.mindmap)==null?void 0:H.padding)??Y.kanban.padding,((V=f.mindmap)==null?void 0:V.useMaxWidth)??Y.kanban.useMaxWidth)},"draw"),Be={draw:Ve},Fe=c(t=>{let g="";for(let r=0;rt.darkMode?ce(r,p):le(r,p),"adjuster");for(let r=0;r` + .edge { + stroke-width: 3; + } + ${Fe(t)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${t.git0}; + } + .section-root text { + fill: ${t.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .cluster-label, .label { + color: ${t.textColor}; + fill: ${t.textColor}; + } + .kanban-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`,"getStyles"),Me=Ge,We={db:Pe,renderer:Be,parser:Ne,styles:Me};export{We as diagram}; diff --git a/assets/chunks/katex.cqFQqex1.js b/assets/chunks/katex.cqFQqex1.js new file mode 100644 index 00000000..6e8f38ce --- /dev/null +++ b/assets/chunks/katex.cqFQqex1.js @@ -0,0 +1,261 @@ +class u0{constructor(e,t,a){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=a}static range(e,t){return t?!e||!e.loc||!t.loc||e.loc.lexer!==t.loc.lexer?null:new u0(e.loc.lexer,e.loc.start,t.loc.end):e&&e.loc}}class f0{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 f0(t,u0.range(this,e))}}class M{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var a="KaTeX parse error: "+e,n,s,o=t&&t.loc;if(o&&o.start<=o.end){var h=o.lexer.input;n=o.start,s=o.end,n===h.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var c=h.slice(n,s).replace(/[^]/g,"$&̲"),p;n>15?p="…"+h.slice(n-15,n):p=h.slice(0,n);var g;s+15":">","<":"<",'"':""","'":"'"},ya=/[&><"']/g;function xa(r){return String(r).replace(ya,e=>ba[e])}var vr=function r(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?r(e.body[0]):e:e.type==="font"?r(e.body):e},wa=function(e){var t=vr(e);return t.type==="mathord"||t.type==="textord"||t.type==="atom"},ka=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Sa=function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?t[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?null:t[1].toLowerCase():"_relative"},q={contains:fa,deflt:pa,escape:xa,hyphenate:ga,getBaseElem:vr,isCharacterBox:wa,protocolFromUrl:Sa},ze={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 "},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 ",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:r=>"#"+r},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(r,e)=>(e.push(r),e)},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:r=>Math.max(0,r),cli:"--min-rule-thickness ",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:r=>Math.max(0,r),cli:"-s, --max-size ",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:r=>Math.max(0,r),cli:"-e, --max-expand ",cliProcessor:r=>r==="Infinity"?1/0:parseInt(r)},globalGroup:{type:"boolean",cli:!1}};function Ma(r){if(r.default)return r.default;var e=r.type,t=Array.isArray(e)?e[0]:e;if(typeof t!="string")return t.enum[0];switch(t){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class dt{constructor(e){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||{};for(var t in ze)if(ze.hasOwnProperty(t)){var a=ze[t];this[t]=e[t]!==void 0?a.processor?a.processor(e[t]):e[t]:Ma(a)}}reportNonstrict(e,t,a){var n=this.strict;if(typeof n=="function"&&(n=n(e,t,a)),!(!n||n==="ignore")){if(n===!0||n==="error")throw new M("LaTeX-incompatible input and strict mode is set to 'error': "+(t+" ["+e+"]"),a);n==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]"))}}useStrictBehavior(e,t,a){var n=this.strict;if(typeof n=="function")try{n=n(e,t,a)}catch{n="error"}return!n||n==="ignore"?!1:n===!0||n==="error"?!0:n==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(t+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+n+"': "+t+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var t=q.protocolFromUrl(e.url);if(t==null)return!1;e.protocol=t}var a=typeof this.trust=="function"?this.trust(e):this.trust;return!!a}}class O0{constructor(e,t,a){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=a}sup(){return y0[za[this.id]]}sub(){return y0[Aa[this.id]]}fracNum(){return y0[Ta[this.id]]}fracDen(){return y0[Ba[this.id]]}cramp(){return y0[Da[this.id]]}text(){return y0[Ca[this.id]]}isTight(){return this.size>=2}}var ft=0,Te=1,ee=2,B0=3,le=4,d0=5,te=6,n0=7,y0=[new O0(ft,0,!1),new O0(Te,0,!0),new O0(ee,1,!1),new O0(B0,1,!0),new O0(le,2,!1),new O0(d0,2,!0),new O0(te,3,!1),new O0(n0,3,!0)],za=[le,d0,le,d0,te,n0,te,n0],Aa=[d0,d0,d0,d0,n0,n0,n0,n0],Ta=[ee,B0,le,d0,te,n0,te,n0],Ba=[B0,B0,d0,d0,n0,n0,n0,n0],Da=[Te,Te,B0,B0,d0,d0,n0,n0],Ca=[ft,Te,ee,B0,ee,B0,ee,B0],R={DISPLAY:y0[ft],TEXT:y0[ee],SCRIPT:y0[le],SCRIPTSCRIPT:y0[te]},nt=[{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]]}];function Na(r){for(var e=0;e=n[0]&&r<=n[1])return t.name}return null}var Ae=[];nt.forEach(r=>r.blocks.forEach(e=>Ae.push(...e)));function gr(r){for(var e=0;e=Ae[e]&&r<=Ae[e+1])return!0;return!1}var _0=80,qa=function(e,t){return"M95,"+(622+e+t)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.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 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+e/2.075+" -"+e+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+e)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ea=function(e,t){return"M263,"+(601+e+t)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+e/2.084+" -"+e+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+e)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ra=function(e,t){return"M983 "+(10+e+t)+` +l`+e/3.13+" -"+e+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"},Ia=function(e,t){return"M424,"+(2398+e+t)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-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 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+e)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+t+` +h400000v`+(40+e)+"h-400000z"},Fa=function(e,t){return"M473,"+(2713+e+t)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-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 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"},Oa=function(e){var t=e/2;return"M400000 "+e+" H0 L"+t+" 0 l65 45 L145 "+(e-80)+" H400000z"},Ha=function(e,t,a){var n=a-54-t-e;return"M702 "+(e+t)+"H400000"+(40+e)+` +H742v`+n+`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 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+t+"H400000v"+(40+e)+"H742z"},La=function(e,t,a){t=1e3*t;var n="";switch(e){case"sqrtMain":n=qa(t,_0);break;case"sqrtSize1":n=Ea(t,_0);break;case"sqrtSize2":n=Ra(t,_0);break;case"sqrtSize3":n=Ia(t,_0);break;case"sqrtSize4":n=Fa(t,_0);break;case"sqrtTall":n=Ha(t,_0,a)}return n},Pa=function(e,t){switch(e){case"⎜":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"∣":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"∥":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z"+("M367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z");case"⎟":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"⎢":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"⎥":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"⎪":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"⏐":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"‖":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257z"+("M478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z");default:return""}},Ft={doubleleftarrow:`M262 157 +l10-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 + 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 + 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 +c2 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 + 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 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-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 + 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 +-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 +-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 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-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 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 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 +-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 +c-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 + 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 + 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 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 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 + 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 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 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 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-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 +-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 +-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 + 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 +-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 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 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 +-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 + 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 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-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 +-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 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 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-70-101l-7-8h399905v-40H95l7-8 +c28.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 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-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 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 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 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.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 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 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 +-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 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.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 +60.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 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 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 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.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 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 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 +-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 + 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 + 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 +-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 +-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 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-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 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.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 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-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 + 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 + 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 +-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 +-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 + 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 +-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 + 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 +m0 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 + 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 +-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 +-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 + 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 + 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 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-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 + 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 +-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 + 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 +M399960 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 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-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 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 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 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 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 +c-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 + 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 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 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 +-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 + 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 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-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 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 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 + 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 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -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 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-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 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-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 +-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 +-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 +-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, +-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, +-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, +-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, +-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 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-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 +s-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 +121.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 +s2.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 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-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 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 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-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 +-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 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,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 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-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 +c-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 +M0 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 +c1.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, +1c0,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, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 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 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-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 +c-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 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Ga=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v1759 h347 v-84 +H403z 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 +M347 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 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-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 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+t+` v585 h43z +M367 15 v585 v`+t+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-t+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-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 +MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+` v602 h84z +M403 1759 V0 H319 V1759 v`+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+` v602 h84z +M347 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 +c-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, +-36,557 l0,`+(t+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.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 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(t+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-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, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(t+9)+` +c-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 +c-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 +c0,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 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-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.")}};class ue{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 q.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),t=0;tt.toText();return this.children.map(e).join("")}}var x0={"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]}},ve={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]},Ot={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function Va(r,e){x0[r]=e}function pt(r,e,t){if(!x0[e])throw new Error("Font metrics not found for font: "+e+".");var a=r.charCodeAt(0),n=x0[e][a];if(!n&&r[0]in Ot&&(a=Ot[r[0]].charCodeAt(0),n=x0[e][a]),!n&&t==="text"&&gr(a)&&(n=x0[e][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var Ue={};function Ua(r){var e;if(r>=5?e=0:r>=3?e=1:e=2,!Ue[e]){var t=Ue[e]={cssEmPerMu:ve.quad[e]/18};for(var a in ve)ve.hasOwnProperty(a)&&(t[a]=ve[a][e])}return Ue[e]}var Ya=[[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]],Ht=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Lt=function(e,t){return t.size<2?e:Ya[e-1][t.size-1]};class T0{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||T0.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=Ht[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 a in e)e.hasOwnProperty(a)&&(t[a]=e[a]);return new T0(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:Lt(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:Ht[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=Lt(T0.BASESIZE,e);return this.size===t&&this.textSize===T0.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!==T0.BASESIZE?["sizing","reset-size"+this.size,"size"+T0.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=Ua(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}T0.BASESIZE=6;var it={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},Xa={ex:!0,em:!0,mu:!0},br=function(e){return typeof e!="string"&&(e=e.unit),e in it||e in Xa||e==="ex"},K=function(e,t){var a;if(e.unit in it)a=it[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(e.unit==="mu")a=t.fontMetrics().cssEmPerMu;else{var n;if(t.style.isTight()?n=t.havingStyle(t.style.text()):n=t,e.unit==="ex")a=n.fontMetrics().xHeight;else if(e.unit==="em")a=n.fontMetrics().quad;else throw new M("Invalid unit: '"+e.unit+"'");n!==t&&(a*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*a,t.maxSize)},A=function(e){return+e.toFixed(4)+"em"},P0=function(e){return e.filter(t=>t).join(" ")},yr=function(e,t,a){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=a||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},xr=function(e){var t=document.createElement(e);t.className=P0(this.classes);for(var a in this.style)this.style.hasOwnProperty(a)&&(t.style[a]=this.style[a]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var s=0;s",t};class he{constructor(e,t,a,n){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,yr.call(this,e,a,n),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return q.contains(this.classes,e)}toNode(){return xr.call(this,"span")}toMarkup(){return wr.call(this,"span")}}class vt{constructor(e,t,a,n){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,yr.call(this,t,n),this.children=a||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return q.contains(this.classes,e)}toNode(){return xr.call(this,"a")}toMarkup(){return wr.call(this,"a")}}class $a{constructor(e,t,a){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=a}hasClass(e){return q.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var t in this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+q.escape(this.alt)+'0&&(t=document.createElement("span"),t.style.marginRight=A(this.italic)),this.classes.length>0&&(t=t||document.createElement("span"),t.className=P0(this.classes));for(var a in this.style)this.style.hasOwnProperty(a)&&(t=t||document.createElement("span"),t.style[a]=this.style[a]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(a+="margin-right:"+this.italic+"em;");for(var n in this.style)this.style.hasOwnProperty(n)&&(a+=q.hyphenate(n)+":"+this.style[n]+";");a&&(e=!0,t+=' style="'+q.escape(a)+'"');var s=q.escape(this.text);return e?(t+=">",t+=s,t+="",t):s}}class C0{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n':''}}class st{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"line");for(var a in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,a)&&t.setAttribute(a,this.attributes[a]);return t}toMarkup(){var e=" but got "+String(r)+".")}var Za={bin:1,close:1,inner:1,open:1,punct:1,rel:1},Ka={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},$={math:{},text:{}};function i(r,e,t,a,n,s){$[r][n]={font:e,group:t,replace:a},s&&a&&($[r][a]=$[r][n])}var l="math",k="text",u="main",d="ams",W="accent-token",D="bin",i0="close",re="inner",E="mathord",_="op-token",m0="open",qe="punct",f="rel",E0="spacing",v="textord";i(l,u,f,"≡","\\equiv",!0);i(l,u,f,"≺","\\prec",!0);i(l,u,f,"≻","\\succ",!0);i(l,u,f,"∼","\\sim",!0);i(l,u,f,"⊥","\\perp");i(l,u,f,"⪯","\\preceq",!0);i(l,u,f,"⪰","\\succeq",!0);i(l,u,f,"≃","\\simeq",!0);i(l,u,f,"∣","\\mid",!0);i(l,u,f,"≪","\\ll",!0);i(l,u,f,"≫","\\gg",!0);i(l,u,f,"≍","\\asymp",!0);i(l,u,f,"∥","\\parallel");i(l,u,f,"⋈","\\bowtie",!0);i(l,u,f,"⌣","\\smile",!0);i(l,u,f,"⊑","\\sqsubseteq",!0);i(l,u,f,"⊒","\\sqsupseteq",!0);i(l,u,f,"≐","\\doteq",!0);i(l,u,f,"⌢","\\frown",!0);i(l,u,f,"∋","\\ni",!0);i(l,u,f,"∝","\\propto",!0);i(l,u,f,"⊢","\\vdash",!0);i(l,u,f,"⊣","\\dashv",!0);i(l,u,f,"∋","\\owns");i(l,u,qe,".","\\ldotp");i(l,u,qe,"⋅","\\cdotp");i(l,u,v,"#","\\#");i(k,u,v,"#","\\#");i(l,u,v,"&","\\&");i(k,u,v,"&","\\&");i(l,u,v,"ℵ","\\aleph",!0);i(l,u,v,"∀","\\forall",!0);i(l,u,v,"ℏ","\\hbar",!0);i(l,u,v,"∃","\\exists",!0);i(l,u,v,"∇","\\nabla",!0);i(l,u,v,"♭","\\flat",!0);i(l,u,v,"ℓ","\\ell",!0);i(l,u,v,"♮","\\natural",!0);i(l,u,v,"♣","\\clubsuit",!0);i(l,u,v,"℘","\\wp",!0);i(l,u,v,"♯","\\sharp",!0);i(l,u,v,"♢","\\diamondsuit",!0);i(l,u,v,"ℜ","\\Re",!0);i(l,u,v,"♡","\\heartsuit",!0);i(l,u,v,"ℑ","\\Im",!0);i(l,u,v,"♠","\\spadesuit",!0);i(l,u,v,"§","\\S",!0);i(k,u,v,"§","\\S");i(l,u,v,"¶","\\P",!0);i(k,u,v,"¶","\\P");i(l,u,v,"†","\\dag");i(k,u,v,"†","\\dag");i(k,u,v,"†","\\textdagger");i(l,u,v,"‡","\\ddag");i(k,u,v,"‡","\\ddag");i(k,u,v,"‡","\\textdaggerdbl");i(l,u,i0,"⎱","\\rmoustache",!0);i(l,u,m0,"⎰","\\lmoustache",!0);i(l,u,i0,"⟯","\\rgroup",!0);i(l,u,m0,"⟮","\\lgroup",!0);i(l,u,D,"∓","\\mp",!0);i(l,u,D,"⊖","\\ominus",!0);i(l,u,D,"⊎","\\uplus",!0);i(l,u,D,"⊓","\\sqcap",!0);i(l,u,D,"∗","\\ast");i(l,u,D,"⊔","\\sqcup",!0);i(l,u,D,"◯","\\bigcirc",!0);i(l,u,D,"∙","\\bullet",!0);i(l,u,D,"‡","\\ddagger");i(l,u,D,"≀","\\wr",!0);i(l,u,D,"⨿","\\amalg");i(l,u,D,"&","\\And");i(l,u,f,"⟵","\\longleftarrow",!0);i(l,u,f,"⇐","\\Leftarrow",!0);i(l,u,f,"⟸","\\Longleftarrow",!0);i(l,u,f,"⟶","\\longrightarrow",!0);i(l,u,f,"⇒","\\Rightarrow",!0);i(l,u,f,"⟹","\\Longrightarrow",!0);i(l,u,f,"↔","\\leftrightarrow",!0);i(l,u,f,"⟷","\\longleftrightarrow",!0);i(l,u,f,"⇔","\\Leftrightarrow",!0);i(l,u,f,"⟺","\\Longleftrightarrow",!0);i(l,u,f,"↦","\\mapsto",!0);i(l,u,f,"⟼","\\longmapsto",!0);i(l,u,f,"↗","\\nearrow",!0);i(l,u,f,"↩","\\hookleftarrow",!0);i(l,u,f,"↪","\\hookrightarrow",!0);i(l,u,f,"↘","\\searrow",!0);i(l,u,f,"↼","\\leftharpoonup",!0);i(l,u,f,"⇀","\\rightharpoonup",!0);i(l,u,f,"↙","\\swarrow",!0);i(l,u,f,"↽","\\leftharpoondown",!0);i(l,u,f,"⇁","\\rightharpoondown",!0);i(l,u,f,"↖","\\nwarrow",!0);i(l,u,f,"⇌","\\rightleftharpoons",!0);i(l,d,f,"≮","\\nless",!0);i(l,d,f,"","\\@nleqslant");i(l,d,f,"","\\@nleqq");i(l,d,f,"⪇","\\lneq",!0);i(l,d,f,"≨","\\lneqq",!0);i(l,d,f,"","\\@lvertneqq");i(l,d,f,"⋦","\\lnsim",!0);i(l,d,f,"⪉","\\lnapprox",!0);i(l,d,f,"⊀","\\nprec",!0);i(l,d,f,"⋠","\\npreceq",!0);i(l,d,f,"⋨","\\precnsim",!0);i(l,d,f,"⪹","\\precnapprox",!0);i(l,d,f,"≁","\\nsim",!0);i(l,d,f,"","\\@nshortmid");i(l,d,f,"∤","\\nmid",!0);i(l,d,f,"⊬","\\nvdash",!0);i(l,d,f,"⊭","\\nvDash",!0);i(l,d,f,"⋪","\\ntriangleleft");i(l,d,f,"⋬","\\ntrianglelefteq",!0);i(l,d,f,"⊊","\\subsetneq",!0);i(l,d,f,"","\\@varsubsetneq");i(l,d,f,"⫋","\\subsetneqq",!0);i(l,d,f,"","\\@varsubsetneqq");i(l,d,f,"≯","\\ngtr",!0);i(l,d,f,"","\\@ngeqslant");i(l,d,f,"","\\@ngeqq");i(l,d,f,"⪈","\\gneq",!0);i(l,d,f,"≩","\\gneqq",!0);i(l,d,f,"","\\@gvertneqq");i(l,d,f,"⋧","\\gnsim",!0);i(l,d,f,"⪊","\\gnapprox",!0);i(l,d,f,"⊁","\\nsucc",!0);i(l,d,f,"⋡","\\nsucceq",!0);i(l,d,f,"⋩","\\succnsim",!0);i(l,d,f,"⪺","\\succnapprox",!0);i(l,d,f,"≆","\\ncong",!0);i(l,d,f,"","\\@nshortparallel");i(l,d,f,"∦","\\nparallel",!0);i(l,d,f,"⊯","\\nVDash",!0);i(l,d,f,"⋫","\\ntriangleright");i(l,d,f,"⋭","\\ntrianglerighteq",!0);i(l,d,f,"","\\@nsupseteqq");i(l,d,f,"⊋","\\supsetneq",!0);i(l,d,f,"","\\@varsupsetneq");i(l,d,f,"⫌","\\supsetneqq",!0);i(l,d,f,"","\\@varsupsetneqq");i(l,d,f,"⊮","\\nVdash",!0);i(l,d,f,"⪵","\\precneqq",!0);i(l,d,f,"⪶","\\succneqq",!0);i(l,d,f,"","\\@nsubseteqq");i(l,d,D,"⊴","\\unlhd");i(l,d,D,"⊵","\\unrhd");i(l,d,f,"↚","\\nleftarrow",!0);i(l,d,f,"↛","\\nrightarrow",!0);i(l,d,f,"⇍","\\nLeftarrow",!0);i(l,d,f,"⇏","\\nRightarrow",!0);i(l,d,f,"↮","\\nleftrightarrow",!0);i(l,d,f,"⇎","\\nLeftrightarrow",!0);i(l,d,f,"△","\\vartriangle");i(l,d,v,"ℏ","\\hslash");i(l,d,v,"▽","\\triangledown");i(l,d,v,"◊","\\lozenge");i(l,d,v,"Ⓢ","\\circledS");i(l,d,v,"®","\\circledR");i(k,d,v,"®","\\circledR");i(l,d,v,"∡","\\measuredangle",!0);i(l,d,v,"∄","\\nexists");i(l,d,v,"℧","\\mho");i(l,d,v,"Ⅎ","\\Finv",!0);i(l,d,v,"⅁","\\Game",!0);i(l,d,v,"‵","\\backprime");i(l,d,v,"▲","\\blacktriangle");i(l,d,v,"▼","\\blacktriangledown");i(l,d,v,"■","\\blacksquare");i(l,d,v,"⧫","\\blacklozenge");i(l,d,v,"★","\\bigstar");i(l,d,v,"∢","\\sphericalangle",!0);i(l,d,v,"∁","\\complement",!0);i(l,d,v,"ð","\\eth",!0);i(k,u,v,"ð","ð");i(l,d,v,"╱","\\diagup");i(l,d,v,"╲","\\diagdown");i(l,d,v,"□","\\square");i(l,d,v,"□","\\Box");i(l,d,v,"◊","\\Diamond");i(l,d,v,"¥","\\yen",!0);i(k,d,v,"¥","\\yen",!0);i(l,d,v,"✓","\\checkmark",!0);i(k,d,v,"✓","\\checkmark");i(l,d,v,"ℶ","\\beth",!0);i(l,d,v,"ℸ","\\daleth",!0);i(l,d,v,"ℷ","\\gimel",!0);i(l,d,v,"ϝ","\\digamma",!0);i(l,d,v,"ϰ","\\varkappa");i(l,d,m0,"┌","\\@ulcorner",!0);i(l,d,i0,"┐","\\@urcorner",!0);i(l,d,m0,"└","\\@llcorner",!0);i(l,d,i0,"┘","\\@lrcorner",!0);i(l,d,f,"≦","\\leqq",!0);i(l,d,f,"⩽","\\leqslant",!0);i(l,d,f,"⪕","\\eqslantless",!0);i(l,d,f,"≲","\\lesssim",!0);i(l,d,f,"⪅","\\lessapprox",!0);i(l,d,f,"≊","\\approxeq",!0);i(l,d,D,"⋖","\\lessdot");i(l,d,f,"⋘","\\lll",!0);i(l,d,f,"≶","\\lessgtr",!0);i(l,d,f,"⋚","\\lesseqgtr",!0);i(l,d,f,"⪋","\\lesseqqgtr",!0);i(l,d,f,"≑","\\doteqdot");i(l,d,f,"≓","\\risingdotseq",!0);i(l,d,f,"≒","\\fallingdotseq",!0);i(l,d,f,"∽","\\backsim",!0);i(l,d,f,"⋍","\\backsimeq",!0);i(l,d,f,"⫅","\\subseteqq",!0);i(l,d,f,"⋐","\\Subset",!0);i(l,d,f,"⊏","\\sqsubset",!0);i(l,d,f,"≼","\\preccurlyeq",!0);i(l,d,f,"⋞","\\curlyeqprec",!0);i(l,d,f,"≾","\\precsim",!0);i(l,d,f,"⪷","\\precapprox",!0);i(l,d,f,"⊲","\\vartriangleleft");i(l,d,f,"⊴","\\trianglelefteq");i(l,d,f,"⊨","\\vDash",!0);i(l,d,f,"⊪","\\Vvdash",!0);i(l,d,f,"⌣","\\smallsmile");i(l,d,f,"⌢","\\smallfrown");i(l,d,f,"≏","\\bumpeq",!0);i(l,d,f,"≎","\\Bumpeq",!0);i(l,d,f,"≧","\\geqq",!0);i(l,d,f,"⩾","\\geqslant",!0);i(l,d,f,"⪖","\\eqslantgtr",!0);i(l,d,f,"≳","\\gtrsim",!0);i(l,d,f,"⪆","\\gtrapprox",!0);i(l,d,D,"⋗","\\gtrdot");i(l,d,f,"⋙","\\ggg",!0);i(l,d,f,"≷","\\gtrless",!0);i(l,d,f,"⋛","\\gtreqless",!0);i(l,d,f,"⪌","\\gtreqqless",!0);i(l,d,f,"≖","\\eqcirc",!0);i(l,d,f,"≗","\\circeq",!0);i(l,d,f,"≜","\\triangleq",!0);i(l,d,f,"∼","\\thicksim");i(l,d,f,"≈","\\thickapprox");i(l,d,f,"⫆","\\supseteqq",!0);i(l,d,f,"⋑","\\Supset",!0);i(l,d,f,"⊐","\\sqsupset",!0);i(l,d,f,"≽","\\succcurlyeq",!0);i(l,d,f,"⋟","\\curlyeqsucc",!0);i(l,d,f,"≿","\\succsim",!0);i(l,d,f,"⪸","\\succapprox",!0);i(l,d,f,"⊳","\\vartriangleright");i(l,d,f,"⊵","\\trianglerighteq");i(l,d,f,"⊩","\\Vdash",!0);i(l,d,f,"∣","\\shortmid");i(l,d,f,"∥","\\shortparallel");i(l,d,f,"≬","\\between",!0);i(l,d,f,"⋔","\\pitchfork",!0);i(l,d,f,"∝","\\varpropto");i(l,d,f,"◀","\\blacktriangleleft");i(l,d,f,"∴","\\therefore",!0);i(l,d,f,"∍","\\backepsilon");i(l,d,f,"▶","\\blacktriangleright");i(l,d,f,"∵","\\because",!0);i(l,d,f,"⋘","\\llless");i(l,d,f,"⋙","\\gggtr");i(l,d,D,"⊲","\\lhd");i(l,d,D,"⊳","\\rhd");i(l,d,f,"≂","\\eqsim",!0);i(l,u,f,"⋈","\\Join");i(l,d,f,"≑","\\Doteq",!0);i(l,d,D,"∔","\\dotplus",!0);i(l,d,D,"∖","\\smallsetminus");i(l,d,D,"⋒","\\Cap",!0);i(l,d,D,"⋓","\\Cup",!0);i(l,d,D,"⩞","\\doublebarwedge",!0);i(l,d,D,"⊟","\\boxminus",!0);i(l,d,D,"⊞","\\boxplus",!0);i(l,d,D,"⋇","\\divideontimes",!0);i(l,d,D,"⋉","\\ltimes",!0);i(l,d,D,"⋊","\\rtimes",!0);i(l,d,D,"⋋","\\leftthreetimes",!0);i(l,d,D,"⋌","\\rightthreetimes",!0);i(l,d,D,"⋏","\\curlywedge",!0);i(l,d,D,"⋎","\\curlyvee",!0);i(l,d,D,"⊝","\\circleddash",!0);i(l,d,D,"⊛","\\circledast",!0);i(l,d,D,"⋅","\\centerdot");i(l,d,D,"⊺","\\intercal",!0);i(l,d,D,"⋒","\\doublecap");i(l,d,D,"⋓","\\doublecup");i(l,d,D,"⊠","\\boxtimes",!0);i(l,d,f,"⇢","\\dashrightarrow",!0);i(l,d,f,"⇠","\\dashleftarrow",!0);i(l,d,f,"⇇","\\leftleftarrows",!0);i(l,d,f,"⇆","\\leftrightarrows",!0);i(l,d,f,"⇚","\\Lleftarrow",!0);i(l,d,f,"↞","\\twoheadleftarrow",!0);i(l,d,f,"↢","\\leftarrowtail",!0);i(l,d,f,"↫","\\looparrowleft",!0);i(l,d,f,"⇋","\\leftrightharpoons",!0);i(l,d,f,"↶","\\curvearrowleft",!0);i(l,d,f,"↺","\\circlearrowleft",!0);i(l,d,f,"↰","\\Lsh",!0);i(l,d,f,"⇈","\\upuparrows",!0);i(l,d,f,"↿","\\upharpoonleft",!0);i(l,d,f,"⇃","\\downharpoonleft",!0);i(l,u,f,"⊶","\\origof",!0);i(l,u,f,"⊷","\\imageof",!0);i(l,d,f,"⊸","\\multimap",!0);i(l,d,f,"↭","\\leftrightsquigarrow",!0);i(l,d,f,"⇉","\\rightrightarrows",!0);i(l,d,f,"⇄","\\rightleftarrows",!0);i(l,d,f,"↠","\\twoheadrightarrow",!0);i(l,d,f,"↣","\\rightarrowtail",!0);i(l,d,f,"↬","\\looparrowright",!0);i(l,d,f,"↷","\\curvearrowright",!0);i(l,d,f,"↻","\\circlearrowright",!0);i(l,d,f,"↱","\\Rsh",!0);i(l,d,f,"⇊","\\downdownarrows",!0);i(l,d,f,"↾","\\upharpoonright",!0);i(l,d,f,"⇂","\\downharpoonright",!0);i(l,d,f,"⇝","\\rightsquigarrow",!0);i(l,d,f,"⇝","\\leadsto");i(l,d,f,"⇛","\\Rrightarrow",!0);i(l,d,f,"↾","\\restriction");i(l,u,v,"‘","`");i(l,u,v,"$","\\$");i(k,u,v,"$","\\$");i(k,u,v,"$","\\textdollar");i(l,u,v,"%","\\%");i(k,u,v,"%","\\%");i(l,u,v,"_","\\_");i(k,u,v,"_","\\_");i(k,u,v,"_","\\textunderscore");i(l,u,v,"∠","\\angle",!0);i(l,u,v,"∞","\\infty",!0);i(l,u,v,"′","\\prime");i(l,u,v,"△","\\triangle");i(l,u,v,"Γ","\\Gamma",!0);i(l,u,v,"Δ","\\Delta",!0);i(l,u,v,"Θ","\\Theta",!0);i(l,u,v,"Λ","\\Lambda",!0);i(l,u,v,"Ξ","\\Xi",!0);i(l,u,v,"Π","\\Pi",!0);i(l,u,v,"Σ","\\Sigma",!0);i(l,u,v,"Υ","\\Upsilon",!0);i(l,u,v,"Φ","\\Phi",!0);i(l,u,v,"Ψ","\\Psi",!0);i(l,u,v,"Ω","\\Omega",!0);i(l,u,v,"A","Α");i(l,u,v,"B","Β");i(l,u,v,"E","Ε");i(l,u,v,"Z","Ζ");i(l,u,v,"H","Η");i(l,u,v,"I","Ι");i(l,u,v,"K","Κ");i(l,u,v,"M","Μ");i(l,u,v,"N","Ν");i(l,u,v,"O","Ο");i(l,u,v,"P","Ρ");i(l,u,v,"T","Τ");i(l,u,v,"X","Χ");i(l,u,v,"¬","\\neg",!0);i(l,u,v,"¬","\\lnot");i(l,u,v,"⊤","\\top");i(l,u,v,"⊥","\\bot");i(l,u,v,"∅","\\emptyset");i(l,d,v,"∅","\\varnothing");i(l,u,E,"α","\\alpha",!0);i(l,u,E,"β","\\beta",!0);i(l,u,E,"γ","\\gamma",!0);i(l,u,E,"δ","\\delta",!0);i(l,u,E,"ϵ","\\epsilon",!0);i(l,u,E,"ζ","\\zeta",!0);i(l,u,E,"η","\\eta",!0);i(l,u,E,"θ","\\theta",!0);i(l,u,E,"ι","\\iota",!0);i(l,u,E,"κ","\\kappa",!0);i(l,u,E,"λ","\\lambda",!0);i(l,u,E,"μ","\\mu",!0);i(l,u,E,"ν","\\nu",!0);i(l,u,E,"ξ","\\xi",!0);i(l,u,E,"ο","\\omicron",!0);i(l,u,E,"π","\\pi",!0);i(l,u,E,"ρ","\\rho",!0);i(l,u,E,"σ","\\sigma",!0);i(l,u,E,"τ","\\tau",!0);i(l,u,E,"υ","\\upsilon",!0);i(l,u,E,"ϕ","\\phi",!0);i(l,u,E,"χ","\\chi",!0);i(l,u,E,"ψ","\\psi",!0);i(l,u,E,"ω","\\omega",!0);i(l,u,E,"ε","\\varepsilon",!0);i(l,u,E,"ϑ","\\vartheta",!0);i(l,u,E,"ϖ","\\varpi",!0);i(l,u,E,"ϱ","\\varrho",!0);i(l,u,E,"ς","\\varsigma",!0);i(l,u,E,"φ","\\varphi",!0);i(l,u,D,"∗","*",!0);i(l,u,D,"+","+");i(l,u,D,"−","-",!0);i(l,u,D,"⋅","\\cdot",!0);i(l,u,D,"∘","\\circ",!0);i(l,u,D,"÷","\\div",!0);i(l,u,D,"±","\\pm",!0);i(l,u,D,"×","\\times",!0);i(l,u,D,"∩","\\cap",!0);i(l,u,D,"∪","\\cup",!0);i(l,u,D,"∖","\\setminus",!0);i(l,u,D,"∧","\\land");i(l,u,D,"∨","\\lor");i(l,u,D,"∧","\\wedge",!0);i(l,u,D,"∨","\\vee",!0);i(l,u,v,"√","\\surd");i(l,u,m0,"⟨","\\langle",!0);i(l,u,m0,"∣","\\lvert");i(l,u,m0,"∥","\\lVert");i(l,u,i0,"?","?");i(l,u,i0,"!","!");i(l,u,i0,"⟩","\\rangle",!0);i(l,u,i0,"∣","\\rvert");i(l,u,i0,"∥","\\rVert");i(l,u,f,"=","=");i(l,u,f,":",":");i(l,u,f,"≈","\\approx",!0);i(l,u,f,"≅","\\cong",!0);i(l,u,f,"≥","\\ge");i(l,u,f,"≥","\\geq",!0);i(l,u,f,"←","\\gets");i(l,u,f,">","\\gt",!0);i(l,u,f,"∈","\\in",!0);i(l,u,f,"","\\@not");i(l,u,f,"⊂","\\subset",!0);i(l,u,f,"⊃","\\supset",!0);i(l,u,f,"⊆","\\subseteq",!0);i(l,u,f,"⊇","\\supseteq",!0);i(l,d,f,"⊈","\\nsubseteq",!0);i(l,d,f,"⊉","\\nsupseteq",!0);i(l,u,f,"⊨","\\models");i(l,u,f,"←","\\leftarrow",!0);i(l,u,f,"≤","\\le");i(l,u,f,"≤","\\leq",!0);i(l,u,f,"<","\\lt",!0);i(l,u,f,"→","\\rightarrow",!0);i(l,u,f,"→","\\to");i(l,d,f,"≱","\\ngeq",!0);i(l,d,f,"≰","\\nleq",!0);i(l,u,E0," ","\\ ");i(l,u,E0," ","\\space");i(l,u,E0," ","\\nobreakspace");i(k,u,E0," ","\\ ");i(k,u,E0," "," ");i(k,u,E0," ","\\space");i(k,u,E0," ","\\nobreakspace");i(l,u,E0,null,"\\nobreak");i(l,u,E0,null,"\\allowbreak");i(l,u,qe,",",",");i(l,u,qe,";",";");i(l,d,D,"⊼","\\barwedge",!0);i(l,d,D,"⊻","\\veebar",!0);i(l,u,D,"⊙","\\odot",!0);i(l,u,D,"⊕","\\oplus",!0);i(l,u,D,"⊗","\\otimes",!0);i(l,u,v,"∂","\\partial",!0);i(l,u,D,"⊘","\\oslash",!0);i(l,d,D,"⊚","\\circledcirc",!0);i(l,d,D,"⊡","\\boxdot",!0);i(l,u,D,"△","\\bigtriangleup");i(l,u,D,"▽","\\bigtriangledown");i(l,u,D,"†","\\dagger");i(l,u,D,"⋄","\\diamond");i(l,u,D,"⋆","\\star");i(l,u,D,"◃","\\triangleleft");i(l,u,D,"▹","\\triangleright");i(l,u,m0,"{","\\{");i(k,u,v,"{","\\{");i(k,u,v,"{","\\textbraceleft");i(l,u,i0,"}","\\}");i(k,u,v,"}","\\}");i(k,u,v,"}","\\textbraceright");i(l,u,m0,"{","\\lbrace");i(l,u,i0,"}","\\rbrace");i(l,u,m0,"[","\\lbrack",!0);i(k,u,v,"[","\\lbrack",!0);i(l,u,i0,"]","\\rbrack",!0);i(k,u,v,"]","\\rbrack",!0);i(l,u,m0,"(","\\lparen",!0);i(l,u,i0,")","\\rparen",!0);i(k,u,v,"<","\\textless",!0);i(k,u,v,">","\\textgreater",!0);i(l,u,m0,"⌊","\\lfloor",!0);i(l,u,i0,"⌋","\\rfloor",!0);i(l,u,m0,"⌈","\\lceil",!0);i(l,u,i0,"⌉","\\rceil",!0);i(l,u,v,"\\","\\backslash");i(l,u,v,"∣","|");i(l,u,v,"∣","\\vert");i(k,u,v,"|","\\textbar",!0);i(l,u,v,"∥","\\|");i(l,u,v,"∥","\\Vert");i(k,u,v,"∥","\\textbardbl");i(k,u,v,"~","\\textasciitilde");i(k,u,v,"\\","\\textbackslash");i(k,u,v,"^","\\textasciicircum");i(l,u,f,"↑","\\uparrow",!0);i(l,u,f,"⇑","\\Uparrow",!0);i(l,u,f,"↓","\\downarrow",!0);i(l,u,f,"⇓","\\Downarrow",!0);i(l,u,f,"↕","\\updownarrow",!0);i(l,u,f,"⇕","\\Updownarrow",!0);i(l,u,_,"∐","\\coprod");i(l,u,_,"⋁","\\bigvee");i(l,u,_,"⋀","\\bigwedge");i(l,u,_,"⨄","\\biguplus");i(l,u,_,"⋂","\\bigcap");i(l,u,_,"⋃","\\bigcup");i(l,u,_,"∫","\\int");i(l,u,_,"∫","\\intop");i(l,u,_,"∬","\\iint");i(l,u,_,"∭","\\iiint");i(l,u,_,"∏","\\prod");i(l,u,_,"∑","\\sum");i(l,u,_,"⨂","\\bigotimes");i(l,u,_,"⨁","\\bigoplus");i(l,u,_,"⨀","\\bigodot");i(l,u,_,"∮","\\oint");i(l,u,_,"∯","\\oiint");i(l,u,_,"∰","\\oiiint");i(l,u,_,"⨆","\\bigsqcup");i(l,u,_,"∫","\\smallint");i(k,u,re,"…","\\textellipsis");i(l,u,re,"…","\\mathellipsis");i(k,u,re,"…","\\ldots",!0);i(l,u,re,"…","\\ldots",!0);i(l,u,re,"⋯","\\@cdots",!0);i(l,u,re,"⋱","\\ddots",!0);i(l,u,v,"⋮","\\varvdots");i(k,u,v,"⋮","\\varvdots");i(l,u,W,"ˊ","\\acute");i(l,u,W,"ˋ","\\grave");i(l,u,W,"¨","\\ddot");i(l,u,W,"~","\\tilde");i(l,u,W,"ˉ","\\bar");i(l,u,W,"˘","\\breve");i(l,u,W,"ˇ","\\check");i(l,u,W,"^","\\hat");i(l,u,W,"⃗","\\vec");i(l,u,W,"˙","\\dot");i(l,u,W,"˚","\\mathring");i(l,u,E,"","\\@imath");i(l,u,E,"","\\@jmath");i(l,u,v,"ı","ı");i(l,u,v,"ȷ","ȷ");i(k,u,v,"ı","\\i",!0);i(k,u,v,"ȷ","\\j",!0);i(k,u,v,"ß","\\ss",!0);i(k,u,v,"æ","\\ae",!0);i(k,u,v,"œ","\\oe",!0);i(k,u,v,"ø","\\o",!0);i(k,u,v,"Æ","\\AE",!0);i(k,u,v,"Œ","\\OE",!0);i(k,u,v,"Ø","\\O",!0);i(k,u,W,"ˊ","\\'");i(k,u,W,"ˋ","\\`");i(k,u,W,"ˆ","\\^");i(k,u,W,"˜","\\~");i(k,u,W,"ˉ","\\=");i(k,u,W,"˘","\\u");i(k,u,W,"˙","\\.");i(k,u,W,"¸","\\c");i(k,u,W,"˚","\\r");i(k,u,W,"ˇ","\\v");i(k,u,W,"¨",'\\"');i(k,u,W,"˝","\\H");i(k,u,W,"◯","\\textcircled");var kr={"--":!0,"---":!0,"``":!0,"''":!0};i(k,u,v,"–","--",!0);i(k,u,v,"–","\\textendash");i(k,u,v,"—","---",!0);i(k,u,v,"—","\\textemdash");i(k,u,v,"‘","`",!0);i(k,u,v,"‘","\\textquoteleft");i(k,u,v,"’","'",!0);i(k,u,v,"’","\\textquoteright");i(k,u,v,"“","``",!0);i(k,u,v,"“","\\textquotedblleft");i(k,u,v,"”","''",!0);i(k,u,v,"”","\\textquotedblright");i(l,u,v,"°","\\degree",!0);i(k,u,v,"°","\\degree");i(k,u,v,"°","\\textdegree",!0);i(l,u,v,"£","\\pounds");i(l,u,v,"£","\\mathsterling",!0);i(k,u,v,"£","\\pounds");i(k,u,v,"£","\\textsterling",!0);i(l,d,v,"✠","\\maltese");i(k,d,v,"✠","\\maltese");var Gt='0123456789/@."';for(var Ye=0;Ye0)return b0(s,p,n,t,o.concat(g));if(c){var y,w;if(c==="boldsymbol"){var x=_a(s,n,t,o,a);y=x.fontName,w=[x.fontClass]}else h?(y=zr[c].fontName,w=[c]):(y=xe(c,t.fontWeight,t.fontShape),w=[c,t.fontWeight,t.fontShape]);if(Ee(s,y,n).metrics)return b0(s,y,n,t,o.concat(w));if(kr.hasOwnProperty(s)&&y.slice(0,10)==="Typewriter"){for(var z=[],T=0;T{if(P0(r.classes)!==P0(e.classes)||r.skew!==e.skew||r.maxFontSize!==e.maxFontSize)return!1;if(r.classes.length===1){var t=r.classes[0];if(t==="mbin"||t==="mord")return!1}for(var a in r.style)if(r.style.hasOwnProperty(a)&&r.style[a]!==e.style[a])return!1;for(var n in e.style)if(e.style.hasOwnProperty(n)&&r.style[n]!==e.style[n])return!1;return!0},r1=r=>{for(var e=0;et&&(t=o.height),o.depth>a&&(a=o.depth),o.maxFontSize>n&&(n=o.maxFontSize)}e.height=t,e.depth=a,e.maxFontSize=n},l0=function(e,t,a,n){var s=new he(e,t,a,n);return gt(s),s},Sr=(r,e,t,a)=>new he(r,e,t,a),a1=function(e,t,a){var n=l0([e],[],t);return n.height=Math.max(a||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=A(n.height),n.maxFontSize=1,n},n1=function(e,t,a,n){var s=new vt(e,t,a,n);return gt(s),s},Mr=function(e){var t=new ue(e);return gt(t),t},i1=function(e,t){return e instanceof ue?l0([],[e],t):e},s1=function(e){if(e.positionType==="individualShift"){for(var t=e.children,a=[t[0]],n=-t[0].shift-t[0].elem.depth,s=n,o=1;o{var t=l0(["mspace"],[],e),a=K(r,e);return t.style.marginRight=A(a),t},xe=function(e,t,a){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}var s;return t==="textbf"&&a==="textit"?s="BoldItalic":t==="textbf"?s="Bold":t==="textit"?s="Italic":s="Regular",n+"-"+s},zr={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"}},Ar={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},u1=function(e,t){var[a,n,s]=Ar[e],o=new G0(a),h=new C0([o],{width:A(n),height:A(s),style:"width:"+A(n),viewBox:"0 0 "+1e3*n+" "+1e3*s,preserveAspectRatio:"xMinYMin"}),c=Sr(["overlay"],[h],t);return c.height=s,c.style.height=A(s),c.style.width=A(n),c},b={fontMap:zr,makeSymbol:b0,mathsym:Qa,makeSpan:l0,makeSvgSpan:Sr,makeLineSpan:a1,makeAnchor:n1,makeFragment:Mr,wrapFragment:i1,makeVList:l1,makeOrd:e1,makeGlue:o1,staticSvg:u1,svgData:Ar,tryCombineChars:r1},Z={number:3,unit:"mu"},$0={number:4,unit:"mu"},A0={number:5,unit:"mu"},h1={mord:{mop:Z,mbin:$0,mrel:A0,minner:Z},mop:{mord:Z,mop:Z,mrel:A0,minner:Z},mbin:{mord:$0,mop:$0,mopen:$0,minner:$0},mrel:{mord:A0,mop:A0,mopen:A0,minner:A0},mopen:{},mclose:{mop:Z,mbin:$0,mrel:A0,minner:Z},mpunct:{mord:Z,mop:Z,mrel:A0,mopen:Z,mclose:Z,mpunct:Z,minner:Z},minner:{mord:Z,mop:Z,mbin:$0,mrel:A0,mopen:Z,mpunct:Z,minner:Z}},m1={mord:{mop:Z},mop:{mord:Z,mop:Z},mbin:{},mrel:{},mopen:{},mclose:{mop:Z},mpunct:{},minner:{mop:Z}},Tr={},De={},Ce={};function B(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:o}=r,h={type:e,numArgs:a.numArgs,argTypes:a.argTypes,allowedInArgument:!!a.allowedInArgument,allowedInText:!!a.allowedInText,allowedInMath:a.allowedInMath===void 0?!0:a.allowedInMath,numOptionalArgs:a.numOptionalArgs||0,infix:!!a.infix,primitive:!!a.primitive,handler:n},c=0;c{var C=T.classes[0],N=z.classes[0];C==="mbin"&&q.contains(d1,N)?T.classes[0]="mord":N==="mbin"&&q.contains(c1,C)&&(z.classes[0]="mord")},{node:y},w,x),$t(s,(z,T)=>{var C=ot(T),N=ot(z),F=C&&N?z.hasClass("mtight")?m1[C][N]:h1[C][N]:null;if(F)return b.makeGlue(F,p)},{node:y},w,x),s},$t=function r(e,t,a,n,s){n&&e.push(n);for(var o=0;ow=>{e.splice(y+1,0,w),o++})(o)}n&&e.pop()},Br=function(e){return e instanceof ue||e instanceof vt||e instanceof he&&e.hasClass("enclosing")?e:null},v1=function r(e,t){var a=Br(e);if(a){var n=a.children;if(n.length){if(t==="right")return r(n[n.length-1],"right");if(t==="left")return r(n[0],"left")}}return e},ot=function(e,t){return e?(t&&(e=v1(e,t)),p1[e.classes[0]]||null):null},oe=function(e,t){var a=["nulldelimiter"].concat(e.baseSizingClasses());return N0(t.concat(a))},P=function(e,t,a){if(!e)return N0();if(De[e.type]){var n=De[e.type](e,t);if(a&&t.size!==a.size){n=N0(t.sizingClasses(a),[n],t);var s=t.sizeMultiplier/a.sizeMultiplier;n.height*=s,n.depth*=s}return n}else throw new M("Got group of unknown type: '"+e.type+"'")};function we(r,e){var t=N0(["base"],r,e),a=N0(["strut"]);return a.style.height=A(t.height+t.depth),t.depth&&(a.style.verticalAlign=A(-t.depth)),t.children.unshift(a),t}function ut(r,e){var t=null;r.length===1&&r[0].type==="tag"&&(t=r[0].tag,r=r[0].body);var a=t0(r,e,"root"),n;a.length===2&&a[1].hasClass("tag")&&(n=a.pop());for(var s=[],o=[],h=0;h0&&(s.push(we(o,e)),o=[]),s.push(a[h]));o.length>0&&s.push(we(o,e));var p;t?(p=we(t0(t,e,!0)),p.classes=["tag"],s.push(p)):n&&s.push(n);var g=N0(["katex-html"],s);if(g.setAttribute("aria-hidden","true"),p){var y=p.children[0];y.style.height=A(g.height+g.depth),g.depth&&(y.style.verticalAlign=A(-g.depth))}return g}function Dr(r){return new ue(r)}class h0{constructor(e,t,a){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=a||[]}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=P0(this.classes));for(var a=0;a0&&(e+=' class ="'+q.escape(P0(this.classes))+'"'),e+=">";for(var a=0;a",e}toText(){return this.children.map(e=>e.toText()).join("")}}class w0{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return q.escape(this.toText())}toText(){return this.text}}class g1{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=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",A(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var S={MathNode:h0,TextNode:w0,SpaceNode:g1,newDocumentFragment:Dr},v0=function(e,t,a){return $[t][e]&&$[t][e].replace&&e.charCodeAt(0)!==55349&&!(kr.hasOwnProperty(e)&&a&&(a.fontFamily&&a.fontFamily.slice(4,6)==="tt"||a.font&&a.font.slice(4,6)==="tt"))&&(e=$[t][e].replace),new S.TextNode(e)},bt=function(e){return e.length===1?e[0]:new S.MathNode("mrow",e)},yt=function(e,t){if(t.fontFamily==="texttt")return"monospace";if(t.fontFamily==="textsf")return t.fontShape==="textit"&&t.fontWeight==="textbf"?"sans-serif-bold-italic":t.fontShape==="textit"?"sans-serif-italic":t.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(t.fontShape==="textit"&&t.fontWeight==="textbf")return"bold-italic";if(t.fontShape==="textit")return"italic";if(t.fontWeight==="textbf")return"bold";var a=t.font;if(!a||a==="mathnormal")return null;var n=e.mode;if(a==="mathit")return"italic";if(a==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(a==="mathbf")return"bold";if(a==="mathbb")return"double-struck";if(a==="mathsfit")return"sans-serif-italic";if(a==="mathfrak")return"fraktur";if(a==="mathscr"||a==="mathcal")return"script";if(a==="mathsf")return"sans-serif";if(a==="mathtt")return"monospace";var s=e.text;if(q.contains(["\\imath","\\jmath"],s))return null;$[n][s]&&$[n][s].replace&&(s=$[n][s].replace);var o=b.fontMap[a].fontName;return pt(s,o,n)?b.fontMap[a].variant:null};function je(r){if(!r)return!1;if(r.type==="mi"&&r.children.length===1){var e=r.children[0];return e instanceof w0&&e.text==="."}else if(r.type==="mo"&&r.children.length===1&&r.getAttribute("separator")==="true"&&r.getAttribute("lspace")==="0em"&&r.getAttribute("rspace")==="0em"){var t=r.children[0];return t instanceof w0&&t.text===","}else return!1}var o0=function(e,t,a){if(e.length===1){var n=X(e[0],t);return a&&n instanceof h0&&n.type==="mo"&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var s=[],o,h=0;h=1&&(o.type==="mn"||je(o))){var p=c.children[0];p instanceof h0&&p.type==="mn"&&(p.children=[...o.children,...p.children],s.pop())}else if(o.type==="mi"&&o.children.length===1){var g=o.children[0];if(g instanceof w0&&g.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var y=c.children[0];y instanceof w0&&y.text.length>0&&(y.text=y.text.slice(0,1)+"̸"+y.text.slice(1),s.pop())}}}s.push(c),o=c}return s},V0=function(e,t,a){return bt(o0(e,t,a))},X=function(e,t){if(!e)return new S.MathNode("mrow");if(Ce[e.type]){var a=Ce[e.type](e,t);return a}else throw new M("Got group of unknown type: '"+e.type+"'")};function Wt(r,e,t,a,n){var s=o0(r,t),o;s.length===1&&s[0]instanceof h0&&q.contains(["mrow","mtable"],s[0].type)?o=s[0]:o=new S.MathNode("mrow",s);var h=new S.MathNode("annotation",[new S.TextNode(e)]);h.setAttribute("encoding","application/x-tex");var c=new S.MathNode("semantics",[o,h]),p=new S.MathNode("math",[c]);p.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&p.setAttribute("display","block");var g=n?"katex":"katex-mathml";return b.makeSpan([g],[p])}var Cr=function(e){return new T0({style:e.displayMode?R.DISPLAY:R.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Nr=function(e,t){if(t.displayMode){var a=["katex-display"];t.leqno&&a.push("leqno"),t.fleqn&&a.push("fleqn"),e=b.makeSpan(a,[e])}return e},b1=function(e,t,a){var n=Cr(a),s;if(a.output==="mathml")return Wt(e,t,n,a.displayMode,!0);if(a.output==="html"){var o=ut(e,n);s=b.makeSpan(["katex"],[o])}else{var h=Wt(e,t,n,a.displayMode,!1),c=ut(e,n);s=b.makeSpan(["katex"],[h,c])}return Nr(s,a)},y1=function(e,t,a){var n=Cr(a),s=ut(e,n),o=b.makeSpan(["katex"],[s]);return Nr(o,a)},x1={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},w1=function(e){var t=new S.MathNode("mo",[new S.TextNode(x1[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},k1={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]},S1=function(e){return e.type==="ordgroup"?e.body.length:1},M1=function(e,t){function a(){var h=4e5,c=e.label.slice(1);if(q.contains(["widehat","widecheck","widetilde","utilde"],c)){var p=e,g=S1(p.base),y,w,x;if(g>5)c==="widehat"||c==="widecheck"?(y=420,h=2364,x=.42,w=c+"4"):(y=312,h=2340,x=.34,w="tilde4");else{var z=[1,1,2,2,3,3][g];c==="widehat"||c==="widecheck"?(h=[0,1062,2364,2364,2364][z],y=[0,239,300,360,420][z],x=[0,.24,.3,.3,.36,.42][z],w=c+z):(h=[0,600,1033,2339,2340][z],y=[0,260,286,306,312][z],x=[0,.26,.286,.3,.306,.34][z],w="tilde"+z)}var T=new G0(w),C=new C0([T],{width:"100%",height:A(x),viewBox:"0 0 "+h+" "+y,preserveAspectRatio:"none"});return{span:b.makeSvgSpan([],[C],t),minWidth:0,height:x}}else{var N=[],F=k1[c],[O,V,L]=F,U=L/1e3,G=O.length,j,Y;if(G===1){var z0=F[3];j=["hide-tail"],Y=[z0]}else if(G===2)j=["halfarrow-left","halfarrow-right"],Y=["xMinYMin","xMaxYMin"];else if(G===3)j=["brace-left","brace-center","brace-right"],Y=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+G+" children.");for(var r0=0;r00&&(n.style.minWidth=A(s)),n},z1=function(e,t,a,n,s){var o,h=e.height+e.depth+a+n;if(/fbox|color|angl/.test(t)){if(o=b.makeSpan(["stretchy",t],[],s),t==="fbox"){var c=s.color&&s.getColor();c&&(o.style.borderColor=c)}}else{var p=[];/^[bx]cancel$/.test(t)&&p.push(new st({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&p.push(new st({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var g=new C0(p,{width:"100%",height:A(h)});o=b.makeSvgSpan([],[g],s)}return o.height=h,o.style.height=A(h),o},q0={encloseSpan:z1,mathMLnode:w1,svgSpan:M1};function H(r,e){if(!r||r.type!==e)throw new Error("Expected node of type "+e+", but got "+(r?"node of type "+r.type:String(r)));return r}function xt(r){var e=Re(r);if(!e)throw new Error("Expected node of symbol group type, but got "+(r?"node of type "+r.type:String(r)));return e}function Re(r){return r&&(r.type==="atom"||Ka.hasOwnProperty(r.type))?r:null}var wt=(r,e)=>{var t,a,n;r&&r.type==="supsub"?(a=H(r.base,"accent"),t=a.base,r.base=t,n=ja(P(r,e)),r.base=a):(a=H(r,"accent"),t=a.base);var s=P(t,e.havingCrampedStyle()),o=a.isShifty&&q.isCharacterBox(t),h=0;if(o){var c=q.getBaseElem(t),p=P(c,e.havingCrampedStyle());h=Pt(p).skew}var g=a.label==="\\c",y=g?s.height+s.depth:Math.min(s.height,e.fontMetrics().xHeight),w;if(a.isStretchy)w=q0.svgSpan(a,e),w=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"elem",elem:w,wrapperClasses:["svg-align"],wrapperStyle:h>0?{width:"calc(100% - "+A(2*h)+")",marginLeft:A(2*h)}:void 0}]},e);else{var x,z;a.label==="\\vec"?(x=b.staticSvg("vec",e),z=b.svgData.vec[1]):(x=b.makeOrd({mode:a.mode,text:a.label},e,"textord"),x=Pt(x),x.italic=0,z=x.width,g&&(y+=x.depth)),w=b.makeSpan(["accent-body"],[x]);var T=a.label==="\\textcircled";T&&(w.classes.push("accent-full"),y=s.height);var C=h;T||(C-=z/2),w.style.left=A(C),a.label==="\\textcircled"&&(w.style.top=".2em"),w=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:-y},{type:"elem",elem:w}]},e)}var N=b.makeSpan(["mord","accent"],[w],e);return n?(n.children[0]=N,n.height=Math.max(N.height,n.height),n.classes[0]="mord",n):N},qr=(r,e)=>{var t=r.isStretchy?q0.mathMLnode(r.label):new S.MathNode("mo",[v0(r.label,r.mode)]),a=new S.MathNode("mover",[X(r.base,e),t]);return a.setAttribute("accent","true"),a},A1=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(r=>"\\"+r).join("|"));B({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:(r,e)=>{var t=Ne(e[0]),a=!A1.test(r.funcName),n=!a||r.funcName==="\\widehat"||r.funcName==="\\widetilde"||r.funcName==="\\widecheck";return{type:"accent",mode:r.parser.mode,label:r.funcName,isStretchy:a,isShifty:n,base:t}},htmlBuilder:wt,mathmlBuilder:qr});B({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(r,e)=>{var t=e[0],a=r.parser.mode;return a==="math"&&(r.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+r.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:r.funcName,isStretchy:!1,isShifty:!0,base:t}},htmlBuilder:wt,mathmlBuilder:qr});B({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"accentUnder",mode:t.mode,label:a,base:n}},htmlBuilder:(r,e)=>{var t=P(r.base,e),a=q0.svgSpan(r,e),n=r.label==="\\utilde"?.12:0,s=b.makeVList({positionType:"top",positionData:t.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:t}]},e);return b.makeSpan(["mord","accentunder"],[s],e)},mathmlBuilder:(r,e)=>{var t=q0.mathMLnode(r.label),a=new S.MathNode("munder",[X(r.base,e),t]);return a.setAttribute("accentunder","true"),a}});var ke=r=>{var e=new S.MathNode("mpadded",r?[r]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};B({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(r,e,t){var{parser:a,funcName:n}=r;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:t[0]}},htmlBuilder(r,e){var t=e.style,a=e.havingStyle(t.sup()),n=b.wrapFragment(P(r.body,a,e),e),s=r.label.slice(0,2)==="\\x"?"x":"cd";n.classes.push(s+"-arrow-pad");var o;r.below&&(a=e.havingStyle(t.sub()),o=b.wrapFragment(P(r.below,a,e),e),o.classes.push(s+"-arrow-pad"));var h=q0.svgSpan(r,e),c=-e.fontMetrics().axisHeight+.5*h.height,p=-e.fontMetrics().axisHeight-.5*h.height-.111;(n.depth>.25||r.label==="\\xleftequilibrium")&&(p-=n.depth);var g;if(o){var y=-e.fontMetrics().axisHeight+o.height+.5*h.height+.111;g=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:p},{type:"elem",elem:h,shift:c},{type:"elem",elem:o,shift:y}]},e)}else g=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:p},{type:"elem",elem:h,shift:c}]},e);return g.children[0].children[0].children[1].classes.push("svg-align"),b.makeSpan(["mrel","x-arrow"],[g],e)},mathmlBuilder(r,e){var t=q0.mathMLnode(r.label);t.setAttribute("minsize",r.label.charAt(0)==="x"?"1.75em":"3.0em");var a;if(r.body){var n=ke(X(r.body,e));if(r.below){var s=ke(X(r.below,e));a=new S.MathNode("munderover",[t,s,n])}else a=new S.MathNode("mover",[t,n])}else if(r.below){var o=ke(X(r.below,e));a=new S.MathNode("munder",[t,o])}else a=ke(),a=new S.MathNode("mover",[t,a]);return a}});var T1=b.makeSpan;function Er(r,e){var t=t0(r.body,e,!0);return T1([r.mclass],t,e)}function Rr(r,e){var t,a=o0(r.body,e);return r.mclass==="minner"?t=new S.MathNode("mpadded",a):r.mclass==="mord"?r.isCharacterBox?(t=a[0],t.type="mi"):t=new S.MathNode("mi",a):(r.isCharacterBox?(t=a[0],t.type="mo"):t=new S.MathNode("mo",a),r.mclass==="mbin"?(t.attributes.lspace="0.22em",t.attributes.rspace="0.22em"):r.mclass==="mpunct"?(t.attributes.lspace="0em",t.attributes.rspace="0.17em"):r.mclass==="mopen"||r.mclass==="mclose"?(t.attributes.lspace="0em",t.attributes.rspace="0em"):r.mclass==="minner"&&(t.attributes.lspace="0.0556em",t.attributes.width="+0.1111em")),t}B({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"mclass",mode:t.mode,mclass:"m"+a.slice(5),body:Q(n),isCharacterBox:q.isCharacterBox(n)}},htmlBuilder:Er,mathmlBuilder:Rr});var Ie=r=>{var e=r.type==="ordgroup"&&r.body.length?r.body[0]:r;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};B({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(r,e){var{parser:t}=r;return{type:"mclass",mode:t.mode,mclass:Ie(e[0]),body:Q(e[1]),isCharacterBox:q.isCharacterBox(e[1])}}});B({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(r,e){var{parser:t,funcName:a}=r,n=e[1],s=e[0],o;a!=="\\stackrel"?o=Ie(n):o="mrel";var h={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:a!=="\\stackrel",body:Q(n)},c={type:"supsub",mode:s.mode,base:h,sup:a==="\\underset"?null:s,sub:a==="\\underset"?s:null};return{type:"mclass",mode:t.mode,mclass:o,body:[c],isCharacterBox:q.isCharacterBox(c)}},htmlBuilder:Er,mathmlBuilder:Rr});B({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"pmb",mode:t.mode,mclass:Ie(e[0]),body:Q(e[0])}},htmlBuilder(r,e){var t=t0(r.body,e,!0),a=b.makeSpan([r.mclass],t,e);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(r,e){var t=o0(r.body,e),a=new S.MathNode("mstyle",t);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var B1={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},jt=()=>({type:"styling",body:[],mode:"math",style:"display"}),Zt=r=>r.type==="textord"&&r.text==="@",D1=(r,e)=>(r.type==="mathord"||r.type==="atom")&&r.text===e;function C1(r,e,t){var a=B1[r];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return t.callFunction(a,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var n=t.callFunction("\\\\cdleft",[e[0]],[]),s={type:"atom",text:a,mode:"math",family:"rel"},o=t.callFunction("\\Big",[s],[]),h=t.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[n,o,h]};return t.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return t.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var p={type:"textord",text:"\\Vert",mode:"math"};return t.callFunction("\\Big",[p],[])}default:return{type:"textord",text:" ",mode:"math"}}}function N1(r){var e=[];for(r.gullet.beginGroup(),r.gullet.macros.set("\\cr","\\\\\\relax"),r.gullet.beginGroup();;){e.push(r.parseExpression(!1,"\\\\")),r.gullet.endGroup(),r.gullet.beginGroup();var t=r.fetch().text;if(t==="&"||t==="\\\\")r.consume();else if(t==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new M("Expected \\\\ or \\cr or \\end",r.nextToken)}for(var a=[],n=[a],s=0;s-1))if("<>AV".indexOf(p)>-1)for(var y=0;y<2;y++){for(var w=!0,x=c+1;xAV=|." after @',o[c]);var z=C1(p,g,r),T={type:"styling",body:[z],mode:"math",style:"display"};a.push(T),h=jt()}s%2===0?a.push(h):a.shift(),a=[],n.push(a)}r.gullet.endGroup(),r.gullet.endGroup();var C=new Array(n[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:n,arraystretch:1,addJot:!0,rowGaps:[null],cols:C,colSeparationType:"CD",hLinesBeforeRow:new Array(n.length+1).fill([])}}B({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"cdlabel",mode:t.mode,side:a.slice(4),label:e[0]}},htmlBuilder(r,e){var t=e.havingStyle(e.style.sup()),a=b.wrapFragment(P(r.label,t,e),e);return a.classes.push("cd-label-"+r.side),a.style.bottom=A(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(r,e){var t=new S.MathNode("mrow",[X(r.label,e)]);return t=new S.MathNode("mpadded",[t]),t.setAttribute("width","0"),r.side==="left"&&t.setAttribute("lspace","-1width"),t.setAttribute("voffset","0.7em"),t=new S.MathNode("mstyle",[t]),t.setAttribute("displaystyle","false"),t.setAttribute("scriptlevel","1"),t}});B({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(r,e){var{parser:t}=r;return{type:"cdlabelparent",mode:t.mode,fragment:e[0]}},htmlBuilder(r,e){var t=b.wrapFragment(P(r.fragment,e),e);return t.classes.push("cd-vert-arrow"),t},mathmlBuilder(r,e){return new S.MathNode("mrow",[X(r.fragment,e)])}});B({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(r,e){for(var{parser:t}=r,a=H(e[0],"ordgroup"),n=a.body,s="",o=0;o=1114111)throw new M("\\@char with invalid code point "+s);return c<=65535?p=String.fromCharCode(c):(c-=65536,p=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:t.mode,text:p}}});var Ir=(r,e)=>{var t=t0(r.body,e.withColor(r.color),!1);return b.makeFragment(t)},Fr=(r,e)=>{var t=o0(r.body,e.withColor(r.color)),a=new S.MathNode("mstyle",t);return a.setAttribute("mathcolor",r.color),a};B({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(r,e){var{parser:t}=r,a=H(e[0],"color-token").color,n=e[1];return{type:"color",mode:t.mode,color:a,body:Q(n)}},htmlBuilder:Ir,mathmlBuilder:Fr});B({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(r,e){var{parser:t,breakOnTokenText:a}=r,n=H(e[0],"color-token").color;t.gullet.macros.set("\\current@color",n);var s=t.parseExpression(!0,a);return{type:"color",mode:t.mode,color:n,body:s}},htmlBuilder:Ir,mathmlBuilder:Fr});B({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(r,e,t){var{parser:a}=r,n=a.gullet.future().text==="["?a.parseSizeGroup(!0):null,s=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:s,size:n&&H(n,"size").value}},htmlBuilder(r,e){var t=b.makeSpan(["mspace"],[],e);return r.newLine&&(t.classes.push("newline"),r.size&&(t.style.marginTop=A(K(r.size,e)))),t},mathmlBuilder(r,e){var t=new S.MathNode("mspace");return r.newLine&&(t.setAttribute("linebreak","newline"),r.size&&t.setAttribute("height",A(K(r.size,e)))),t}});var ht={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Or=r=>{var e=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new M("Expected a control sequence",r);return e},q1=r=>{var e=r.gullet.popToken();return e.text==="="&&(e=r.gullet.popToken(),e.text===" "&&(e=r.gullet.popToken())),e},Hr=(r,e,t,a)=>{var n=r.gullet.macros.get(t.text);n==null&&(t.noexpand=!0,n={tokens:[t],numArgs:0,unexpandable:!r.gullet.isExpandable(t.text)}),r.gullet.macros.set(e,n,a)};B({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(r){var{parser:e,funcName:t}=r;e.consumeSpaces();var a=e.fetch();if(ht[a.text])return(t==="\\global"||t==="\\\\globallong")&&(a.text=ht[a.text]),H(e.parseFunction(),"internal");throw new M("Invalid token after macro prefix",a)}});B({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=e.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new M("Expected a control sequence",a);for(var s=0,o,h=[[]];e.gullet.future().text!=="{";)if(a=e.gullet.popToken(),a.text==="#"){if(e.gullet.future().text==="{"){o=e.gullet.future(),h[s].push("{");break}if(a=e.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new M('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new M('Argument number "'+a.text+'" out of order');s++,h.push([])}else{if(a.text==="EOF")throw new M("Expected a macro definition");h[s].push(a.text)}var{tokens:c}=e.gullet.consumeArg();return o&&c.unshift(o),(t==="\\edef"||t==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(n,{tokens:c,numArgs:s,delimiters:h},t===ht[t]),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Or(e.gullet.popToken());e.gullet.consumeSpaces();var n=q1(e);return Hr(e,a,n,t==="\\\\globallet"),{type:"internal",mode:e.mode}}});B({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r){var{parser:e,funcName:t}=r,a=Or(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return Hr(e,a,s,t==="\\\\globalfuture"),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}});var ie=function(e,t,a){var n=$.math[e]&&$.math[e].replace,s=pt(n||e,t,a);if(!s)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return s},kt=function(e,t,a,n){var s=a.havingBaseStyle(t),o=b.makeSpan(n.concat(s.sizingClasses(a)),[e],a),h=s.sizeMultiplier/a.sizeMultiplier;return o.height*=h,o.depth*=h,o.maxFontSize=s.sizeMultiplier,o},Lr=function(e,t,a){var n=t.havingBaseStyle(a),s=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=A(s),e.height-=s,e.depth+=s},E1=function(e,t,a,n,s,o){var h=b.makeSymbol(e,"Main-Regular",s,n),c=kt(h,t,n,o);return a&&Lr(c,n,t),c},R1=function(e,t,a,n){return b.makeSymbol(e,"Size"+t+"-Regular",a,n)},Pr=function(e,t,a,n,s,o){var h=R1(e,t,s,n),c=kt(b.makeSpan(["delimsizing","size"+t],[h],n),R.TEXT,n,o);return a&&Lr(c,n,R.TEXT),c},Ze=function(e,t,a){var n;t==="Size1-Regular"?n="delim-size1":n="delim-size4";var s=b.makeSpan(["delimsizinginner",n],[b.makeSpan([],[b.makeSymbol(e,t,a)])]);return{type:"elem",elem:s}},Ke=function(e,t,a){var n=x0["Size4-Regular"][e.charCodeAt(0)]?x0["Size4-Regular"][e.charCodeAt(0)][4]:x0["Size1-Regular"][e.charCodeAt(0)][4],s=new G0("inner",Pa(e,Math.round(1e3*t))),o=new C0([s],{width:A(n),height:A(t),style:"width:"+A(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),h=b.makeSvgSpan([],[o],a);return h.height=t,h.style.height=A(t),h.style.width=A(n),{type:"elem",elem:h}},mt=.008,Se={type:"kern",size:-1*mt},I1=["|","\\lvert","\\rvert","\\vert"],F1=["\\|","\\lVert","\\rVert","\\Vert"],Gr=function(e,t,a,n,s,o){var h,c,p,g,y="",w=0;h=p=g=e,c=null;var x="Size1-Regular";e==="\\uparrow"?p=g="⏐":e==="\\Uparrow"?p=g="‖":e==="\\downarrow"?h=p="⏐":e==="\\Downarrow"?h=p="‖":e==="\\updownarrow"?(h="\\uparrow",p="⏐",g="\\downarrow"):e==="\\Updownarrow"?(h="\\Uparrow",p="‖",g="\\Downarrow"):q.contains(I1,e)?(p="∣",y="vert",w=333):q.contains(F1,e)?(p="∥",y="doublevert",w=556):e==="["||e==="\\lbrack"?(h="⎡",p="⎢",g="⎣",x="Size4-Regular",y="lbrack",w=667):e==="]"||e==="\\rbrack"?(h="⎤",p="⎥",g="⎦",x="Size4-Regular",y="rbrack",w=667):e==="\\lfloor"||e==="⌊"?(p=h="⎢",g="⎣",x="Size4-Regular",y="lfloor",w=667):e==="\\lceil"||e==="⌈"?(h="⎡",p=g="⎢",x="Size4-Regular",y="lceil",w=667):e==="\\rfloor"||e==="⌋"?(p=h="⎥",g="⎦",x="Size4-Regular",y="rfloor",w=667):e==="\\rceil"||e==="⌉"?(h="⎤",p=g="⎥",x="Size4-Regular",y="rceil",w=667):e==="("||e==="\\lparen"?(h="⎛",p="⎜",g="⎝",x="Size4-Regular",y="lparen",w=875):e===")"||e==="\\rparen"?(h="⎞",p="⎟",g="⎠",x="Size4-Regular",y="rparen",w=875):e==="\\{"||e==="\\lbrace"?(h="⎧",c="⎨",g="⎩",p="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(h="⎫",c="⎬",g="⎭",p="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(h="⎧",g="⎩",p="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(h="⎫",g="⎭",p="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(h="⎧",g="⎭",p="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(h="⎫",g="⎩",p="⎪",x="Size4-Regular");var z=ie(h,x,s),T=z.height+z.depth,C=ie(p,x,s),N=C.height+C.depth,F=ie(g,x,s),O=F.height+F.depth,V=0,L=1;if(c!==null){var U=ie(c,x,s);V=U.height+U.depth,L=2}var G=T+O+V,j=Math.max(0,Math.ceil((t-G)/(L*N))),Y=G+j*L*N,z0=n.fontMetrics().axisHeight;a&&(z0*=n.sizeMultiplier);var r0=Y/2-z0,e0=[];if(y.length>0){var Y0=Y-T-O,s0=Math.round(Y*1e3),g0=Ga(y,Math.round(Y0*1e3)),R0=new G0(y,g0),j0=(w/1e3).toFixed(3)+"em",Z0=(s0/1e3).toFixed(3)+"em",Le=new C0([R0],{width:j0,height:Z0,viewBox:"0 0 "+w+" "+s0}),I0=b.makeSvgSpan([],[Le],n);I0.height=s0/1e3,I0.style.width=j0,I0.style.height=Z0,e0.push({type:"elem",elem:I0})}else{if(e0.push(Ze(g,x,s)),e0.push(Se),c===null){var F0=Y-T-O+2*mt;e0.push(Ke(p,F0,n))}else{var c0=(Y-T-O-V)/2+2*mt;e0.push(Ke(p,c0,n)),e0.push(Se),e0.push(Ze(c,x,s)),e0.push(Se),e0.push(Ke(p,c0,n))}e0.push(Se),e0.push(Ze(h,x,s))}var ne=n.havingBaseStyle(R.TEXT),Pe=b.makeVList({positionType:"bottom",positionData:r0,children:e0},ne);return kt(b.makeSpan(["delimsizing","mult"],[Pe],ne),R.TEXT,n,o)},Je=80,Qe=.08,_e=function(e,t,a,n,s){var o=La(e,n,a),h=new G0(e,o),c=new C0([h],{width:"400em",height:A(t),viewBox:"0 0 400000 "+a,preserveAspectRatio:"xMinYMin slice"});return b.makeSvgSpan(["hide-tail"],[c],s)},O1=function(e,t){var a=t.havingBaseSizing(),n=Xr("\\surd",e*a.sizeMultiplier,Yr,a),s=a.sizeMultiplier,o=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),h,c=0,p=0,g=0,y;return n.type==="small"?(g=1e3+1e3*o+Je,e<1?s=1:e<1.4&&(s=.7),c=(1+o+Qe)/s,p=(1+o)/s,h=_e("sqrtMain",c,g,o,t),h.style.minWidth="0.853em",y=.833/s):n.type==="large"?(g=(1e3+Je)*se[n.size],p=(se[n.size]+o)/s,c=(se[n.size]+o+Qe)/s,h=_e("sqrtSize"+n.size,c,g,o,t),h.style.minWidth="1.02em",y=1/s):(c=e+o+Qe,p=e+o,g=Math.floor(1e3*e+o)+Je,h=_e("sqrtTall",c,g,o,t),h.style.minWidth="0.742em",y=1.056),h.height=p,h.style.height=A(c),{span:h,advanceWidth:y,ruleWidth:(t.fontMetrics().sqrtRuleThickness+o)*s}},Vr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],H1=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],Ur=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],se=[0,1.2,1.8,2.4,3],L1=function(e,t,a,n,s){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),q.contains(Vr,e)||q.contains(Ur,e))return Pr(e,t,!1,a,n,s);if(q.contains(H1,e))return Gr(e,se[t],!1,a,n,s);throw new M("Illegal delimiter: '"+e+"'")},P1=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],G1=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"stack"}],Yr=[{type:"small",style:R.SCRIPTSCRIPT},{type:"small",style:R.SCRIPT},{type:"small",style:R.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],V1=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Xr=function(e,t,a,n){for(var s=Math.min(2,3-n.style.size),o=s;ot)return a[o]}return a[a.length-1]},$r=function(e,t,a,n,s,o){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var h;q.contains(Ur,e)?h=P1:q.contains(Vr,e)?h=Yr:h=G1;var c=Xr(e,t,h,n);return c.type==="small"?E1(e,c.style,a,n,s,o):c.type==="large"?Pr(e,c.size,a,n,s,o):Gr(e,t,a,n,s,o)},U1=function(e,t,a,n,s,o){var h=n.fontMetrics().axisHeight*n.sizeMultiplier,c=901,p=5/n.fontMetrics().ptPerEm,g=Math.max(t-h,a+h),y=Math.max(g/500*c,2*g-p);return $r(e,y,!0,n,s,o)},D0={sqrtImage:O1,sizedDelim:L1,sizeToMaxHeight:se,customSizedDelim:$r,leftRightDelim:U1},Kt={"\\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}},Y1=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Fe(r,e){var t=Re(r);if(t&&q.contains(Y1,t.text))return t;throw t?new M("Invalid delimiter '"+t.text+"' after '"+e.funcName+"'",r):new M("Invalid delimiter type '"+r.type+"'",r)}B({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:(r,e)=>{var t=Fe(e[0],r);return{type:"delimsizing",mode:r.parser.mode,size:Kt[r.funcName].size,mclass:Kt[r.funcName].mclass,delim:t.text}},htmlBuilder:(r,e)=>r.delim==="."?b.makeSpan([r.mclass]):D0.sizedDelim(r.delim,r.size,e,r.mode,[r.mclass]),mathmlBuilder:r=>{var e=[];r.delim!=="."&&e.push(v0(r.delim,r.mode));var t=new S.MathNode("mo",e);r.mclass==="mopen"||r.mclass==="mclose"?t.setAttribute("fence","true"):t.setAttribute("fence","false"),t.setAttribute("stretchy","true");var a=A(D0.sizeToMaxHeight[r.size]);return t.setAttribute("minsize",a),t.setAttribute("maxsize",a),t}});function Jt(r){if(!r.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}B({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=r.parser.gullet.macros.get("\\current@color");if(t&&typeof t!="string")throw new M("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:r.parser.mode,delim:Fe(e[0],r).text,color:t}}});B({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Fe(e[0],r),a=r.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var s=H(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:t.text,right:s.delim,rightColor:s.color}},htmlBuilder:(r,e)=>{Jt(r);for(var t=t0(r.body,e,!0,["mopen","mclose"]),a=0,n=0,s=!1,o=0;o{Jt(r);var t=o0(r.body,e);if(r.left!=="."){var a=new S.MathNode("mo",[v0(r.left,r.mode)]);a.setAttribute("fence","true"),t.unshift(a)}if(r.right!=="."){var n=new S.MathNode("mo",[v0(r.right,r.mode)]);n.setAttribute("fence","true"),r.rightColor&&n.setAttribute("mathcolor",r.rightColor),t.push(n)}return bt(t)}});B({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var t=Fe(e[0],r);if(!r.parser.leftrightDepth)throw new M("\\middle without preceding \\left",t);return{type:"middle",mode:r.parser.mode,delim:t.text}},htmlBuilder:(r,e)=>{var t;if(r.delim===".")t=oe(e,[]);else{t=D0.sizedDelim(r.delim,1,e,r.mode,[]);var a={delim:r.delim,options:e};t.isMiddle=a}return t},mathmlBuilder:(r,e)=>{var t=r.delim==="\\vert"||r.delim==="|"?v0("|","text"):v0(r.delim,r.mode),a=new S.MathNode("mo",[t]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var St=(r,e)=>{var t=b.wrapFragment(P(r.body,e),e),a=r.label.slice(1),n=e.sizeMultiplier,s,o=0,h=q.isCharacterBox(r.body);if(a==="sout")s=b.makeSpan(["stretchy","sout"]),s.height=e.fontMetrics().defaultRuleThickness/n,o=-.5*e.fontMetrics().xHeight;else if(a==="phase"){var c=K({number:.6,unit:"pt"},e),p=K({number:.35,unit:"ex"},e),g=e.havingBaseSizing();n=n/g.sizeMultiplier;var y=t.height+t.depth+c+p;t.style.paddingLeft=A(y/2+c);var w=Math.floor(1e3*y*n),x=Oa(w),z=new C0([new G0("phase",x)],{width:"400em",height:A(w/1e3),viewBox:"0 0 400000 "+w,preserveAspectRatio:"xMinYMin slice"});s=b.makeSvgSpan(["hide-tail"],[z],e),s.style.height=A(y),o=t.depth+c+p}else{/cancel/.test(a)?h||t.classes.push("cancel-pad"):a==="angl"?t.classes.push("anglpad"):t.classes.push("boxpad");var T=0,C=0,N=0;/box/.test(a)?(N=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),T=e.fontMetrics().fboxsep+(a==="colorbox"?0:N),C=T):a==="angl"?(N=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),T=4*N,C=Math.max(0,.25-t.depth)):(T=h?.2:0,C=T),s=q0.encloseSpan(t,a,T,C,e),/fbox|boxed|fcolorbox/.test(a)?(s.style.borderStyle="solid",s.style.borderWidth=A(N)):a==="angl"&&N!==.049&&(s.style.borderTopWidth=A(N),s.style.borderRightWidth=A(N)),o=t.depth+C,r.backgroundColor&&(s.style.backgroundColor=r.backgroundColor,r.borderColor&&(s.style.borderColor=r.borderColor))}var F;if(r.backgroundColor)F=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:o},{type:"elem",elem:t,shift:0}]},e);else{var O=/cancel|phase/.test(a)?["svg-align"]:[];F=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:t,shift:0},{type:"elem",elem:s,shift:o,wrapperClasses:O}]},e)}return/cancel/.test(a)&&(F.height=t.height,F.depth=t.depth),/cancel/.test(a)&&!h?b.makeSpan(["mord","cancel-lap"],[F],e):b.makeSpan(["mord"],[F],e)},Mt=(r,e)=>{var t=0,a=new S.MathNode(r.label.indexOf("colorbox")>-1?"mpadded":"menclose",[X(r.body,e)]);switch(r.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(t=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*t+"pt"),a.setAttribute("height","+"+2*t+"pt"),a.setAttribute("lspace",t+"pt"),a.setAttribute("voffset",t+"pt"),r.label==="\\fcolorbox"){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(r.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return r.backgroundColor&&a.setAttribute("mathbackground",r.backgroundColor),a};B({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=H(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:s,body:o}},htmlBuilder:St,mathmlBuilder:Mt});B({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(r,e,t){var{parser:a,funcName:n}=r,s=H(e[0],"color-token").color,o=H(e[1],"color-token").color,h=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:s,body:h}},htmlBuilder:St,mathmlBuilder:Mt});B({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\fbox",body:e[0]}}});B({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"enclose",mode:t.mode,label:a,body:n}},htmlBuilder:St,mathmlBuilder:Mt});B({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"enclose",mode:t.mode,label:"\\angl",body:e[0]}}});var Wr={};function k0(r){for(var{type:e,names:t,props:a,handler:n,htmlBuilder:s,mathmlBuilder:o}=r,h={type:e,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},c=0;c{var e=r.parser.settings;if(!e.displayMode)throw new M("{"+r.envName+"} can be used only in display mode.")};function zt(r){if(r.indexOf("ed")===-1)return r.indexOf("*")===-1}function U0(r,e,t){var{hskipBeforeAndAfter:a,addJot:n,cols:s,arraystretch:o,colSeparationType:h,autoTag:c,singleRow:p,emptySingleRow:g,maxNumCols:y,leqno:w}=e;if(r.gullet.beginGroup(),p||r.gullet.macros.set("\\cr","\\\\\\relax"),!o){var x=r.gullet.expandMacroAsText("\\arraystretch");if(x==null)o=1;else if(o=parseFloat(x),!o||o<0)throw new M("Invalid \\arraystretch: "+x)}r.gullet.beginGroup();var z=[],T=[z],C=[],N=[],F=c!=null?[]:void 0;function O(){c&&r.gullet.macros.set("\\@eqnsw","1",!0)}function V(){F&&(r.gullet.macros.get("\\df@tag")?(F.push(r.subparse([new f0("\\df@tag")])),r.gullet.macros.set("\\df@tag",void 0,!0)):F.push(!!c&&r.gullet.macros.get("\\@eqnsw")==="1"))}for(O(),N.push(Qt(r));;){var L=r.parseExpression(!1,p?"\\end":"\\\\");r.gullet.endGroup(),r.gullet.beginGroup(),L={type:"ordgroup",mode:r.mode,body:L},t&&(L={type:"styling",mode:r.mode,style:t,body:[L]}),z.push(L);var U=r.fetch().text;if(U==="&"){if(y&&z.length===y){if(p||h)throw new M("Too many tab characters: &",r.nextToken);r.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}r.consume()}else if(U==="\\end"){V(),z.length===1&&L.type==="styling"&&L.body[0].body.length===0&&(T.length>1||!g)&&T.pop(),N.length0&&(O+=.25),p.push({pos:O,isDashed:fe[pe]})}for(V(o[0]),a=0;a0&&(r0+=F,Gfe))for(a=0;a=h)){var J0=void 0;(n>0||e.hskipBeforeAndAfter)&&(J0=q.deflt(c0.pregap,w),J0!==0&&(g0=b.makeSpan(["arraycolsep"],[]),g0.style.width=A(J0),s0.push(g0)));var Q0=[];for(a=0;a0){for(var ca=b.makeLineSpan("hline",t,g),da=b.makeLineSpan("hdashline",t,g),Ge=[{type:"elem",elem:c,shift:0}];p.length>0;){var Rt=p.pop(),It=Rt.pos-e0;Rt.isDashed?Ge.push({type:"elem",elem:da,shift:It}):Ge.push({type:"elem",elem:ca,shift:It})}c=b.makeVList({positionType:"individualShift",children:Ge},t)}if(j0.length===0)return b.makeSpan(["mord"],[c],t);var Ve=b.makeVList({positionType:"individualShift",children:j0},t);return Ve=b.makeSpan(["tag"],[Ve],t),b.makeFragment([c,Ve])},X1={c:"center ",l:"left ",r:"right "},M0=function(e,t){for(var a=[],n=new S.MathNode("mtd",[],["mtr-glue"]),s=new S.MathNode("mtd",[],["mml-eqn-num"]),o=0;o0){var z=e.cols,T="",C=!1,N=0,F=z.length;z[0].type==="separator"&&(w+="top ",N=1),z[z.length-1].type==="separator"&&(w+="bottom ",F-=1);for(var O=N;O0?"left ":"",w+=j[j.length-1].length>0?"right ":"";for(var Y=1;Y-1?"alignat":"align",s=e.envName==="split",o=U0(e.parser,{cols:a,addJot:!0,autoTag:s?void 0:zt(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:s?2:void 0,leqno:e.parser.settings.leqno},"display"),h,c=0,p={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&t[0].type==="ordgroup"){for(var g="",y=0;y0&&x&&(C=1),a[z]={type:"align",align:T,pregap:C,postgap:0}}return o.colSeparationType=x?"align":"alignat",o};k0({type:"array",names:["array","darray"],props:{numArgs:1},handler(r,e){var t=Re(e[0]),a=t?[e[0]]:H(e[0],"ordgroup").body,n=a.map(function(o){var h=xt(o),c=h.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new M("Unknown column alignment: "+c,o)}),s={cols:n,hskipBeforeAndAfter:!0,maxNumCols:n.length};return U0(r.parser,s,At(r.envName))},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(r){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[r.envName.replace("*","")],t="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:t}]};if(r.envName.charAt(r.envName.length-1)==="*"){var n=r.parser;if(n.consumeSpaces(),n.fetch().text==="["){if(n.consume(),n.consumeSpaces(),t=n.fetch().text,"lcr".indexOf(t)===-1)throw new M("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:t}]}}var s=U0(r.parser,a,At(r.envName)),o=Math.max(0,...s.body.map(h=>h.length));return s.cols=new Array(o).fill({type:"align",align:t}),e?{type:"leftright",mode:r.mode,body:[s],left:e[0],right:e[1],rightColor:void 0}:s},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(r){var e={arraystretch:.5},t=U0(r.parser,e,"script");return t.colSeparationType="small",t},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["subarray"],props:{numArgs:1},handler(r,e){var t=Re(e[0]),a=t?[e[0]]:H(e[0],"ordgroup").body,n=a.map(function(o){var h=xt(o),c=h.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new M("Unknown column alignment: "+c,o)});if(n.length>1)throw new M("{subarray} can contain only one column");var s={cols:n,hskipBeforeAndAfter:!1,arraystretch:.5};if(s=U0(r.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new M("{subarray} can contain only one column");return s},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(r){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},t=U0(r.parser,e,At(r.envName));return{type:"leftright",mode:r.mode,body:[t],left:r.envName.indexOf("r")>-1?".":"\\{",right:r.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Zr,htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(r){q.contains(["gather","gather*"],r.envName)&&Oe(r);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:zt(r.envName),emptySingleRow:!0,leqno:r.parser.settings.leqno};return U0(r.parser,e,"display")},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Zr,htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(r){Oe(r);var e={autoTag:zt(r.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:r.parser.settings.leqno};return U0(r.parser,e,"display")},htmlBuilder:S0,mathmlBuilder:M0});k0({type:"array",names:["CD"],props:{numArgs:0},handler(r){return Oe(r),N1(r.parser)},htmlBuilder:S0,mathmlBuilder:M0});m("\\nonumber","\\gdef\\@eqnsw{0}");m("\\notag","\\nonumber");B({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(r,e){throw new M(r.funcName+" valid only within array environment")}});var _t=Wr;B({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];if(n.type!=="ordgroup")throw new M("Invalid environment name",n);for(var s="",o=0;o{var t=r.font,a=e.withFont(t);return P(r.body,a)},Jr=(r,e)=>{var t=r.font,a=e.withFont(t);return X(r.body,a)},er={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};B({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=Ne(e[0]),s=a;return s in er&&(s=er[s]),{type:"font",mode:t.mode,font:s.slice(1),body:n}},htmlBuilder:Kr,mathmlBuilder:Jr});B({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(r,e)=>{var{parser:t}=r,a=e[0],n=q.isCharacterBox(a);return{type:"mclass",mode:t.mode,mclass:Ie(a),body:[{type:"font",mode:t.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}});B({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a,breakOnTokenText:n}=r,{mode:s}=t,o=t.parseExpression(!0,n),h="math"+a.slice(1);return{type:"font",mode:s,font:h,body:{type:"ordgroup",mode:t.mode,body:o}}},htmlBuilder:Kr,mathmlBuilder:Jr});var Qr=(r,e)=>{var t=e;return r==="display"?t=t.id>=R.SCRIPT.id?t.text():R.DISPLAY:r==="text"&&t.size===R.DISPLAY.size?t=R.TEXT:r==="script"?t=R.SCRIPT:r==="scriptscript"&&(t=R.SCRIPTSCRIPT),t},Tt=(r,e)=>{var t=Qr(r.size,e.style),a=t.fracNum(),n=t.fracDen(),s;s=e.havingStyle(a);var o=P(r.numer,s,e);if(r.continued){var h=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?z=3*w:z=7*w,T=e.fontMetrics().denom1):(y>0?(x=e.fontMetrics().num2,z=w):(x=e.fontMetrics().num3,z=3*w),T=e.fontMetrics().denom2);var C;if(g){var F=e.fontMetrics().axisHeight;x-o.depth-(F+.5*y){var t=new S.MathNode("mfrac",[X(r.numer,e),X(r.denom,e)]);if(!r.hasBarLine)t.setAttribute("linethickness","0px");else if(r.barSize){var a=K(r.barSize,e);t.setAttribute("linethickness",A(a))}var n=Qr(r.size,e.style);if(n.size!==e.style.size){t=new S.MathNode("mstyle",[t]);var s=n.size===R.DISPLAY.size?"true":"false";t.setAttribute("displaystyle",s),t.setAttribute("scriptlevel","0")}if(r.leftDelim!=null||r.rightDelim!=null){var o=[];if(r.leftDelim!=null){var h=new S.MathNode("mo",[new S.TextNode(r.leftDelim.replace("\\",""))]);h.setAttribute("fence","true"),o.push(h)}if(o.push(t),r.rightDelim!=null){var c=new S.MathNode("mo",[new S.TextNode(r.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),o.push(c)}return bt(o)}return t};B({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1],o,h=null,c=null,p="auto";switch(a){case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":o=!1,h="(",c=")";break;case"\\\\bracefrac":o=!1,h="\\{",c="\\}";break;case"\\\\brackfrac":o=!1,h="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(a){case"\\dfrac":case"\\dbinom":p="display";break;case"\\tfrac":case"\\tbinom":p="text";break}return{type:"genfrac",mode:t.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:h,rightDelim:c,size:p,barSize:null}},htmlBuilder:Tt,mathmlBuilder:Bt});B({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=e[1];return{type:"genfrac",mode:t.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});B({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(r){var{parser:e,funcName:t,token:a}=r,n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:a}}});var tr=["display","text","script","scriptscript"],rr=function(e){var t=null;return e.length>0&&(t=e,t=t==="."?null:t),t};B({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(r,e){var{parser:t}=r,a=e[4],n=e[5],s=Ne(e[0]),o=s.type==="atom"&&s.family==="open"?rr(s.text):null,h=Ne(e[1]),c=h.type==="atom"&&h.family==="close"?rr(h.text):null,p=H(e[2],"size"),g,y=null;p.isBlank?g=!0:(y=p.value,g=y.number>0);var w="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var z=H(x.body[0],"textord");w=tr[Number(z.text)]}}else x=H(x,"textord"),w=tr[Number(x.text)];return{type:"genfrac",mode:t.mode,numer:a,denom:n,continued:!1,hasBarLine:g,barSize:y,leftDelim:o,rightDelim:c,size:w}},htmlBuilder:Tt,mathmlBuilder:Bt});B({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(r,e){var{parser:t,funcName:a,token:n}=r;return{type:"infix",mode:t.mode,replaceWith:"\\\\abovefrac",size:H(e[0],"size").value,token:n}}});B({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0],s=ka(H(e[1],"infix").size),o=e[2],h=s.number>0;return{type:"genfrac",mode:t.mode,numer:n,denom:o,continued:!1,hasBarLine:h,barSize:s,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Tt,mathmlBuilder:Bt});var _r=(r,e)=>{var t=e.style,a,n;r.type==="supsub"?(a=r.sup?P(r.sup,e.havingStyle(t.sup()),e):P(r.sub,e.havingStyle(t.sub()),e),n=H(r.base,"horizBrace")):n=H(r,"horizBrace");var s=P(n.base,e.havingBaseStyle(R.DISPLAY)),o=q0.svgSpan(n,e),h;if(n.isOver?(h=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},e),h.children[0].children[0].children[1].classes.push("svg-align")):(h=b.makeVList({positionType:"bottom",positionData:s.depth+.1+o.height,children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},e),h.children[0].children[0].children[0].classes.push("svg-align")),a){var c=b.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e);n.isOver?h=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:a}]},e):h=b.makeVList({positionType:"bottom",positionData:c.depth+.2+a.height+a.depth,children:[{type:"elem",elem:a},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return b.makeSpan(["mord",n.isOver?"mover":"munder"],[h],e)},$1=(r,e)=>{var t=q0.mathMLnode(r.label);return new S.MathNode(r.isOver?"mover":"munder",[X(r.base,e),t])};B({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(r,e){var{parser:t,funcName:a}=r;return{type:"horizBrace",mode:t.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:_r,mathmlBuilder:$1});B({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[1],n=H(e[0],"url").url;return t.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:t.mode,href:n,body:Q(a)}:t.formatUnsupportedCmd("\\href")},htmlBuilder:(r,e)=>{var t=t0(r.body,e,!1);return b.makeAnchor(r.href,[],t,e)},mathmlBuilder:(r,e)=>{var t=V0(r.body,e);return t instanceof h0||(t=new h0("mrow",[t])),t.setAttribute("href",r.href),t}});B({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=H(e[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:a}))return t.formatUnsupportedCmd("\\url");for(var n=[],s=0;s{var{parser:t,funcName:a,token:n}=r,s=H(e[0],"raw").string,o=e[1];t.settings.strict&&t.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h,c={};switch(a){case"\\htmlClass":c.class=s,h={command:"\\htmlClass",class:s};break;case"\\htmlId":c.id=s,h={command:"\\htmlId",id:s};break;case"\\htmlStyle":c.style=s,h={command:"\\htmlStyle",style:s};break;case"\\htmlData":{for(var p=s.split(","),g=0;g{var t=t0(r.body,e,!1),a=["enclosing"];r.attributes.class&&a.push(...r.attributes.class.trim().split(/\s+/));var n=b.makeSpan(a,t,e);for(var s in r.attributes)s!=="class"&&r.attributes.hasOwnProperty(s)&&n.setAttribute(s,r.attributes[s]);return n},mathmlBuilder:(r,e)=>V0(r.body,e)});B({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"htmlmathml",mode:t.mode,html:Q(e[0]),mathml:Q(e[1])}},htmlBuilder:(r,e)=>{var t=t0(r.html,e,!1);return b.makeFragment(t)},mathmlBuilder:(r,e)=>V0(r.mathml,e)});var et=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 M("Invalid size: '"+e+"' in \\includegraphics");var a={number:+(t[1]+t[2]),unit:t[3]};if(!br(a))throw new M("Invalid unit: '"+a.unit+"' in \\includegraphics.");return a};B({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(r,e,t)=>{var{parser:a}=r,n={number:0,unit:"em"},s={number:.9,unit:"em"},o={number:0,unit:"em"},h="";if(t[0])for(var c=H(t[0],"raw").string,p=c.split(","),g=0;g{var t=K(r.height,e),a=0;r.totalheight.number>0&&(a=K(r.totalheight,e)-t);var n=0;r.width.number>0&&(n=K(r.width,e));var s={height:A(t+a)};n>0&&(s.width=A(n)),a>0&&(s.verticalAlign=A(-a));var o=new $a(r.src,r.alt,s);return o.height=t,o.depth=a,o},mathmlBuilder:(r,e)=>{var t=new S.MathNode("mglyph",[]);t.setAttribute("alt",r.alt);var a=K(r.height,e),n=0;if(r.totalheight.number>0&&(n=K(r.totalheight,e)-a,t.setAttribute("valign",A(-n))),t.setAttribute("height",A(a+n)),r.width.number>0){var s=K(r.width,e);t.setAttribute("width",A(s))}return t.setAttribute("src",r.src),t}});B({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=H(e[0],"size");if(t.settings.strict){var s=a[1]==="m",o=n.value.unit==="mu";s?(o||t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, "+("not "+n.value.unit+" units")),t.mode!=="math"&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&t.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:t.mode,dimension:n.value}},htmlBuilder(r,e){return b.makeGlue(r.dimension,e)},mathmlBuilder(r,e){var t=K(r.dimension,e);return new S.SpaceNode(t)}});B({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"lap",mode:t.mode,alignment:a.slice(5),body:n}},htmlBuilder:(r,e)=>{var t;r.alignment==="clap"?(t=b.makeSpan([],[P(r.body,e)]),t=b.makeSpan(["inner"],[t],e)):t=b.makeSpan(["inner"],[P(r.body,e)]);var a=b.makeSpan(["fix"],[]),n=b.makeSpan([r.alignment],[t,a],e),s=b.makeSpan(["strut"]);return s.style.height=A(n.height+n.depth),n.depth&&(s.style.verticalAlign=A(-n.depth)),n.children.unshift(s),n=b.makeSpan(["thinbox"],[n],e),b.makeSpan(["mord","vbox"],[n],e)},mathmlBuilder:(r,e)=>{var t=new S.MathNode("mpadded",[X(r.body,e)]);if(r.alignment!=="rlap"){var a=r.alignment==="llap"?"-1":"-0.5";t.setAttribute("lspace",a+"width")}return t.setAttribute("width","0px"),t}});B({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){var{funcName:t,parser:a}=r,n=a.mode;a.switchMode("math");var s=t==="\\("?"\\)":"$",o=a.parseExpression(!1,s);return a.expect(s),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}});B({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(r,e){throw new M("Mismatched "+r.funcName)}});var ar=(r,e)=>{switch(e.style.size){case R.DISPLAY.size:return r.display;case R.TEXT.size:return r.text;case R.SCRIPT.size:return r.script;case R.SCRIPTSCRIPT.size:return r.scriptscript;default:return r.text}};B({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(r,e)=>{var{parser:t}=r;return{type:"mathchoice",mode:t.mode,display:Q(e[0]),text:Q(e[1]),script:Q(e[2]),scriptscript:Q(e[3])}},htmlBuilder:(r,e)=>{var t=ar(r,e),a=t0(t,e,!1);return b.makeFragment(a)},mathmlBuilder:(r,e)=>{var t=ar(r,e);return V0(t,e)}});var ea=(r,e,t,a,n,s,o)=>{r=b.makeSpan([],[r]);var h=t&&q.isCharacterBox(t),c,p;if(e){var g=P(e,a.havingStyle(n.sup()),a);p={elem:g,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-g.depth)}}if(t){var y=P(t,a.havingStyle(n.sub()),a);c={elem:y,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-y.height)}}var w;if(p&&c){var x=a.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+r.depth+o;w=b.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:A(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r},{type:"kern",size:p.kern},{type:"elem",elem:p.elem,marginLeft:A(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(c){var z=r.height-o;w=b.makeVList({positionType:"top",positionData:z,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:A(-s)},{type:"kern",size:c.kern},{type:"elem",elem:r}]},a)}else if(p){var T=r.depth+o;w=b.makeVList({positionType:"bottom",positionData:T,children:[{type:"elem",elem:r},{type:"kern",size:p.kern},{type:"elem",elem:p.elem,marginLeft:A(s)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else return r;var C=[w];if(c&&s!==0&&!h){var N=b.makeSpan(["mspace"],[],a);N.style.marginRight=A(s),C.unshift(N)}return b.makeSpan(["mop","op-limits"],C,a)},ta=["\\smallint"],ae=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=H(r.base,"op"),n=!0):s=H(r,"op");var o=e.style,h=!1;o.size===R.DISPLAY.size&&s.symbol&&!q.contains(ta,s.name)&&(h=!0);var c;if(s.symbol){var p=h?"Size2-Regular":"Size1-Regular",g="";if((s.name==="\\oiint"||s.name==="\\oiiint")&&(g=s.name.slice(1),s.name=g==="oiint"?"\\iint":"\\iiint"),c=b.makeSymbol(s.name,p,"math",e,["mop","op-symbol",h?"large-op":"small-op"]),g.length>0){var y=c.italic,w=b.staticSvg(g+"Size"+(h?"2":"1"),e);c=b.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:w,shift:h?.08:0}]},e),s.name="\\"+g,c.classes.unshift("mop"),c.italic=y}}else if(s.body){var x=t0(s.body,e,!0);x.length===1&&x[0]instanceof p0?(c=x[0],c.classes[0]="mop"):c=b.makeSpan(["mop"],x,e)}else{for(var z=[],T=1;T{var t;if(r.symbol)t=new h0("mo",[v0(r.name,r.mode)]),q.contains(ta,r.name)&&t.setAttribute("largeop","false");else if(r.body)t=new h0("mo",o0(r.body,e));else{t=new h0("mi",[new w0(r.name.slice(1))]);var a=new h0("mo",[v0("⁡","text")]);r.parentIsSupSub?t=new h0("mrow",[t,a]):t=Dr([t,a])}return t},W1={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};B({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=a;return n.length===1&&(n=W1[n]),{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ae,mathmlBuilder:me});B({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Q(a)}},htmlBuilder:ae,mathmlBuilder:me});var j1={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};B({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(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:ae,mathmlBuilder:me});B({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:t}},htmlBuilder:ae,mathmlBuilder:me});B({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(r){var{parser:e,funcName:t}=r,a=t;return a.length===1&&(a=j1[a]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ae,mathmlBuilder:me});var ra=(r,e)=>{var t,a,n=!1,s;r.type==="supsub"?(t=r.sup,a=r.sub,s=H(r.base,"operatorname"),n=!0):s=H(r,"operatorname");var o;if(s.body.length>0){for(var h=s.body.map(y=>{var w=y.text;return typeof w=="string"?{type:"textord",mode:y.mode,text:w}:y}),c=t0(h,e.withFont("mathrm"),!0),p=0;p{for(var t=o0(r.body,e.withFont("mathrm")),a=!0,n=0;ng.toText()).join("");t=[new S.TextNode(h)]}var c=new S.MathNode("mi",t);c.setAttribute("mathvariant","normal");var p=new S.MathNode("mo",[v0("⁡","text")]);return r.parentIsSupSub?new S.MathNode("mrow",[c,p]):S.newDocumentFragment([c,p])};B({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(r,e)=>{var{parser:t,funcName:a}=r,n=e[0];return{type:"operatorname",mode:t.mode,body:Q(n),alwaysHandleSupSub:a==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:ra,mathmlBuilder:Z1});m("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");W0({type:"ordgroup",htmlBuilder(r,e){return r.semisimple?b.makeFragment(t0(r.body,e,!1)):b.makeSpan(["mord"],t0(r.body,e,!0),e)},mathmlBuilder(r,e){return V0(r.body,e,!0)}});B({type:"overline",names:["\\overline"],props:{numArgs:1},handler(r,e){var{parser:t}=r,a=e[0];return{type:"overline",mode:t.mode,body:a}},htmlBuilder(r,e){var t=P(r.body,e.havingCrampedStyle()),a=b.makeLineSpan("overline-line",e),n=e.fontMetrics().defaultRuleThickness,s=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},e);return b.makeSpan(["mord","overline"],[s],e)},mathmlBuilder(r,e){var t=new S.MathNode("mo",[new S.TextNode("‾")]);t.setAttribute("stretchy","true");var a=new S.MathNode("mover",[X(r.body,e),t]);return a.setAttribute("accent","true"),a}});B({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"phantom",mode:t.mode,body:Q(a)}},htmlBuilder:(r,e)=>{var t=t0(r.body,e.withPhantom(),!1);return b.makeFragment(t)},mathmlBuilder:(r,e)=>{var t=o0(r.body,e);return new S.MathNode("mphantom",t)}});B({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"hphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=b.makeSpan([],[P(r.body,e.withPhantom())]);if(t.height=0,t.depth=0,t.children)for(var a=0;a{var t=o0(Q(r.body),e),a=new S.MathNode("mphantom",t),n=new S.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}});B({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(r,e)=>{var{parser:t}=r,a=e[0];return{type:"vphantom",mode:t.mode,body:a}},htmlBuilder:(r,e)=>{var t=b.makeSpan(["inner"],[P(r.body,e.withPhantom())]),a=b.makeSpan(["fix"],[]);return b.makeSpan(["mord","rlap"],[t,a],e)},mathmlBuilder:(r,e)=>{var t=o0(Q(r.body),e),a=new S.MathNode("mphantom",t),n=new S.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}});B({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(r,e){var{parser:t}=r,a=H(e[0],"size").value,n=e[1];return{type:"raisebox",mode:t.mode,dy:a,body:n}},htmlBuilder(r,e){var t=P(r.body,e),a=K(r.dy,e);return b.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){var t=new S.MathNode("mpadded",[X(r.body,e)]),a=r.dy.number+r.dy.unit;return t.setAttribute("voffset",a),t}});B({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(r){var{parser:e}=r;return{type:"internal",mode:e.mode}}});B({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(r,e,t){var{parser:a}=r,n=t[0],s=H(e[0],"size"),o=H(e[1],"size");return{type:"rule",mode:a.mode,shift:n&&H(n,"size").value,width:s.value,height:o.value}},htmlBuilder(r,e){var t=b.makeSpan(["mord","rule"],[],e),a=K(r.width,e),n=K(r.height,e),s=r.shift?K(r.shift,e):0;return t.style.borderRightWidth=A(a),t.style.borderTopWidth=A(n),t.style.bottom=A(s),t.width=a,t.height=n+s,t.depth=-s,t.maxFontSize=n*1.125*e.sizeMultiplier,t},mathmlBuilder(r,e){var t=K(r.width,e),a=K(r.height,e),n=r.shift?K(r.shift,e):0,s=e.color&&e.getColor()||"black",o=new S.MathNode("mspace");o.setAttribute("mathbackground",s),o.setAttribute("width",A(t)),o.setAttribute("height",A(a));var h=new S.MathNode("mpadded",[o]);return n>=0?h.setAttribute("height",A(n)):(h.setAttribute("height",A(n)),h.setAttribute("depth",A(-n))),h.setAttribute("voffset",A(n)),h}});function aa(r,e,t){for(var a=t0(r,e,!1),n=e.sizeMultiplier/t.sizeMultiplier,s=0;s{var t=e.havingSize(r.size);return aa(r.body,t,e)};B({type:"sizing",names:nr,props:{numArgs:0,allowedInText:!0},handler:(r,e)=>{var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!1,t);return{type:"sizing",mode:n.mode,size:nr.indexOf(a)+1,body:s}},htmlBuilder:K1,mathmlBuilder:(r,e)=>{var t=e.havingSize(r.size),a=o0(r.body,t),n=new S.MathNode("mstyle",a);return n.setAttribute("mathsize",A(t.sizeMultiplier)),n}});B({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(r,e,t)=>{var{parser:a}=r,n=!1,s=!1,o=t[0]&&H(t[0],"ordgroup");if(o)for(var h="",c=0;c{var t=b.makeSpan([],[P(r.body,e)]);if(!r.smashHeight&&!r.smashDepth)return t;if(r.smashHeight&&(t.height=0,t.children))for(var a=0;a{var t=new S.MathNode("mpadded",[X(r.body,e)]);return r.smashHeight&&t.setAttribute("height","0px"),r.smashDepth&&t.setAttribute("depth","0px"),t}});B({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(r,e,t){var{parser:a}=r,n=t[0],s=e[0];return{type:"sqrt",mode:a.mode,body:s,index:n}},htmlBuilder(r,e){var t=P(r.body,e.havingCrampedStyle());t.height===0&&(t.height=e.fontMetrics().xHeight),t=b.wrapFragment(t,e);var a=e.fontMetrics(),n=a.defaultRuleThickness,s=n;e.style.idt.height+t.depth+o&&(o=(o+y-t.height-t.depth)/2);var w=c.height-t.height-o-p;t.style.paddingLeft=A(g);var x=b.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:t,wrapperClasses:["svg-align"]},{type:"kern",size:-(t.height+w)},{type:"elem",elem:c},{type:"kern",size:p}]},e);if(r.index){var z=e.havingStyle(R.SCRIPTSCRIPT),T=P(r.index,z,e),C=.6*(x.height-x.depth),N=b.makeVList({positionType:"shift",positionData:-C,children:[{type:"elem",elem:T}]},e),F=b.makeSpan(["root"],[N]);return b.makeSpan(["mord","sqrt"],[F,x],e)}else return b.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(r,e){var{body:t,index:a}=r;return a?new S.MathNode("mroot",[X(t,e),X(a,e)]):new S.MathNode("msqrt",[X(t,e)])}});var ir={display:R.DISPLAY,text:R.TEXT,script:R.SCRIPT,scriptscript:R.SCRIPTSCRIPT};B({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(r,e){var{breakOnTokenText:t,funcName:a,parser:n}=r,s=n.parseExpression(!0,t),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:s}},htmlBuilder(r,e){var t=ir[r.style],a=e.havingStyle(t).withFont("");return aa(r.body,a,e)},mathmlBuilder(r,e){var t=ir[r.style],a=e.havingStyle(t),n=o0(r.body,a),s=new S.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},h=o[r.style];return s.setAttribute("scriptlevel",h[0]),s.setAttribute("displaystyle",h[1]),s}});var J1=function(e,t){var a=e.base;if(a)if(a.type==="op"){var n=a.limits&&(t.style.size===R.DISPLAY.size||a.alwaysHandleSupSub);return n?ae:null}else if(a.type==="operatorname"){var s=a.alwaysHandleSupSub&&(t.style.size===R.DISPLAY.size||a.limits);return s?ra:null}else{if(a.type==="accent")return q.isCharacterBox(a.base)?wt:null;if(a.type==="horizBrace"){var o=!e.sub;return o===a.isOver?_r:null}else return null}else return null};W0({type:"supsub",htmlBuilder(r,e){var t=J1(r,e);if(t)return t(r,e);var{base:a,sup:n,sub:s}=r,o=P(a,e),h,c,p=e.fontMetrics(),g=0,y=0,w=a&&q.isCharacterBox(a);if(n){var x=e.havingStyle(e.style.sup());h=P(n,x,e),w||(g=o.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(s){var z=e.havingStyle(e.style.sub());c=P(s,z,e),w||(y=o.depth+z.fontMetrics().subDrop*z.sizeMultiplier/e.sizeMultiplier)}var T;e.style===R.DISPLAY?T=p.sup1:e.style.cramped?T=p.sup3:T=p.sup2;var C=e.sizeMultiplier,N=A(.5/p.ptPerEm/C),F=null;if(c){var O=r.base&&r.base.type==="op"&&r.base.name&&(r.base.name==="\\oiint"||r.base.name==="\\oiiint");(o instanceof p0||O)&&(F=A(-o.italic))}var V;if(h&&c){g=Math.max(g,T,h.depth+.25*p.xHeight),y=Math.max(y,p.sub2);var L=p.defaultRuleThickness,U=4*L;if(g-h.depth-(c.height-y)0&&(g+=G,y-=G)}var j=[{type:"elem",elem:c,shift:y,marginRight:N,marginLeft:F},{type:"elem",elem:h,shift:-g,marginRight:N}];V=b.makeVList({positionType:"individualShift",children:j},e)}else if(c){y=Math.max(y,p.sub1,c.height-.8*p.xHeight);var Y=[{type:"elem",elem:c,marginLeft:F,marginRight:N}];V=b.makeVList({positionType:"shift",positionData:y,children:Y},e)}else if(h)g=Math.max(g,T,h.depth+.25*p.xHeight),V=b.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:h,marginRight:N}]},e);else throw new Error("supsub must have either sup or sub.");var z0=ot(o,"right")||"mord";return b.makeSpan([z0],[o,b.makeSpan(["msupsub"],[V])],e)},mathmlBuilder(r,e){var t=!1,a,n;r.base&&r.base.type==="horizBrace"&&(n=!!r.sup,n===r.base.isOver&&(t=!0,a=r.base.isOver)),r.base&&(r.base.type==="op"||r.base.type==="operatorname")&&(r.base.parentIsSupSub=!0);var s=[X(r.base,e)];r.sub&&s.push(X(r.sub,e)),r.sup&&s.push(X(r.sup,e));var o;if(t)o=a?"mover":"munder";else if(r.sub)if(r.sup){var p=r.base;p&&p.type==="op"&&p.limits&&e.style===R.DISPLAY||p&&p.type==="operatorname"&&p.alwaysHandleSupSub&&(e.style===R.DISPLAY||p.limits)?o="munderover":o="msubsup"}else{var c=r.base;c&&c.type==="op"&&c.limits&&(e.style===R.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===R.DISPLAY)?o="munder":o="msub"}else{var h=r.base;h&&h.type==="op"&&h.limits&&(e.style===R.DISPLAY||h.alwaysHandleSupSub)||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(h.limits||e.style===R.DISPLAY)?o="mover":o="msup"}return new S.MathNode(o,s)}});W0({type:"atom",htmlBuilder(r,e){return b.mathsym(r.text,r.mode,e,["m"+r.family])},mathmlBuilder(r,e){var t=new S.MathNode("mo",[v0(r.text,r.mode)]);if(r.family==="bin"){var a=yt(r,e);a==="bold-italic"&&t.setAttribute("mathvariant",a)}else r.family==="punct"?t.setAttribute("separator","true"):(r.family==="open"||r.family==="close")&&t.setAttribute("stretchy","false");return t}});var na={mi:"italic",mn:"normal",mtext:"normal"};W0({type:"mathord",htmlBuilder(r,e){return b.makeOrd(r,e,"mathord")},mathmlBuilder(r,e){var t=new S.MathNode("mi",[v0(r.text,r.mode,e)]),a=yt(r,e)||"italic";return a!==na[t.type]&&t.setAttribute("mathvariant",a),t}});W0({type:"textord",htmlBuilder(r,e){return b.makeOrd(r,e,"textord")},mathmlBuilder(r,e){var t=v0(r.text,r.mode,e),a=yt(r,e)||"normal",n;return r.mode==="text"?n=new S.MathNode("mtext",[t]):/[0-9]/.test(r.text)?n=new S.MathNode("mn",[t]):r.text==="\\prime"?n=new S.MathNode("mo",[t]):n=new S.MathNode("mi",[t]),a!==na[n.type]&&n.setAttribute("mathvariant",a),n}});var tt={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},rt={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};W0({type:"spacing",htmlBuilder(r,e){if(rt.hasOwnProperty(r.text)){var t=rt[r.text].className||"";if(r.mode==="text"){var a=b.makeOrd(r,e,"textord");return a.classes.push(t),a}else return b.makeSpan(["mspace",t],[b.mathsym(r.text,r.mode,e)],e)}else{if(tt.hasOwnProperty(r.text))return b.makeSpan(["mspace",tt[r.text]],[],e);throw new M('Unknown type of space "'+r.text+'"')}},mathmlBuilder(r,e){var t;if(rt.hasOwnProperty(r.text))t=new S.MathNode("mtext",[new S.TextNode(" ")]);else{if(tt.hasOwnProperty(r.text))return new S.MathNode("mspace");throw new M('Unknown type of space "'+r.text+'"')}return t}});var sr=()=>{var r=new S.MathNode("mtd",[]);return r.setAttribute("width","50%"),r};W0({type:"tag",mathmlBuilder(r,e){var t=new S.MathNode("mtable",[new S.MathNode("mtr",[sr(),new S.MathNode("mtd",[V0(r.body,e)]),sr(),new S.MathNode("mtd",[V0(r.tag,e)])])]);return t.setAttribute("width","100%"),t}});var lr={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},or={"\\textbf":"textbf","\\textmd":"textmd"},Q1={"\\textit":"textit","\\textup":"textup"},ur=(r,e)=>{var t=r.font;if(t){if(lr[t])return e.withTextFontFamily(lr[t]);if(or[t])return e.withTextFontWeight(or[t]);if(t==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Q1[t])};B({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(r,e){var{parser:t,funcName:a}=r,n=e[0];return{type:"text",mode:t.mode,body:Q(n),font:a}},htmlBuilder(r,e){var t=ur(r,e),a=t0(r.body,t,!0);return b.makeSpan(["mord","text"],a,t)},mathmlBuilder(r,e){var t=ur(r,e);return V0(r.body,t)}});B({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(r,e){var{parser:t}=r;return{type:"underline",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=P(r.body,e),a=b.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,s=b.makeVList({positionType:"top",positionData:t.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:t}]},e);return b.makeSpan(["mord","underline"],[s],e)},mathmlBuilder(r,e){var t=new S.MathNode("mo",[new S.TextNode("‾")]);t.setAttribute("stretchy","true");var a=new S.MathNode("munder",[X(r.body,e),t]);return a.setAttribute("accentunder","true"),a}});B({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(r,e){var{parser:t}=r;return{type:"vcenter",mode:t.mode,body:e[0]}},htmlBuilder(r,e){var t=P(r.body,e),a=e.fontMetrics().axisHeight,n=.5*(t.height-a-(t.depth+a));return b.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:t}]},e)},mathmlBuilder(r,e){return new S.MathNode("mpadded",[X(r.body,e)],["vcenter"])}});B({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(r,e,t){throw new M("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(r,e){for(var t=hr(r),a=[],n=e.havingStyle(e.style.text()),s=0;sr.body.replace(/ /g,r.star?"␣":" "),L0=Tr,ia=`[ \r + ]`,_1="\\\\[a-zA-Z@]+",e4="\\\\[^\uD800-\uDFFF]",t4="("+_1+")"+ia+"*",r4=`\\\\( +|[ \r ]+ +?)[ \r ]*`,ct="[̀-ͯ]",a4=new RegExp(ct+"+$"),n4="("+ia+"+)|"+(r4+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(ct+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(ct+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+t4)+("|"+e4+")");class mr{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(n4,"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 f0("EOF",new u0(this,t,t));var a=this.tokenRegex.exec(e);if(a===null||a.index!==t)throw new M("Unexpected character: '"+e[t]+"'",new f0(e[t],new u0(this,t,t+1)));var n=a[6]||a[3]||(a[2]?"\\ ":" ");if(this.catcodes[n]===14){var s=e.indexOf(` +`,this.tokenRegex.lastIndex);return s===-1?(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 f0(n,new u0(this,t,this.tokenRegex.lastIndex))}}class i4{constructor(e,t){e===void 0&&(e={}),t===void 0&&(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(this.undefStack.length===0)throw new M("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)&&(e[t]==null?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,a){if(a===void 0&&(a=!1),a){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var s=this.undefStack[this.undefStack.length-1];s&&!s.hasOwnProperty(e)&&(s[e]=this.current[e])}t==null?delete this.current[e]:this.current[e]=t}}var s4=jr;m("\\noexpand",function(r){var e=r.popToken();return r.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});m("\\expandafter",function(r){var e=r.popToken();return r.expandOnce(!0),{tokens:[e],numArgs:0}});m("\\@firstoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[0],numArgs:0}});m("\\@secondoftwo",function(r){var e=r.consumeArgs(2);return{tokens:e[1],numArgs:0}});m("\\@ifnextchar",function(r){var e=r.consumeArgs(3);r.consumeSpaces();var t=r.future();return e[0].length===1&&e[0][0].text===t.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});m("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");m("\\TextOrMath",function(r){var e=r.consumeArgs(2);return r.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var cr={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};m("\\char",function(r){var e=r.popToken(),t,a="";if(e.text==="'")t=8,e=r.popToken();else if(e.text==='"')t=16,e=r.popToken();else if(e.text==="`")if(e=r.popToken(),e.text[0]==="\\")a=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new M("\\char` missing argument");a=e.text.charCodeAt(0)}else t=10;if(t){if(a=cr[e.text],a==null||a>=t)throw new M("Invalid base-"+t+" digit "+e.text);for(var n;(n=cr[r.future().text])!=null&&n{var a=r.consumeArg().tokens;if(a.length!==1)throw new M("\\newcommand's first argument must be a macro name");var n=a[0].text,s=r.isDefined(n);if(s&&!e)throw new M("\\newcommand{"+n+"} attempting to redefine "+(n+"; use \\renewcommand"));if(!s&&!t)throw new M("\\renewcommand{"+n+"} when command "+n+" does not yet exist; use \\newcommand");var o=0;if(a=r.consumeArg().tokens,a.length===1&&a[0].text==="["){for(var h="",c=r.expandNextToken();c.text!=="]"&&c.text!=="EOF";)h+=c.text,c=r.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new M("Invalid number of arguments: "+h);o=parseInt(h),a=r.consumeArg().tokens}return r.macros.set(n,{tokens:a,numArgs:o}),""};m("\\newcommand",r=>Dt(r,!1,!0));m("\\renewcommand",r=>Dt(r,!0,!1));m("\\providecommand",r=>Dt(r,!0,!0));m("\\message",r=>{var e=r.consumeArgs(1)[0];return console.log(e.reverse().map(t=>t.text).join("")),""});m("\\errmessage",r=>{var e=r.consumeArgs(1)[0];return console.error(e.reverse().map(t=>t.text).join("")),""});m("\\show",r=>{var e=r.popToken(),t=e.text;return console.log(e,r.macros.get(t),L0[t],$.math[t],$.text[t]),""});m("\\bgroup","{");m("\\egroup","}");m("~","\\nobreakspace");m("\\lq","`");m("\\rq","'");m("\\aa","\\r a");m("\\AA","\\r A");m("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");m("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");m("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");m("ℬ","\\mathscr{B}");m("ℰ","\\mathscr{E}");m("ℱ","\\mathscr{F}");m("ℋ","\\mathscr{H}");m("ℐ","\\mathscr{I}");m("ℒ","\\mathscr{L}");m("ℳ","\\mathscr{M}");m("ℛ","\\mathscr{R}");m("ℭ","\\mathfrak{C}");m("ℌ","\\mathfrak{H}");m("ℨ","\\mathfrak{Z}");m("\\Bbbk","\\Bbb{k}");m("·","\\cdotp");m("\\llap","\\mathllap{\\textrm{#1}}");m("\\rlap","\\mathrlap{\\textrm{#1}}");m("\\clap","\\mathclap{\\textrm{#1}}");m("\\mathstrut","\\vphantom{(}");m("\\underbar","\\underline{\\text{#1}}");m("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');m("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");m("\\ne","\\neq");m("≠","\\neq");m("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");m("∉","\\notin");m("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");m("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");m("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");m("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");m("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");m("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");m("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");m("⟂","\\perp");m("‼","\\mathclose{!\\mkern-0.8mu!}");m("∌","\\notni");m("⌜","\\ulcorner");m("⌝","\\urcorner");m("⌞","\\llcorner");m("⌟","\\lrcorner");m("©","\\copyright");m("®","\\textregistered");m("️","\\textregistered");m("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');m("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');m("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');m("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');m("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");m("⋮","\\vdots");m("\\varGamma","\\mathit{\\Gamma}");m("\\varDelta","\\mathit{\\Delta}");m("\\varTheta","\\mathit{\\Theta}");m("\\varLambda","\\mathit{\\Lambda}");m("\\varXi","\\mathit{\\Xi}");m("\\varPi","\\mathit{\\Pi}");m("\\varSigma","\\mathit{\\Sigma}");m("\\varUpsilon","\\mathit{\\Upsilon}");m("\\varPhi","\\mathit{\\Phi}");m("\\varPsi","\\mathit{\\Psi}");m("\\varOmega","\\mathit{\\Omega}");m("\\substack","\\begin{subarray}{c}#1\\end{subarray}");m("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");m("\\boxed","\\fbox{$\\displaystyle{#1}$}");m("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");m("\\implies","\\DOTSB\\;\\Longrightarrow\\;");m("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");m("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");m("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var dr={",":"\\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"};m("\\dots",function(r){var e="\\dotso",t=r.expandAfterFuture().text;return t in dr?e=dr[t]:(t.slice(0,4)==="\\not"||t in $.math&&q.contains(["bin","rel"],$.math[t].group))&&(e="\\dotsb"),e});var Ct={")":!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};m("\\dotso",function(r){var e=r.future().text;return e in Ct?"\\ldots\\,":"\\ldots"});m("\\dotsc",function(r){var e=r.future().text;return e in Ct&&e!==","?"\\ldots\\,":"\\ldots"});m("\\cdots",function(r){var e=r.future().text;return e in Ct?"\\@cdots\\,":"\\@cdots"});m("\\dotsb","\\cdots");m("\\dotsm","\\cdots");m("\\dotsi","\\!\\cdots");m("\\dotsx","\\ldots\\,");m("\\DOTSI","\\relax");m("\\DOTSB","\\relax");m("\\DOTSX","\\relax");m("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");m("\\,","\\tmspace+{3mu}{.1667em}");m("\\thinspace","\\,");m("\\>","\\mskip{4mu}");m("\\:","\\tmspace+{4mu}{.2222em}");m("\\medspace","\\:");m("\\;","\\tmspace+{5mu}{.2777em}");m("\\thickspace","\\;");m("\\!","\\tmspace-{3mu}{.1667em}");m("\\negthinspace","\\!");m("\\negmedspace","\\tmspace-{4mu}{.2222em}");m("\\negthickspace","\\tmspace-{5mu}{.277em}");m("\\enspace","\\kern.5em ");m("\\enskip","\\hskip.5em\\relax");m("\\quad","\\hskip1em\\relax");m("\\qquad","\\hskip2em\\relax");m("\\tag","\\@ifstar\\tag@literal\\tag@paren");m("\\tag@paren","\\tag@literal{({#1})}");m("\\tag@literal",r=>{if(r.macros.get("\\df@tag"))throw new M("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});m("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");m("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");m("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");m("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");m("\\newline","\\\\\\relax");m("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var sa=A(x0["Main-Regular"][84][1]-.7*x0["Main-Regular"][65][1]);m("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+sa+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");m("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+sa+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");m("\\hspace","\\@ifstar\\@hspacer\\@hspace");m("\\@hspace","\\hskip #1\\relax");m("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");m("\\ordinarycolon",":");m("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");m("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');m("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');m("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');m("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');m("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');m("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');m("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');m("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');m("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');m("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');m("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');m("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');m("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');m("∷","\\dblcolon");m("∹","\\eqcolon");m("≔","\\coloneqq");m("≕","\\eqqcolon");m("⩴","\\Coloneqq");m("\\ratio","\\vcentcolon");m("\\coloncolon","\\dblcolon");m("\\colonequals","\\coloneqq");m("\\coloncolonequals","\\Coloneqq");m("\\equalscolon","\\eqqcolon");m("\\equalscoloncolon","\\Eqqcolon");m("\\colonminus","\\coloneq");m("\\coloncolonminus","\\Coloneq");m("\\minuscolon","\\eqcolon");m("\\minuscoloncolon","\\Eqcolon");m("\\coloncolonapprox","\\Colonapprox");m("\\coloncolonsim","\\Colonsim");m("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");m("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");m("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");m("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");m("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");m("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");m("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");m("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");m("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");m("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");m("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");m("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");m("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");m("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");m("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");m("\\nleqq","\\html@mathml{\\@nleqq}{≰}");m("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");m("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");m("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");m("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");m("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");m("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");m("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");m("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");m("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");m("\\imath","\\html@mathml{\\@imath}{ı}");m("\\jmath","\\html@mathml{\\@jmath}{ȷ}");m("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");m("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");m("⟦","\\llbracket");m("⟧","\\rrbracket");m("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");m("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");m("⦃","\\lBrace");m("⦄","\\rBrace");m("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");m("⦵","\\minuso");m("\\darr","\\downarrow");m("\\dArr","\\Downarrow");m("\\Darr","\\Downarrow");m("\\lang","\\langle");m("\\rang","\\rangle");m("\\uarr","\\uparrow");m("\\uArr","\\Uparrow");m("\\Uarr","\\Uparrow");m("\\N","\\mathbb{N}");m("\\R","\\mathbb{R}");m("\\Z","\\mathbb{Z}");m("\\alef","\\aleph");m("\\alefsym","\\aleph");m("\\Alpha","\\mathrm{A}");m("\\Beta","\\mathrm{B}");m("\\bull","\\bullet");m("\\Chi","\\mathrm{X}");m("\\clubs","\\clubsuit");m("\\cnums","\\mathbb{C}");m("\\Complex","\\mathbb{C}");m("\\Dagger","\\ddagger");m("\\diamonds","\\diamondsuit");m("\\empty","\\emptyset");m("\\Epsilon","\\mathrm{E}");m("\\Eta","\\mathrm{H}");m("\\exist","\\exists");m("\\harr","\\leftrightarrow");m("\\hArr","\\Leftrightarrow");m("\\Harr","\\Leftrightarrow");m("\\hearts","\\heartsuit");m("\\image","\\Im");m("\\infin","\\infty");m("\\Iota","\\mathrm{I}");m("\\isin","\\in");m("\\Kappa","\\mathrm{K}");m("\\larr","\\leftarrow");m("\\lArr","\\Leftarrow");m("\\Larr","\\Leftarrow");m("\\lrarr","\\leftrightarrow");m("\\lrArr","\\Leftrightarrow");m("\\Lrarr","\\Leftrightarrow");m("\\Mu","\\mathrm{M}");m("\\natnums","\\mathbb{N}");m("\\Nu","\\mathrm{N}");m("\\Omicron","\\mathrm{O}");m("\\plusmn","\\pm");m("\\rarr","\\rightarrow");m("\\rArr","\\Rightarrow");m("\\Rarr","\\Rightarrow");m("\\real","\\Re");m("\\reals","\\mathbb{R}");m("\\Reals","\\mathbb{R}");m("\\Rho","\\mathrm{P}");m("\\sdot","\\cdot");m("\\sect","\\S");m("\\spades","\\spadesuit");m("\\sub","\\subset");m("\\sube","\\subseteq");m("\\supe","\\supseteq");m("\\Tau","\\mathrm{T}");m("\\thetasym","\\vartheta");m("\\weierp","\\wp");m("\\Zeta","\\mathrm{Z}");m("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");m("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");m("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");m("\\bra","\\mathinner{\\langle{#1}|}");m("\\ket","\\mathinner{|{#1}\\rangle}");m("\\braket","\\mathinner{\\langle{#1}\\rangle}");m("\\Bra","\\left\\langle#1\\right|");m("\\Ket","\\left|#1\\right\\rangle");var la=r=>e=>{var t=e.consumeArg().tokens,a=e.consumeArg().tokens,n=e.consumeArg().tokens,s=e.consumeArg().tokens,o=e.macros.get("|"),h=e.macros.get("\\|");e.macros.beginGroup();var c=y=>w=>{r&&(w.macros.set("|",o),n.length&&w.macros.set("\\|",h));var x=y;if(!y&&n.length){var z=w.future();z.text==="|"&&(w.popToken(),x=!0)}return{tokens:x?n:a,numArgs:0}};e.macros.set("|",c(!1)),n.length&&e.macros.set("\\|",c(!0));var p=e.consumeArg().tokens,g=e.expandTokens([...s,...p,...t]);return e.macros.endGroup(),{tokens:g.reverse(),numArgs:0}};m("\\bra@ket",la(!1));m("\\bra@set",la(!0));m("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");m("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");m("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");m("\\angln","{\\angl n}");m("\\blue","\\textcolor{##6495ed}{#1}");m("\\orange","\\textcolor{##ffa500}{#1}");m("\\pink","\\textcolor{##ff00af}{#1}");m("\\red","\\textcolor{##df0030}{#1}");m("\\green","\\textcolor{##28ae7b}{#1}");m("\\gray","\\textcolor{gray}{#1}");m("\\purple","\\textcolor{##9d38bd}{#1}");m("\\blueA","\\textcolor{##ccfaff}{#1}");m("\\blueB","\\textcolor{##80f6ff}{#1}");m("\\blueC","\\textcolor{##63d9ea}{#1}");m("\\blueD","\\textcolor{##11accd}{#1}");m("\\blueE","\\textcolor{##0c7f99}{#1}");m("\\tealA","\\textcolor{##94fff5}{#1}");m("\\tealB","\\textcolor{##26edd5}{#1}");m("\\tealC","\\textcolor{##01d1c1}{#1}");m("\\tealD","\\textcolor{##01a995}{#1}");m("\\tealE","\\textcolor{##208170}{#1}");m("\\greenA","\\textcolor{##b6ffb0}{#1}");m("\\greenB","\\textcolor{##8af281}{#1}");m("\\greenC","\\textcolor{##74cf70}{#1}");m("\\greenD","\\textcolor{##1fab54}{#1}");m("\\greenE","\\textcolor{##0d923f}{#1}");m("\\goldA","\\textcolor{##ffd0a9}{#1}");m("\\goldB","\\textcolor{##ffbb71}{#1}");m("\\goldC","\\textcolor{##ff9c39}{#1}");m("\\goldD","\\textcolor{##e07d10}{#1}");m("\\goldE","\\textcolor{##a75a05}{#1}");m("\\redA","\\textcolor{##fca9a9}{#1}");m("\\redB","\\textcolor{##ff8482}{#1}");m("\\redC","\\textcolor{##f9685d}{#1}");m("\\redD","\\textcolor{##e84d39}{#1}");m("\\redE","\\textcolor{##bc2612}{#1}");m("\\maroonA","\\textcolor{##ffbde0}{#1}");m("\\maroonB","\\textcolor{##ff92c6}{#1}");m("\\maroonC","\\textcolor{##ed5fa6}{#1}");m("\\maroonD","\\textcolor{##ca337c}{#1}");m("\\maroonE","\\textcolor{##9e034e}{#1}");m("\\purpleA","\\textcolor{##ddd7ff}{#1}");m("\\purpleB","\\textcolor{##c6b9fc}{#1}");m("\\purpleC","\\textcolor{##aa87ff}{#1}");m("\\purpleD","\\textcolor{##7854ab}{#1}");m("\\purpleE","\\textcolor{##543b78}{#1}");m("\\mintA","\\textcolor{##f5f9e8}{#1}");m("\\mintB","\\textcolor{##edf2df}{#1}");m("\\mintC","\\textcolor{##e0e5cc}{#1}");m("\\grayA","\\textcolor{##f6f7f7}{#1}");m("\\grayB","\\textcolor{##f0f1f2}{#1}");m("\\grayC","\\textcolor{##e3e5e6}{#1}");m("\\grayD","\\textcolor{##d6d8da}{#1}");m("\\grayE","\\textcolor{##babec2}{#1}");m("\\grayF","\\textcolor{##888d93}{#1}");m("\\grayG","\\textcolor{##626569}{#1}");m("\\grayH","\\textcolor{##3b3e40}{#1}");m("\\grayI","\\textcolor{##21242c}{#1}");m("\\kaBlue","\\textcolor{##314453}{#1}");m("\\kaGreen","\\textcolor{##71B307}{#1}");var oa={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class l4{constructor(e,t,a){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 i4(s4,t.macros),this.mode=a,this.stack=[]}feed(e){this.lexer=new mr(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&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,a,n;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;t=this.popToken(),{tokens:n,end:a}=this.consumeArg(["]"])}else({tokens:n,start:t,end:a}=this.consumeArg());return this.pushToken(new f0("EOF",a.loc)),this.pushTokens(n),t.range(a,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var t=[],a=e&&e.length>0;a||this.consumeSpaces();var n=this.future(),s,o=0,h=0;do{if(s=this.popToken(),t.push(s),s.text==="{")++o;else if(s.text==="}"){if(--o,o===-1)throw new M("Extra }",s)}else if(s.text==="EOF")throw new M("Unexpected end of input in a macro argument, expected '"+(e&&a?e[h]:"}")+"'",s);if(e&&a)if((o===0||o===1&&e[h]==="{")&&s.text===e[h]){if(++h,h===e.length){t.splice(-h,h);break}}else h=0}while(o!==0||a);return n.text==="{"&&t[t.length-1].text==="}"&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:s}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new M("The length of delimiters doesn't match the number of args!");for(var a=t[0],n=0;nthis.settings.maxExpand)throw new M("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),a=t.text,n=t.noexpand?null:this._getExpansion(a);if(n==null||e&&n.unexpandable){if(e&&n==null&&a[0]==="\\"&&!this.isDefined(a))throw new M("Undefined control sequence: "+a);return this.pushToken(t),!1}this.countExpansion(1);var s=n.tokens,o=this.consumeArgs(n.numArgs,n.delimiters);if(n.numArgs){s=s.slice();for(var h=s.length-1;h>=0;--h){var c=s[h];if(c.text==="#"){if(h===0)throw new M("Incomplete placeholder at end of macro body",c);if(c=s[--h],c.text==="#")s.splice(h+1,1);else if(/^[1-9]$/.test(c.text))s.splice(h,2,...o[+c.text-1]);else throw new M("Not a valid argument number",c)}}}return this.pushTokens(s),s.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){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 f0(e)]):void 0}expandTokens(e){var t=[],a=this.stack.length;for(this.pushTokens(e);this.stack.length>a;)if(this.expandOnce(!0)===!1){var n=this.stack.pop();n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(n)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t&&t.map(a=>a.text).join("")}_getExpansion(e){var t=this.macros.get(e);if(t==null)return t;if(e.length===1){var a=this.lexer.catcodes[e];if(a!=null&&a!==13)return}var n=typeof t=="function"?t(this):t;if(typeof n=="string"){var s=0;if(n.indexOf("#")!==-1)for(var o=n.replace(/##/g,"");o.indexOf("#"+(s+1))!==-1;)++s;for(var h=new mr(n,this.settings),c=[],p=h.lex();p.text!=="EOF";)c.push(p),p=h.lex();c.reverse();var g={tokens:c,numArgs:s};return g}return n}isDefined(e){return this.macros.has(e)||L0.hasOwnProperty(e)||$.math.hasOwnProperty(e)||$.text.hasOwnProperty(e)||oa.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return t!=null?typeof t=="string"||typeof t=="function"||!t.unexpandable:L0.hasOwnProperty(e)&&!L0[e].primitive}}var fr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Me=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),at={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},pr={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class He{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 l4(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(t===void 0&&(t=!0),this.fetch().text!==e)throw new M("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(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 f0("}")),this.gullet.pushTokens(e);var a=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,a}parseExpression(e,t){for(var a=[];;){this.mode==="math"&&this.consumeSpaces();var n=this.fetch();if(He.endOfExpression.indexOf(n.text)!==-1||t&&n.text===t||e&&L0[n.text]&&L0[n.text].infix)break;var s=this.parseAtom(t);if(s){if(s.type==="internal")continue}else break;a.push(s)}return this.mode==="text"&&this.formLigatures(a),this.handleInfixNodes(a)}handleInfixNodes(e){for(var t=-1,a,n=0;n=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var h=$[this.mode][t].group,c=u0.range(e),p;if(Za.hasOwnProperty(h)){var g=h;p={type:"atom",mode:this.mode,family:g,loc:c,text:t}}else p={type:h,mode:this.mode,loc:c,text:t};o=p}else if(t.charCodeAt(0)>=128)this.settings.strict&&(gr(t.charCodeAt(0))?this.mode==="math"&&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:u0.range(e),text:t};else return null;if(this.consume(),s)for(var y=0;yn}function S(e,n){var r={};return n=z(n),le(e,function(t,a,i){$e(r,a,n(t,a,i))}),r}function y(e){return e&&e.length?he(e,pe,en):void 0}function U(e,n){return e&&e.length?he(e,z(n),Fe):void 0}function nn(e,n){var r=e.length;for(e.sort(n);r--;)e[r]=e[r].value;return e}function rn(e,n){if(e!==n){var r=e!==void 0,t=e===null,a=e===e,i=ee(e),o=n!==void 0,u=n===null,d=n===n,s=ee(n);if(!u&&!s&&!i&&e>n||i&&o&&d&&!u&&!s||t&&o&&d||!r&&d||!a)return 1;if(!t&&!i&&!s&&e=u)return d;var s=r[t];return d*(s=="desc"?-1:1)}}return e.index-n.index}function an(e,n,r){n.length?n=F(n,function(i){return we(i)?function(o){return Te(o,i.length===1?i[0]:i)}:i}):n=[pe];var t=-1;n=F(n,We(z));var a=Ve(e,function(i,o,u){var d=F(n,function(s){return s(i)});return{criteria:d,index:++t,value:i}});return nn(a,function(i,o){return tn(i,o,r)})}function on(e,n){return Be(e,n,function(r,t){return Ie(e,t)})}var T=Ue(function(e,n){return e==null?{}:on(e,n)}),un=Math.ceil,dn=Math.max;function sn(e,n,r,t){for(var a=-1,i=dn(un((n-e)/(r||1)),0),o=Array(i);i--;)o[++a]=e,e+=r;return o}function fn(e){return function(n,r,t){return t&&typeof t!="number"&&q(n,r,t)&&(r=t=void 0),n=V(n),r===void 0?(r=n,n=0):r=V(r),t=t===void 0?n1&&q(e,n[0],n[1])?n=[]:r>2&&q(n[0],n[1],n[2])&&(n=[n[0]]),an(e,Se(n),[])}),cn=0;function H(e){var n=++cn;return je(e)+n}function ln(e,n,r){for(var t=-1,a=e.length,i=n.length,o={};++t0;--u)if(o=n[u].dequeue(),o){t=t.concat(B(e,n,r,o,!0));break}}}return t}function B(e,n,r,t,a){var i=a?[]:void 0;return f(e.inEdges(t.v),function(o){var u=e.edge(o),d=e.node(o.v);a&&i.push({v:o.v,w:o.w}),d.out-=u,W(n,r,d)}),f(e.outEdges(t.v),function(o){var u=e.edge(o),d=o.w,s=e.node(d);s.in-=u,W(n,r,s)}),e.removeNode(t.v),i}function mn(e,n){var r=new g,t=0,a=0;f(e.nodes(),function(u){r.setNode(u,{v:u,in:0,out:0})}),f(e.edges(),function(u){var d=r.edge(u.v,u.w)||0,s=n(u),c=d+s;r.setEdge(u.v,u.w,c),a=Math.max(a,r.node(u.v).out+=s),t=Math.max(t,r.node(u.w).in+=s)});var i=E(a+t+3).map(function(){return new vn}),o=t+1;return f(r.nodes(),function(u){W(i,o,r.node(u))}),{graph:r,buckets:i,zeroIdx:o}}function W(e,n,r){r.out?r.in?e[r.out-r.in+n].enqueue(r):e[e.length-1].enqueue(r):e[0].enqueue(r)}function gn(e){var n=e.graph().acyclicer==="greedy"?wn(e,r(e)):yn(e);f(n,function(t){var a=e.edge(t);e.removeEdge(t),a.forwardName=t.name,a.reversed=!0,e.setEdge(t.w,t.v,a,H("rev"))});function r(t){return function(a){return t.edge(a).weight}}}function yn(e){var n=[],r={},t={};function a(i){Object.prototype.hasOwnProperty.call(t,i)||(t[i]=!0,r[i]=!0,f(e.outEdges(i),function(o){Object.prototype.hasOwnProperty.call(r,o.w)?n.push(o):a(o.w)}),delete r[i])}return f(e.nodes(),a),n}function kn(e){f(e.edges(),function(n){var r=e.edge(n);if(r.reversed){e.removeEdge(n);var t=r.forwardName;delete r.reversed,delete r.forwardName,e.setEdge(n.w,n.v,r,t)}})}function L(e,n,r,t){var a;do a=H(t);while(e.hasNode(a));return r.dummy=n,e.setNode(a,r),a}function xn(e){var n=new g().setGraph(e.graph());return f(e.nodes(),function(r){n.setNode(r,e.node(r))}),f(e.edges(),function(r){var t=n.edge(r.v,r.w)||{weight:0,minlen:1},a=e.edge(r);n.setEdge(r.v,r.w,{weight:t.weight+a.weight,minlen:Math.max(t.minlen,a.minlen)})}),n}function be(e){var n=new g({multigraph:e.isMultigraph()}).setGraph(e.graph());return f(e.nodes(),function(r){e.children(r).length||n.setNode(r,e.node(r))}),f(e.edges(),function(r){n.setEdge(r,e.edge(r))}),n}function re(e,n){var r=e.x,t=e.y,a=n.x-r,i=n.y-t,o=e.width/2,u=e.height/2;if(!a&&!i)throw new Error("Not possible to find intersection inside of the rectangle");var d,s;return Math.abs(i)*o>Math.abs(a)*u?(i<0&&(u=-u),d=u*a/i,s=u):(a<0&&(o=-o),d=o,s=o*i/a),{x:r+d,y:t+s}}function j(e){var n=w(E(me(e)+1),function(){return[]});return f(e.nodes(),function(r){var t=e.node(r),a=t.rank;m(a)||(n[a][t.order]=r)}),n}function En(e){var n=P(w(e.nodes(),function(r){return e.node(r).rank}));f(e.nodes(),function(r){var t=e.node(r);ve(t,"rank")&&(t.rank-=n)})}function On(e){var n=P(w(e.nodes(),function(i){return e.node(i).rank})),r=[];f(e.nodes(),function(i){var o=e.node(i).rank-n;r[o]||(r[o]=[]),r[o].push(i)});var t=0,a=e.graph().nodeRankFactor;f(r,function(i,o){m(i)&&o%a!==0?--t:t&&f(i,function(u){e.node(u).rank+=t})})}function te(e,n,r,t){var a={width:0,height:0};return arguments.length>=4&&(a.rank=r,a.order=t),L(e,"border",a,n)}function me(e){return y(w(e.nodes(),function(n){var r=e.node(n).rank;if(!m(r))return r}))}function Ln(e,n){var r={lhs:[],rhs:[]};return f(e,function(t){n(t)?r.lhs.push(t):r.rhs.push(t)}),r}function Nn(e,n){return n()}function Pn(e){function n(r){var t=e.children(r),a=e.node(r);if(t.length&&f(t,n),Object.prototype.hasOwnProperty.call(a,"minRank")){a.borderLeft=[],a.borderRight=[];for(var i=a.minRank,o=a.maxRank+1;io.lim&&(u=o,d=!0);var s=R(n.edges(),function(c){return d===oe(e,e.node(c.v),u)&&d!==oe(e,e.node(c.w),u)});return U(s,function(c){return C(n,c)})}function Pe(e,n,r,t){var a=r.v,i=r.w;e.removeEdge(a,i),e.setEdge(t.v,t.w,{}),Z(e),Q(e,n),Dn(e,n)}function Dn(e,n){var r=X(e.nodes(),function(a){return!n.node(a).parent}),t=Gn(e,r);t=t.slice(1),f(t,function(a){var i=e.node(a).parent,o=n.edge(a,i),u=!1;o||(o=n.edge(i,a),u=!0),n.node(a).rank=n.node(i).rank+(u?o.minlen:-o.minlen)})}function qn(e,n,r){return e.hasEdge(n,r)}function oe(e,n,r){return r.low<=n.lim&&n.lim<=r.lim}function $n(e){switch(e.graph().ranker){case"network-simplex":ue(e);break;case"tight-tree":zn(e);break;case"longest-path":Wn(e);break;default:ue(e)}}var Wn=J;function zn(e){J(e),ye(e)}function ue(e){k(e)}function Xn(e){var n=L(e,"root",{},"_root"),r=Un(e),t=y(x(r))-1,a=2*t+1;e.graph().nestingRoot=n,f(e.edges(),function(o){e.edge(o).minlen*=a});var i=Hn(e)+1;f(e.children(),function(o){Ce(e,n,a,i,t,r,o)}),e.graph().nodeRankFactor=a}function Ce(e,n,r,t,a,i,o){var u=e.children(o);if(!u.length){o!==n&&e.setEdge(n,o,{weight:0,minlen:r});return}var d=te(e,"_bt"),s=te(e,"_bb"),c=e.node(o);e.setParent(d,o),c.borderTop=d,e.setParent(s,o),c.borderBottom=s,f(u,function(l){Ce(e,n,r,t,a,i,l);var h=e.node(l),v=h.borderTop?h.borderTop:l,p=h.borderBottom?h.borderBottom:l,b=h.borderTop?t:2*t,N=v!==p?1:a-i[o]+1;e.setEdge(d,v,{weight:b,minlen:N,nestingEdge:!0}),e.setEdge(p,s,{weight:b,minlen:N,nestingEdge:!0})}),e.parent(o)||e.setEdge(n,d,{weight:0,minlen:a+i[o]})}function Un(e){var n={};function r(t,a){var i=e.children(t);i&&i.length&&f(i,function(o){r(o,a+1)}),n[t]=a}return f(e.children(),function(t){r(t,1)}),n}function Hn(e){return I(e.edges(),function(n,r){return n+e.edge(r).weight},0)}function Jn(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,f(e.edges(),function(r){var t=e.edge(r);t.nestingEdge&&e.removeEdge(r)})}function Qn(e,n,r){var t={},a;f(r,function(i){for(var o=e.parent(i),u,d;o;){if(u=e.parent(o),u?(d=t[u],t[u]=o):(d=a,a=o),d&&d!==o){n.setEdge(d,o);return}o=u}})}function Zn(e,n,r){var t=Kn(e),a=new g({compound:!0}).setGraph({root:t}).setDefaultNodeLabel(function(i){return e.node(i)});return f(e.nodes(),function(i){var o=e.node(i),u=e.parent(i);(o.rank===n||o.minRank<=n&&n<=o.maxRank)&&(a.setNode(i),a.setParent(i,u||t),f(e[r](i),function(d){var s=d.v===i?d.w:d.v,c=a.edge(s,i),l=m(c)?0:c.weight;a.setEdge(s,i,{weight:e.edge(d).weight+l})}),Object.prototype.hasOwnProperty.call(o,"minRank")&&a.setNode(i,{borderLeft:o.borderLeft[n],borderRight:o.borderRight[n]}))}),a}function Kn(e){for(var n;e.hasNode(n=H("_root")););return n}function er(e,n){for(var r=0,t=1;t0;)c%2&&(l+=u[c+1]),c=c-1>>1,u[c]+=s.weight;d+=s.weight*l})),d}function rr(e){var n={},r=R(e.nodes(),function(u){return!e.children(u).length}),t=y(w(r,function(u){return e.node(u).rank})),a=w(E(t+1),function(){return[]});function i(u){if(!ve(n,u)){n[u]=!0;var d=e.node(u);a[d.rank].push(u),f(e.successors(u),i)}}var o=_(r,function(u){return e.node(u).rank});return f(o,i),a}function tr(e,n){return w(n,function(r){var t=e.inEdges(r);if(t.length){var a=I(t,function(i,o){var u=e.edge(o),d=e.node(o.v);return{sum:i.sum+u.weight*d.order,weight:i.weight+u.weight}},{sum:0,weight:0});return{v:r,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:r}})}function ar(e,n){var r={};f(e,function(a,i){var o=r[a.v]={indegree:0,in:[],out:[],vs:[a.v],i};m(a.barycenter)||(o.barycenter=a.barycenter,o.weight=a.weight)}),f(n.edges(),function(a){var i=r[a.v],o=r[a.w];!m(i)&&!m(o)&&(o.indegree++,i.out.push(r[a.w]))});var t=R(r,function(a){return!a.indegree});return ir(t)}function ir(e){var n=[];function r(i){return function(o){o.merged||(m(o.barycenter)||m(i.barycenter)||o.barycenter>=i.barycenter)&&or(i,o)}}function t(i){return function(o){o.in.push(i),--o.indegree===0&&e.push(o)}}for(;e.length;){var a=e.pop();n.push(a),f(a.in.reverse(),r(a)),f(a.out,t(a))}return w(R(n,function(i){return!i.merged}),function(i){return T(i,["vs","i","barycenter","weight"])})}function or(e,n){var r=0,t=0;e.weight&&(r+=e.barycenter*e.weight,t+=e.weight),n.weight&&(r+=n.barycenter*n.weight,t+=n.weight),e.vs=n.vs.concat(e.vs),e.barycenter=r/t,e.weight=t,e.i=Math.min(n.i,e.i),n.merged=!0}function ur(e,n){var r=Ln(e,function(c){return Object.prototype.hasOwnProperty.call(c,"barycenter")}),t=r.lhs,a=_(r.rhs,function(c){return-c.i}),i=[],o=0,u=0,d=0;t.sort(dr(!!n)),d=de(i,a,d),f(t,function(c){d+=c.vs.length,i.push(c.vs),o+=c.barycenter*c.weight,u+=c.weight,d=de(i,a,d)});var s={vs:O(i)};return u&&(s.barycenter=o/u,s.weight=u),s}function de(e,n,r){for(var t;n.length&&(t=M(n)).i<=r;)n.pop(),e.push(t.vs),r++;return r}function dr(e){return function(n,r){return n.barycenterr.barycenter?1:e?r.i-n.i:n.i-r.i}}function Re(e,n,r,t){var a=e.children(n),i=e.node(n),o=i?i.borderLeft:void 0,u=i?i.borderRight:void 0,d={};o&&(a=R(a,function(p){return p!==o&&p!==u}));var s=tr(e,a);f(s,function(p){if(e.children(p.v).length){var b=Re(e,p.v,r,t);d[p.v]=b,Object.prototype.hasOwnProperty.call(b,"barycenter")&&fr(p,b)}});var c=ar(s,r);sr(c,d);var l=ur(c,t);if(o&&(l.vs=O([o,l.vs,u]),e.predecessors(o).length)){var h=e.node(e.predecessors(o)[0]),v=e.node(e.predecessors(u)[0]);Object.prototype.hasOwnProperty.call(l,"barycenter")||(l.barycenter=0,l.weight=0),l.barycenter=(l.barycenter*l.weight+h.order+v.order)/(l.weight+2),l.weight+=2}return l}function sr(e,n){f(e,function(r){r.vs=O(r.vs.map(function(t){return n[t]?n[t].vs:t}))})}function fr(e,n){m(e.barycenter)?(e.barycenter=n.barycenter,e.weight=n.weight):(e.barycenter=(e.barycenter*e.weight+n.barycenter*n.weight)/(e.weight+n.weight),e.weight+=n.weight)}function cr(e){var n=me(e),r=se(e,E(1,n+1),"inEdges"),t=se(e,E(n-1,-1,-1),"outEdges"),a=rr(e);fe(e,a);for(var i=Number.POSITIVE_INFINITY,o,u=0,d=0;d<4;++u,++d){lr(u%2?r:t,u%4>=2),a=j(e);var s=er(e,a);so||u>n[d].lim));for(s=d,d=t;(d=e.parent(d))!==s;)i.push(d);return{path:a.concat(i.reverse()),lca:s}}function pr(e){var n={},r=0;function t(a){var i=r;f(e.children(a),t),n[a]={low:i,lim:r++}}return f(e.children(),t),n}function wr(e,n){var r={};function t(a,i){var o=0,u=0,d=a.length,s=M(i);return f(i,function(c,l){var h=mr(e,c),v=h?e.node(h).order:d;(h||c===s)&&(f(i.slice(u,l+1),function(p){f(e.predecessors(p),function(b){var N=e.node(b),K=N.order;(Ks)&&_e(r,h,c)})})}function a(i,o){var u=-1,d,s=0;return f(o,function(c,l){if(e.node(c).dummy==="border"){var h=e.predecessors(c);h.length&&(d=e.node(h[0]).order,t(o,s,l,u,d),s=l,u=d)}t(o,s,o.length,d,i.length)}),o}return I(n,a),r}function mr(e,n){if(e.node(n).dummy)return X(e.predecessors(n),function(r){return e.node(r).dummy})}function _e(e,n,r){if(n>r){var t=n;n=r,r=t}var a=e[n];a||(e[n]=a={}),a[r]=!0}function gr(e,n,r){if(n>r){var t=n;n=r,r=t}return!!e[n]&&Object.prototype.hasOwnProperty.call(e[n],r)}function yr(e,n,r,t){var a={},i={},o={};return f(n,function(u){f(u,function(d,s){a[d]=d,i[d]=d,o[d]=s})}),f(n,function(u){var d=-1;f(u,function(s){var c=t(s);if(c.length){c=_(c,function(b){return o[b]});for(var l=(c.length-1)/2,h=Math.floor(l),v=Math.ceil(l);h<=v;++h){var p=c[h];i[s]===s&&d{var t=r(" buildLayoutGraph",()=>Yr(e));r(" runLayout",()=>Mr(t,r)),r(" updateInputGraph",()=>Tr(e,t))})}function Mr(e,n){n(" makeSpaceForEdgeLabels",()=>Dr(e)),n(" removeSelfEdges",()=>Qr(e)),n(" acyclic",()=>gn(e)),n(" nestingGraph.run",()=>Xn(e)),n(" rank",()=>$n(be(e))),n(" injectEdgeLabelProxies",()=>qr(e)),n(" removeEmptyRanks",()=>On(e)),n(" nestingGraph.cleanup",()=>Jn(e)),n(" normalizeRanks",()=>En(e)),n(" assignRankMinMax",()=>$r(e)),n(" removeEdgeLabelProxies",()=>Wr(e)),n(" normalize.run",()=>Tn(e)),n(" parentDummyChains",()=>hr(e)),n(" addBorderSegments",()=>Pn(e)),n(" order",()=>cr(e)),n(" insertSelfEdges",()=>Zr(e)),n(" adjustCoordinateSystem",()=>Cn(e)),n(" position",()=>Rr(e)),n(" positionSelfEdges",()=>Kr(e)),n(" removeBorderNodes",()=>Jr(e)),n(" normalize.undo",()=>Sn(e)),n(" fixupEdgeLabelCoords",()=>Ur(e)),n(" undoCoordinateSystem",()=>Rn(e)),n(" translateGraph",()=>zr(e)),n(" assignNodeIntersects",()=>Xr(e)),n(" reversePoints",()=>Hr(e)),n(" acyclic.undo",()=>kn(e))}function Tr(e,n){f(e.nodes(),function(r){var t=e.node(r),a=n.node(r);t&&(t.x=a.x,t.y=a.y,n.children(r).length&&(t.width=a.width,t.height=a.height))}),f(e.edges(),function(r){var t=e.edge(r),a=n.edge(r);t.points=a.points,Object.prototype.hasOwnProperty.call(a,"x")&&(t.x=a.x,t.y=a.y)}),e.graph().width=n.graph().width,e.graph().height=n.graph().height}var Ir=["nodesep","edgesep","ranksep","marginx","marginy"],Sr={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},jr=["acyclicer","ranker","rankdir","align"],Fr=["width","height"],Vr={width:0,height:0},Br=["minlen","weight","width","height","labeloffset"],Ar={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Gr=["labelpos"];function Yr(e){var n=new g({multigraph:!0,compound:!0}),r=D(e.graph());return n.setGraph($({},Sr,Y(r,Ir),T(r,jr))),f(e.nodes(),function(t){var a=D(e.node(t));n.setNode(t,Ae(Y(a,Fr),Vr)),n.setParent(t,e.parent(t))}),f(e.edges(),function(t){var a=D(e.edge(t));n.setEdge(t,$({},Ar,Y(a,Br),T(a,Gr)))}),n}function Dr(e){var n=e.graph();n.ranksep/=2,f(e.edges(),function(r){var t=e.edge(r);t.minlen*=2,t.labelpos.toLowerCase()!=="c"&&(n.rankdir==="TB"||n.rankdir==="BT"?t.width+=t.labeloffset:t.height+=t.labeloffset)})}function qr(e){f(e.edges(),function(n){var r=e.edge(n);if(r.width&&r.height){var t=e.node(n.v),a=e.node(n.w),i={rank:(a.rank-t.rank)/2+t.rank,e:n};L(e,"edge-proxy",i,"_ep")}})}function $r(e){var n=0;f(e.nodes(),function(r){var t=e.node(r);t.borderTop&&(t.minRank=e.node(t.borderTop).rank,t.maxRank=e.node(t.borderBottom).rank,n=y(n,t.maxRank))}),e.graph().maxRank=n}function Wr(e){f(e.nodes(),function(n){var r=e.node(n);r.dummy==="edge-proxy"&&(e.edge(r.e).labelRank=r.rank,e.removeNode(n))})}function zr(e){var n=Number.POSITIVE_INFINITY,r=0,t=Number.POSITIVE_INFINITY,a=0,i=e.graph(),o=i.marginx||0,u=i.marginy||0;function d(s){var c=s.x,l=s.y,h=s.width,v=s.height;n=Math.min(n,c-h/2),r=Math.max(r,c+h/2),t=Math.min(t,l-v/2),a=Math.max(a,l+v/2)}f(e.nodes(),function(s){d(e.node(s))}),f(e.edges(),function(s){var c=e.edge(s);Object.prototype.hasOwnProperty.call(c,"x")&&d(c)}),n-=o,t-=u,f(e.nodes(),function(s){var c=e.node(s);c.x-=n,c.y-=t}),f(e.edges(),function(s){var c=e.edge(s);f(c.points,function(l){l.x-=n,l.y-=t}),Object.prototype.hasOwnProperty.call(c,"x")&&(c.x-=n),Object.prototype.hasOwnProperty.call(c,"y")&&(c.y-=t)}),i.width=r-n+o,i.height=a-t+u}function Xr(e){f(e.edges(),function(n){var r=e.edge(n),t=e.node(n.v),a=e.node(n.w),i,o;r.points?(i=r.points[0],o=r.points[r.points.length-1]):(r.points=[],i=a,o=t),r.points.unshift(re(t,i)),r.points.push(re(a,o))})}function Ur(e){f(e.edges(),function(n){var r=e.edge(n);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function Hr(e){f(e.edges(),function(n){var r=e.edge(n);r.reversed&&r.points.reverse()})}function Jr(e){f(e.nodes(),function(n){if(e.children(n).length){var r=e.node(n),t=e.node(r.borderTop),a=e.node(r.borderBottom),i=e.node(M(r.borderLeft)),o=e.node(M(r.borderRight));r.width=Math.abs(o.x-i.x),r.height=Math.abs(a.y-t.y),r.x=i.x+r.width/2,r.y=t.y+r.height/2}}),f(e.nodes(),function(n){e.node(n).dummy==="border"&&e.removeNode(n)})}function Qr(e){f(e.edges(),function(n){if(n.v===n.w){var r=e.node(n.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}})}function Zr(e){var n=j(e);f(n,function(r){var t=0;f(r,function(a,i){var o=e.node(a);o.order=i+t,f(o.selfEdges,function(u){L(e,"selfedge",{width:u.label.width,height:u.label.height,rank:o.rank,order:i+ ++t,e:u.e,label:u.label},"_se")}),delete o.selfEdges})})}function Kr(e){f(e.nodes(),function(n){var r=e.node(n);if(r.dummy==="selfedge"){var t=e.node(r.e.v),a=t.x+t.width/2,i=t.y,o=r.x-a,u=t.height/2;e.setEdge(r.e,r.label),e.removeNode(n),r.label.points=[{x:a+2*o/3,y:i-u},{x:a+5*o/6,y:i-u},{x:a+o,y:i},{x:a+5*o/6,y:i+u},{x:a+2*o/3,y:i+u}],r.label.x=r.x,r.label.y=r.y}})}function Y(e,n){return S(T(e,n),Number)}function D(e){var n={};return f(e,function(r,t){n[t.toLowerCase()]=r}),n}export{at as l}; diff --git a/assets/chunks/linear.D-_N5yV4.js b/assets/chunks/linear.D-_N5yV4.js new file mode 100644 index 00000000..57246570 --- /dev/null +++ b/assets/chunks/linear.D-_N5yV4.js @@ -0,0 +1 @@ +import{b0 as un,b1 as I,b2 as U,b3 as Y,b4 as fn}from"../app.BCWCbnje.js";import{i as cn}from"./init.Gi6I4Gst.js";function F(n,t){return n==null||t==null?NaN:nt?1:n>=t?0:NaN}function hn(n,t){return n==null||t==null?NaN:tn?1:t>=n?0:NaN}function _(n){let t,e,r;n.length!==2?(t=F,e=(u,c)=>F(n(u),c),r=(u,c)=>n(u)-c):(t=n===F||n===hn?n:mn,e=n,r=n);function i(u,c,o=0,s=u.length){if(o>>1;e(u[h],c)<0?o=h+1:s=h}while(o>>1;e(u[h],c)<=0?o=h+1:s=h}while(oo&&r(u[h-1],c)>-r(u[h],c)?h-1:h}return{left:i,center:a,right:f}}function mn(){return 0}function ln(n){return n===null?NaN:+n}const sn=_(F),dn=sn.right;_(ln).center;const gn=Math.sqrt(50),yn=Math.sqrt(10),Mn=Math.sqrt(2);function R(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),f=r/Math.pow(10,i),a=f>=gn?10:f>=yn?5:f>=Mn?2:1;let u,c,o;return i<0?(o=Math.pow(10,-i)/a,u=Math.round(n*o),c=Math.round(t*o),u/ot&&--c,o=-o):(o=Math.pow(10,i)*a,u=Math.round(n/o),c=Math.round(t/o),u*ot&&--c),c0))return[];if(n===t)return[n];const r=t=i))return[];const u=f-i+1,c=new Array(u);if(r)if(a<0)for(let o=0;o=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function E(n,t){if((e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"))<0)return null;var e,r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function v(n){return n=E(Math.abs(n)),n?n[1]:NaN}function jn(n,t){return function(e,r){for(var i=e.length,f=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),f.push(e.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return f.reverse().join(t)}}function Pn(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var zn=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function D(n){if(!(t=zn.exec(n)))throw new Error("invalid format: "+n);var t;return new B({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}D.prototype=B.prototype;function B(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}B.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function $n(n){n:for(var t=n.length,e=1,r=-1,i;e0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var nn;function Fn(n,t){var e=E(n,t);if(!e)return n+"";var r=e[0],i=e[1],f=i-(nn=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,a=r.length;return f===a?r:f>a?r+new Array(f-a+1).join("0"):f>0?r.slice(0,f)+"."+r.slice(f):"0."+new Array(1-f).join("0")+E(n,Math.max(0,t+f-1))[0]}function Z(n,t){var e=E(n,t);if(!e)return n+"";var r=e[0],i=e[1];return i<0?"0."+new Array(-i).join("0")+r:r.length>i+1?r.slice(0,i+1)+"."+r.slice(i+1):r+new Array(i-r.length+2).join("0")}const H={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Sn,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Z(n*100,t),r:Z,s:Fn,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function J(n){return n}var K=Array.prototype.map,Q=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Rn(n){var t=n.grouping===void 0||n.thousands===void 0?J:jn(K.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",f=n.numerals===void 0?J:Pn(K.call(n.numerals,String)),a=n.percent===void 0?"%":n.percent+"",u=n.minus===void 0?"−":n.minus+"",c=n.nan===void 0?"NaN":n.nan+"";function o(h){h=D(h);var l=h.fill,p=h.align,y=h.sign,b=h.symbol,k=h.zero,S=h.width,T=h.comma,w=h.precision,G=h.trim,d=h.type;d==="n"?(T=!0,d="g"):H[d]||(w===void 0&&(w=12),G=!0,d="g"),(k||l==="0"&&p==="=")&&(k=!0,l="0",p="=");var en=b==="$"?e:b==="#"&&/[boxX]/.test(d)?"0"+d.toLowerCase():"",on=b==="$"?r:/[%p]/.test(d)?a:"",O=H[d],an=/[defgprs%]/.test(d);w=w===void 0?6:/[gprs]/.test(d)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function V(m){var N=en,g=on,x,X,j;if(d==="c")g=O(m)+g,m="";else{m=+m;var P=m<0||1/m<0;if(m=isNaN(m)?c:O(Math.abs(m),w),G&&(m=$n(m)),P&&+m==0&&y!=="+"&&(P=!1),N=(P?y==="("?y:u:y==="-"||y==="("?"":y)+N,g=(d==="s"?Q[8+nn/3]:"")+g+(P&&y==="("?")":""),an){for(x=-1,X=m.length;++xj||j>57){g=(j===46?i+m.slice(x+1):m.slice(x))+g,m=m.slice(0,x);break}}}T&&!k&&(m=t(m,1/0));var z=N.length+m.length+g.length,M=z>1)+N+m+g+M.slice(z);break;default:m=M+N+m+g;break}return f(m)}return V.toString=function(){return h+""},V}function s(h,l){var p=o((h=D(h),h.type="f",h)),y=Math.max(-8,Math.min(8,Math.floor(v(l)/3)))*3,b=Math.pow(10,-y),k=Q[8+y/3];return function(S){return p(b*S)+k}}return{format:o,formatPrefix:s}}var $,tn,rn;En({thousands:",",grouping:[3],currency:["$",""]});function En(n){return $=Rn(n),tn=$.format,rn=$.formatPrefix,$}function Dn(n){return Math.max(0,-v(Math.abs(n)))}function Tn(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(v(t)/3)))*3-v(Math.abs(n)))}function In(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,v(t)-v(n))+1}function Ln(n){return function(){return n}}function qn(n){return+n}var W=[0,1];function A(n){return n}function q(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:Ln(isNaN(t)?NaN:.5)}function Cn(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function Bn(n,t,e){var r=n[0],i=n[1],f=t[0],a=t[1];return i2?Gn:Bn,c=o=null,h}function h(l){return l==null||isNaN(l=+l)?f:(c||(c=u(n.map(r),t,e)))(r(a(l)))}return h.invert=function(l){return a(i((o||(o=u(t,n.map(r),I)))(l)))},h.domain=function(l){return arguments.length?(n=Array.from(l,qn),s()):n.slice()},h.range=function(l){return arguments.length?(t=Array.from(l),s()):t.slice()},h.rangeRound=function(l){return t=Array.from(l),e=bn,s()},h.clamp=function(l){return arguments.length?(a=l?!0:A,s()):a!==A},h.interpolate=function(l){return arguments.length?(e=l,s()):e},h.unknown=function(l){return arguments.length?(f=l,h):f},function(l,p){return r=l,i=p,s()}}function Xn(){return Vn()(A,A)}function Un(n,t,e,r){var i=wn(n,t,e),f;switch(r=D(r??",f"),r.type){case"s":{var a=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(f=Tn(i,a))&&(r.precision=f),rn(r,a)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(f=In(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=f-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(f=Dn(i))&&(r.precision=f-(r.type==="%")*2);break}}return tn(r)}function Yn(n){var t=n.domain;return n.ticks=function(e){var r=t();return pn(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return Un(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,f=r.length-1,a=r[i],u=r[f],c,o,s=10;for(u0;){if(o=L(a,u,e),o===c)return r[i]=a,r[f]=u,t(r);if(o>0)a=Math.floor(a/o)*o,u=Math.ceil(u/o)*o;else if(o<0)a=Math.ceil(a*o)/o,u=Math.floor(u*o)/o;else break;c=o}return n},n}function Zn(){var n=Xn();return n.copy=function(){return On(n,Zn())},cn.apply(n,arguments),Yn(n)}export{On as a,_ as b,Xn as c,Zn as l,wn as t}; diff --git a/assets/chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js b/assets/chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js new file mode 100644 index 00000000..145b3e4a --- /dev/null +++ b/assets/chunks/mindmap-definition-GWI6TPTV.Cdwx1lSN.js @@ -0,0 +1,95 @@ +import{aG as at,aH as Nt,_ as S,l as z,j as Dt,al as mt,a5 as Ot,d as ot,I as At,ac as It,D as tt,i as et,ad as Ct,ae as Rt,af as xt}from"../app.BCWCbnje.js";import{c as pt}from"./cytoscape.esm.FpOb6hff.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var dt={exports:{}},it={exports:{}},nt={exports:{}},ut;function Mt(){return ut||(ut=1,function(I,w){(function(m,y){I.exports=y()})(at,function(){return function(f){var m={};function y(r){if(m[r])return m[r].exports;var t=m[r]={i:r,l:!1,exports:{}};return f[r].call(t.exports,t,t.exports,y),t.l=!0,t.exports}return y.m=f,y.c=m,y.i=function(r){return r},y.d=function(r,t,e){y.o(r,t)||Object.defineProperty(r,t,{configurable:!1,enumerable:!0,get:e})},y.n=function(r){var t=r&&r.__esModule?function(){return r.default}:function(){return r};return y.d(t,"a",t),t},y.o=function(r,t){return Object.prototype.hasOwnProperty.call(r,t)},y.p="",y(y.s=26)}([function(f,m,y){function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,f.exports=r},function(f,m,y){var r=y(2),t=y(8),e=y(9);function i(g,a,v){r.call(this,v),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=v,this.bendpoints=[],this.source=g,this.target=a}i.prototype=Object.create(r.prototype);for(var o in r)i[o]=r[o];i.prototype.getSource=function(){return this.source},i.prototype.getTarget=function(){return this.target},i.prototype.isInterGraph=function(){return this.isInterGraph},i.prototype.getLength=function(){return this.length},i.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},i.prototype.getBendpoints=function(){return this.bendpoints},i.prototype.getLca=function(){return this.lca},i.prototype.getSourceInLca=function(){return this.sourceInLca},i.prototype.getTargetInLca=function(){return this.targetInLca},i.prototype.getOtherEnd=function(g){if(this.source===g)return this.target;if(this.target===g)return this.source;throw"Node is not incident with this edge"},i.prototype.getOtherEndInGraph=function(g,a){for(var v=this.getOtherEnd(g),n=a.getGraphManager().getRoot();;){if(v.getOwner()==a)return v;if(v.getOwner()==n)break;v=v.getOwner().getParent()}return null},i.prototype.updateLength=function(){var g=new Array(4);this.isOverlapingSourceAndTarget=t.getIntersection(this.target.getRect(),this.source.getRect(),g),this.isOverlapingSourceAndTarget||(this.lengthX=g[0]-g[2],this.lengthY=g[1]-g[3],Math.abs(this.lengthX)<1&&(this.lengthX=e.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=e.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},i.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=e.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=e.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},f.exports=i},function(f,m,y){function r(t){this.vGraphObject=t}f.exports=r},function(f,m,y){var r=y(2),t=y(10),e=y(13),i=y(0),o=y(16),g=y(4);function a(n,c,l,E){l==null&&E==null&&(E=c),r.call(this,E),n.graphManager!=null&&(n=n.graphManager),this.estimatedSize=t.MIN_VALUE,this.inclusionTreeDepth=t.MAX_VALUE,this.vGraphObject=E,this.edges=[],this.graphManager=n,l!=null&&c!=null?this.rect=new e(c.x,c.y,l.width,l.height):this.rect=new e}a.prototype=Object.create(r.prototype);for(var v in r)a[v]=r[v];a.prototype.getEdges=function(){return this.edges},a.prototype.getChild=function(){return this.child},a.prototype.getOwner=function(){return this.owner},a.prototype.getWidth=function(){return this.rect.width},a.prototype.setWidth=function(n){this.rect.width=n},a.prototype.getHeight=function(){return this.rect.height},a.prototype.setHeight=function(n){this.rect.height=n},a.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},a.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},a.prototype.getCenter=function(){return new g(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},a.prototype.getLocation=function(){return new g(this.rect.x,this.rect.y)},a.prototype.getRect=function(){return this.rect},a.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},a.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},a.prototype.setRect=function(n,c){this.rect.x=n.x,this.rect.y=n.y,this.rect.width=c.width,this.rect.height=c.height},a.prototype.setCenter=function(n,c){this.rect.x=n-this.rect.width/2,this.rect.y=c-this.rect.height/2},a.prototype.setLocation=function(n,c){this.rect.x=n,this.rect.y=c},a.prototype.moveBy=function(n,c){this.rect.x+=n,this.rect.y+=c},a.prototype.getEdgeListToNode=function(n){var c=[],l=this;return l.edges.forEach(function(E){if(E.target==n){if(E.source!=l)throw"Incorrect edge source!";c.push(E)}}),c},a.prototype.getEdgesBetween=function(n){var c=[],l=this;return l.edges.forEach(function(E){if(!(E.source==l||E.target==l))throw"Incorrect edge source and/or target";(E.target==n||E.source==n)&&c.push(E)}),c},a.prototype.getNeighborsList=function(){var n=new Set,c=this;return c.edges.forEach(function(l){if(l.source==c)n.add(l.target);else{if(l.target!=c)throw"Incorrect incidency!";n.add(l.source)}}),n},a.prototype.withChildren=function(){var n=new Set,c,l;if(n.add(this),this.child!=null)for(var E=this.child.getNodes(),T=0;Tc&&(this.rect.x-=(this.labelWidth-c)/2,this.setWidth(this.labelWidth)),this.labelHeight>l&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-l)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-l),this.setHeight(this.labelHeight))}}},a.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==t.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},a.prototype.transform=function(n){var c=this.rect.x;c>i.WORLD_BOUNDARY?c=i.WORLD_BOUNDARY:c<-i.WORLD_BOUNDARY&&(c=-i.WORLD_BOUNDARY);var l=this.rect.y;l>i.WORLD_BOUNDARY?l=i.WORLD_BOUNDARY:l<-i.WORLD_BOUNDARY&&(l=-i.WORLD_BOUNDARY);var E=new g(c,l),T=n.inverseTransformPoint(E);this.setLocation(T.x,T.y)},a.prototype.getLeft=function(){return this.rect.x},a.prototype.getRight=function(){return this.rect.x+this.rect.width},a.prototype.getTop=function(){return this.rect.y},a.prototype.getBottom=function(){return this.rect.y+this.rect.height},a.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=a},function(f,m,y){function r(t,e){t==null&&e==null?(this.x=0,this.y=0):(this.x=t,this.y=e)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(t){this.x=t},r.prototype.setY=function(t){this.y=t},r.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},f.exports=r},function(f,m,y){var r=y(2),t=y(10),e=y(0),i=y(6),o=y(3),g=y(1),a=y(13),v=y(12),n=y(11);function c(E,T,D){r.call(this,D),this.estimatedSize=t.MIN_VALUE,this.margin=e.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=E,T!=null&&T instanceof i?this.graphManager=T:T!=null&&T instanceof Layout&&(this.graphManager=T.graphManager)}c.prototype=Object.create(r.prototype);for(var l in r)c[l]=r[l];c.prototype.getNodes=function(){return this.nodes},c.prototype.getEdges=function(){return this.edges},c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getParent=function(){return this.parent},c.prototype.getLeft=function(){return this.left},c.prototype.getRight=function(){return this.right},c.prototype.getTop=function(){return this.top},c.prototype.getBottom=function(){return this.bottom},c.prototype.isConnected=function(){return this.isConnected},c.prototype.add=function(E,T,D){if(T==null&&D==null){var L=E;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(L)>-1)throw"Node already in graph!";return L.owner=this,this.getNodes().push(L),L}else{var O=E;if(!(this.getNodes().indexOf(T)>-1&&this.getNodes().indexOf(D)>-1))throw"Source or target not in graph!";if(!(T.owner==D.owner&&T.owner==this))throw"Both owners must be this graph!";return T.owner!=D.owner?null:(O.source=T,O.target=D,O.isInterGraph=!1,this.getEdges().push(O),T.edges.push(O),D!=T&&D.edges.push(O),O)}},c.prototype.remove=function(E){var T=E;if(E instanceof o){if(T==null)throw"Node is null!";if(!(T.owner!=null&&T.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var D=T.edges.slice(),L,O=D.length,d=0;d-1&&h>-1))throw"Source and/or target doesn't know this edge!";L.source.edges.splice(s,1),L.target!=L.source&&L.target.edges.splice(h,1);var N=L.source.owner.getEdges().indexOf(L);if(N==-1)throw"Not in owner's edge list!";L.source.owner.getEdges().splice(N,1)}},c.prototype.updateLeftTop=function(){for(var E=t.MAX_VALUE,T=t.MAX_VALUE,D,L,O,d=this.getNodes(),N=d.length,s=0;sD&&(E=D),T>L&&(T=L)}return E==t.MAX_VALUE?null:(d[0].getParent().paddingLeft!=null?O=d[0].getParent().paddingLeft:O=this.margin,this.left=T-O,this.top=E-O,new v(this.left,this.top))},c.prototype.updateBounds=function(E){for(var T=t.MAX_VALUE,D=-t.MAX_VALUE,L=t.MAX_VALUE,O=-t.MAX_VALUE,d,N,s,h,u,p=this.nodes,A=p.length,C=0;Cd&&(T=d),Ds&&(L=s),Od&&(T=d),Ds&&(L=s),O=this.nodes.length){var A=0;D.forEach(function(C){C.owner==E&&A++}),A==this.nodes.length&&(this.isConnected=!0)}},f.exports=c},function(f,m,y){var r,t=y(1);function e(i){r=y(5),this.layout=i,this.graphs=[],this.edges=[]}e.prototype.addRoot=function(){var i=this.layout.newGraph(),o=this.layout.newNode(null),g=this.add(i,o);return this.setRootGraph(g),this.rootGraph},e.prototype.add=function(i,o,g,a,v){if(g==null&&a==null&&v==null){if(i==null)throw"Graph is null!";if(o==null)throw"Parent node is null!";if(this.graphs.indexOf(i)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(i),i.parent!=null)throw"Already has a parent!";if(o.child!=null)throw"Already has a child!";return i.parent=o,o.child=i,i}else{v=g,a=o,g=i;var n=a.getOwner(),c=v.getOwner();if(!(n!=null&&n.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(c!=null&&c.getGraphManager()==this))throw"Target not in this graph mgr!";if(n==c)return g.isInterGraph=!1,n.add(g,a,v);if(g.isInterGraph=!0,g.source=a,g.target=v,this.edges.indexOf(g)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(g),!(g.source!=null&&g.target!=null))throw"Edge source and/or target is null!";if(!(g.source.edges.indexOf(g)==-1&&g.target.edges.indexOf(g)==-1))throw"Edge already in source and/or target incidency list!";return g.source.edges.push(g),g.target.edges.push(g),g}},e.prototype.remove=function(i){if(i instanceof r){var o=i;if(o.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(o==this.rootGraph||o.parent!=null&&o.parent.graphManager==this))throw"Invalid parent node!";var g=[];g=g.concat(o.getEdges());for(var a,v=g.length,n=0;n=i.getRight()?o[0]+=Math.min(i.getX()-e.getX(),e.getRight()-i.getRight()):i.getX()<=e.getX()&&i.getRight()>=e.getRight()&&(o[0]+=Math.min(e.getX()-i.getX(),i.getRight()-e.getRight())),e.getY()<=i.getY()&&e.getBottom()>=i.getBottom()?o[1]+=Math.min(i.getY()-e.getY(),e.getBottom()-i.getBottom()):i.getY()<=e.getY()&&i.getBottom()>=e.getBottom()&&(o[1]+=Math.min(e.getY()-i.getY(),i.getBottom()-e.getBottom()));var v=Math.abs((i.getCenterY()-e.getCenterY())/(i.getCenterX()-e.getCenterX()));i.getCenterY()===e.getCenterY()&&i.getCenterX()===e.getCenterX()&&(v=1);var n=v*o[0],c=o[1]/v;o[0]n)return o[0]=g,o[1]=l,o[2]=v,o[3]=p,!1;if(av)return o[0]=c,o[1]=a,o[2]=h,o[3]=n,!1;if(gv?(o[0]=T,o[1]=D,x=!0):(o[0]=E,o[1]=l,x=!0):U===M&&(g>v?(o[0]=c,o[1]=l,x=!0):(o[0]=L,o[1]=D,x=!0)),-X===M?v>g?(o[2]=u,o[3]=p,_=!0):(o[2]=h,o[3]=s,_=!0):X===M&&(v>g?(o[2]=N,o[3]=s,_=!0):(o[2]=A,o[3]=p,_=!0)),x&&_)return!1;if(g>v?a>n?(G=this.getCardinalDirection(U,M,4),F=this.getCardinalDirection(X,M,2)):(G=this.getCardinalDirection(-U,M,3),F=this.getCardinalDirection(-X,M,1)):a>n?(G=this.getCardinalDirection(-U,M,1),F=this.getCardinalDirection(-X,M,3)):(G=this.getCardinalDirection(U,M,2),F=this.getCardinalDirection(X,M,4)),!x)switch(G){case 1:Y=l,b=g+-d/M,o[0]=b,o[1]=Y;break;case 2:b=L,Y=a+O*M,o[0]=b,o[1]=Y;break;case 3:Y=D,b=g+d/M,o[0]=b,o[1]=Y;break;case 4:b=T,Y=a+-O*M,o[0]=b,o[1]=Y;break}if(!_)switch(F){case 1:H=s,k=v+-R/M,o[2]=k,o[3]=H;break;case 2:k=A,H=n+C*M,o[2]=k,o[3]=H;break;case 3:H=p,k=v+R/M,o[2]=k,o[3]=H;break;case 4:k=u,H=n+-C*M,o[2]=k,o[3]=H;break}}return!1},t.getCardinalDirection=function(e,i,o){return e>i?o:1+o%4},t.getIntersection=function(e,i,o,g){if(g==null)return this.getIntersection2(e,i,o);var a=e.x,v=e.y,n=i.x,c=i.y,l=o.x,E=o.y,T=g.x,D=g.y,L=void 0,O=void 0,d=void 0,N=void 0,s=void 0,h=void 0,u=void 0,p=void 0,A=void 0;return d=c-v,s=a-n,u=n*v-a*c,N=D-E,h=l-T,p=T*E-l*D,A=d*h-N*s,A===0?null:(L=(s*p-h*u)/A,O=(N*u-d*p)/A,new r(L,O))},t.angleOfVector=function(e,i,o,g){var a=void 0;return e!==o?(a=Math.atan((g-i)/(o-e)),o0?1:t<0?-1:0},r.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},r.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},f.exports=r},function(f,m,y){function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,f.exports=r},function(f,m,y){var r=function(){function a(v,n){for(var c=0;c"u"?"undefined":r(e);return e==null||i!="object"&&i!="function"},f.exports=t},function(f,m,y){function r(l){if(Array.isArray(l)){for(var E=0,T=Array(l.length);E0&&E;){for(d.push(s[0]);d.length>0&&E;){var h=d[0];d.splice(0,1),O.add(h);for(var u=h.getEdges(),L=0;L-1&&s.splice(R,1)}O=new Set,N=new Map}}return l},c.prototype.createDummyNodesForBendpoints=function(l){for(var E=[],T=l.source,D=this.graphManager.calcLowestCommonAncestor(l.source,l.target),L=0;L0){for(var D=this.edgeToDummyNodes.get(T),L=0;L=0&&E.splice(p,1);var A=N.getNeighborsList();A.forEach(function(x){if(T.indexOf(x)<0){var _=D.get(x),U=_-1;U==1&&h.push(x),D.set(x,U)}})}T=T.concat(h),(E.length==1||E.length==2)&&(L=!0,O=E[0])}return O},c.prototype.setGraphManager=function(l){this.graphManager=l},f.exports=c},function(f,m,y){function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=Math.sin(r.seed++)*1e4,r.x-Math.floor(r.x)},f.exports=r},function(f,m,y){var r=y(4);function t(e,i){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}t.prototype.getWorldOrgX=function(){return this.lworldOrgX},t.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},t.prototype.getWorldOrgY=function(){return this.lworldOrgY},t.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},t.prototype.getWorldExtX=function(){return this.lworldExtX},t.prototype.setWorldExtX=function(e){this.lworldExtX=e},t.prototype.getWorldExtY=function(){return this.lworldExtY},t.prototype.setWorldExtY=function(e){this.lworldExtY=e},t.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},t.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},t.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},t.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},t.prototype.getDeviceExtX=function(){return this.ldeviceExtX},t.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},t.prototype.getDeviceExtY=function(){return this.ldeviceExtY},t.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},t.prototype.transformX=function(e){var i=0,o=this.lworldExtX;return o!=0&&(i=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/o),i},t.prototype.transformY=function(e){var i=0,o=this.lworldExtY;return o!=0&&(i=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/o),i},t.prototype.inverseTransformX=function(e){var i=0,o=this.ldeviceExtX;return o!=0&&(i=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/o),i},t.prototype.inverseTransformY=function(e){var i=0,o=this.ldeviceExtY;return o!=0&&(i=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/o),i},t.prototype.inverseTransformPoint=function(e){var i=new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y));return i},f.exports=t},function(f,m,y){function r(n){if(Array.isArray(n)){for(var c=0,l=Array(n.length);ce.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*e.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(n-e.ADAPTATION_LOWER_NODE_LIMIT)/(e.ADAPTATION_UPPER_NODE_LIMIT-e.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-e.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=e.MAX_NODE_DISPLACEMENT_INCREMENTAL):(n>e.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(e.COOLING_ADAPTATION_FACTOR,1-(n-e.ADAPTATION_LOWER_NODE_LIMIT)/(e.ADAPTATION_UPPER_NODE_LIMIT-e.ADAPTATION_LOWER_NODE_LIMIT)*(1-e.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=e.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},a.prototype.calcSpringForces=function(){for(var n=this.getAllEdges(),c,l=0;l0&&arguments[0]!==void 0?arguments[0]:!0,c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,l,E,T,D,L=this.getAllNodes(),O;if(this.useFRGridVariant)for(this.totalIterations%e.GRID_CALCULATION_CHECK_PERIOD==1&&n&&this.updateGrid(),O=new Set,l=0;ld||O>d)&&(n.gravitationForceX=-this.gravityConstant*T,n.gravitationForceY=-this.gravityConstant*D)):(d=c.getEstimatedSize()*this.compoundGravityRangeFactor,(L>d||O>d)&&(n.gravitationForceX=-this.gravityConstant*T*this.compoundGravityConstant,n.gravitationForceY=-this.gravityConstant*D*this.compoundGravityConstant))},a.prototype.isConverged=function(){var n,c=!1;return this.totalIterations>this.maxIterations/3&&(c=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),n=this.totalDisplacement=L.length||d>=L[0].length)){for(var N=0;Na}}]),o}();f.exports=i},function(f,m,y){var r=function(){function i(o,g){for(var a=0;a2&&arguments[2]!==void 0?arguments[2]:1,v=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,n=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;t(this,i),this.sequence1=o,this.sequence2=g,this.match_score=a,this.mismatch_penalty=v,this.gap_penalty=n,this.iMax=o.length+1,this.jMax=g.length+1,this.grid=new Array(this.iMax);for(var c=0;c=0;o--){var g=this.listeners[o];g.event===e&&g.callback===i&&this.listeners.splice(o,1)}},t.emit=function(e,i){for(var o=0;og.coolingFactor*g.maxNodeDisplacement&&(this.displacementX=g.coolingFactor*g.maxNodeDisplacement*e.sign(this.displacementX)),Math.abs(this.displacementY)>g.coolingFactor*g.maxNodeDisplacement&&(this.displacementY=g.coolingFactor*g.maxNodeDisplacement*e.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),g.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},i.prototype.propogateDisplacementToChildren=function(g,a){for(var v=this.getChild().getNodes(),n,c=0;c0)this.positionNodesRadially(s);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var h=new Set(this.getAllNodes()),u=this.nodesWithGravity.filter(function(p){return h.has(p)});this.graphManager.setAllNodesToApplyGravitation(u),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},d.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%v.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(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 s=new Set(this.getAllNodes()),h=this.nodesWithGravity.filter(function(A){return s.has(A)});this.graphManager.setAllNodesToApplyGravitation(h),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=v.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=v.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var u=!this.isTreeGrowing&&!this.isGrowthFinished,p=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(u,p),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},d.prototype.getPositionsData=function(){for(var s=this.graphManager.getAllNodes(),h={},u=0;u1){var x;for(x=0;xp&&(p=Math.floor(R.y)),C=Math.floor(R.x+a.DEFAULT_COMPONENT_SEPERATION)}this.transform(new l(n.WORLD_CENTER_X-R.x/2,n.WORLD_CENTER_Y-R.y/2))},d.radialLayout=function(s,h,u){var p=Math.max(this.maxDiagonalInTree(s),a.DEFAULT_RADIAL_SEPARATION);d.branchRadialLayout(h,null,0,359,0,p);var A=L.calculateBounds(s),C=new O;C.setDeviceOrgX(A.getMinX()),C.setDeviceOrgY(A.getMinY()),C.setWorldOrgX(u.x),C.setWorldOrgY(u.y);for(var R=0;R1;){var H=k[0];k.splice(0,1);var P=M.indexOf(H);P>=0&&M.splice(P,1),b--,G--}h!=null?Y=(M.indexOf(k[0])+1)%b:Y=0;for(var B=Math.abs(p-u)/G,$=Y;F!=G;$=++$%b){var K=M[$].getOtherEnd(s);if(K!=h){var Q=(u+F*B)%360,J=(Q+B)%360;d.branchRadialLayout(K,s,Q,J,A+C,C),F++}}},d.maxDiagonalInTree=function(s){for(var h=T.MIN_VALUE,u=0;uh&&(h=A)}return h},d.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},d.prototype.groupZeroDegreeMembers=function(){var s=this,h={};this.memberGroups={},this.idToDummyNode={};for(var u=[],p=this.graphManager.getAllNodes(),A=0;A"u"&&(h[x]=[]),h[x]=h[x].concat(C)}Object.keys(h).forEach(function(_){if(h[_].length>1){var U="DummyCompound_"+_;s.memberGroups[U]=h[_];var X=h[_][0].getParent(),M=new o(s.graphManager);M.id=U,M.paddingLeft=X.paddingLeft||0,M.paddingRight=X.paddingRight||0,M.paddingBottom=X.paddingBottom||0,M.paddingTop=X.paddingTop||0,s.idToDummyNode[U]=M;var G=s.getGraphManager().add(s.newGraph(),M),F=X.getChild();F.add(M);for(var b=0;b=0;s--){var h=this.compoundOrder[s],u=h.id,p=h.paddingLeft,A=h.paddingTop;this.adjustLocations(this.tiledMemberPack[u],h.rect.x,h.rect.y,p,A)}},d.prototype.repopulateZeroDegreeMembers=function(){var s=this,h=this.tiledZeroDegreePack;Object.keys(h).forEach(function(u){var p=s.idToDummyNode[u],A=p.paddingLeft,C=p.paddingTop;s.adjustLocations(h[u],p.rect.x,p.rect.y,A,C)})},d.prototype.getToBeTiled=function(s){var h=s.id;if(this.toBeTiled[h]!=null)return this.toBeTiled[h];var u=s.getChild();if(u==null)return this.toBeTiled[h]=!1,!1;for(var p=u.getNodes(),A=0;A0)return this.toBeTiled[h]=!1,!1;if(C.getChild()==null){this.toBeTiled[C.id]=!1;continue}if(!this.getToBeTiled(C))return this.toBeTiled[h]=!1,!1}return this.toBeTiled[h]=!0,!0},d.prototype.getNodeDegree=function(s){s.id;for(var h=s.getEdges(),u=0,p=0;p_&&(_=X.rect.height)}u+=_+s.verticalPadding}},d.prototype.tileCompoundMembers=function(s,h){var u=this;this.tiledMemberPack=[],Object.keys(s).forEach(function(p){var A=h[p];u.tiledMemberPack[p]=u.tileNodes(s[p],A.paddingLeft+A.paddingRight),A.rect.width=u.tiledMemberPack[p].width,A.rect.height=u.tiledMemberPack[p].height})},d.prototype.tileNodes=function(s,h){var u=a.TILING_PADDING_VERTICAL,p=a.TILING_PADDING_HORIZONTAL,A={rows:[],rowWidth:[],rowHeight:[],width:0,height:h,verticalPadding:u,horizontalPadding:p};s.sort(function(x,_){return x.rect.width*x.rect.height>_.rect.width*_.rect.height?-1:x.rect.width*x.rect.height<_.rect.width*_.rect.height?1:0});for(var C=0;C0&&(R+=s.horizontalPadding),s.rowWidth[u]=R,s.width0&&(x+=s.verticalPadding);var _=0;x>s.rowHeight[u]&&(_=s.rowHeight[u],s.rowHeight[u]=x,_=s.rowHeight[u]-_),s.height+=_,s.rows[u].push(h)},d.prototype.getShortestRowIndex=function(s){for(var h=-1,u=Number.MAX_VALUE,p=0;pu&&(h=p,u=s.rowWidth[p]);return h},d.prototype.canAddHorizontal=function(s,h,u){var p=this.getShortestRowIndex(s);if(p<0)return!0;var A=s.rowWidth[p];if(A+s.horizontalPadding+h<=s.width)return!0;var C=0;s.rowHeight[p]0&&(C=u+s.verticalPadding-s.rowHeight[p]);var R;s.width-A>=h+s.horizontalPadding?R=(s.height+C)/(A+h+s.horizontalPadding):R=(s.height+C)/s.width,C=u+s.verticalPadding;var x;return s.widthC&&h!=u){p.splice(-1,1),s.rows[u].push(A),s.rowWidth[h]=s.rowWidth[h]-C,s.rowWidth[u]=s.rowWidth[u]+C,s.width=s.rowWidth[instance.getLongestRowIndex(s)];for(var R=Number.MIN_VALUE,x=0;xR&&(R=p[x].height);h>0&&(R+=s.verticalPadding);var _=s.rowHeight[h]+s.rowHeight[u];s.rowHeight[h]=R,s.rowHeight[u]0)for(var F=A;F<=C;F++)G[0]+=this.grid[F][R-1].length+this.grid[F][R].length-1;if(C0)for(var F=R;F<=x;F++)G[3]+=this.grid[A-1][F].length+this.grid[A][F].length-1;for(var b=T.MAX_VALUE,Y,k,H=0;H0){var x;x=O.getGraphManager().add(O.newGraph(),u),this.processChildrenList(x,h,O)}}},l.prototype.stop=function(){return this.stopped=!0,this};var T=function(L){L("layout","cose-bilkent",l)};typeof cytoscape<"u"&&T(cytoscape),m.exports=T}])})})(dt);var St=dt.exports;const Gt=Nt(St);var st=function(){var I=S(function(O,d,N,s){for(N=N||{},s=O.length;s--;N[O[s]]=d);return N},"o"),w=[1,4],f=[1,13],m=[1,12],y=[1,15],r=[1,16],t=[1,20],e=[1,19],i=[6,7,8],o=[1,26],g=[1,24],a=[1,25],v=[6,7,11],n=[1,6,13,15,16,19,22],c=[1,33],l=[1,34],E=[1,6,7,11,13,15,16,19,22],T={trace:S(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:S(function(d,N,s,h,u,p,A){var C=p.length-1;switch(u){case 6:case 7:return h;case 8:h.getLogger().trace("Stop NL ");break;case 9:h.getLogger().trace("Stop EOF ");break;case 11:h.getLogger().trace("Stop NL2 ");break;case 12:h.getLogger().trace("Stop EOF2 ");break;case 15:h.getLogger().info("Node: ",p[C].id),h.addNode(p[C-1].length,p[C].id,p[C].descr,p[C].type);break;case 16:h.getLogger().trace("Icon: ",p[C]),h.decorateNode({icon:p[C]});break;case 17:case 21:h.decorateNode({class:p[C]});break;case 18:h.getLogger().trace("SPACELIST");break;case 19:h.getLogger().trace("Node: ",p[C].id),h.addNode(0,p[C].id,p[C].descr,p[C].type);break;case 20:h.decorateNode({icon:p[C]});break;case 25:h.getLogger().trace("node found ..",p[C-2]),this.$={id:p[C-1],descr:p[C-1],type:h.getType(p[C-2],p[C])};break;case 26:this.$={id:p[C],descr:p[C],type:h.nodeType.DEFAULT};break;case 27:h.getLogger().trace("node found ..",p[C-3]),this.$={id:p[C-3],descr:p[C-1],type:h.getType(p[C-2],p[C])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:w},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:w},{6:f,7:[1,10],9:9,12:11,13:m,14:14,15:y,16:r,17:17,18:18,19:t,22:e},I(i,[2,3]),{1:[2,2]},I(i,[2,4]),I(i,[2,5]),{1:[2,6],6:f,12:21,13:m,14:14,15:y,16:r,17:17,18:18,19:t,22:e},{6:f,9:22,12:11,13:m,14:14,15:y,16:r,17:17,18:18,19:t,22:e},{6:o,7:g,10:23,11:a},I(v,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:t,22:e}),I(v,[2,18]),I(v,[2,19]),I(v,[2,20]),I(v,[2,21]),I(v,[2,23]),I(v,[2,24]),I(v,[2,26],{19:[1,30]}),{20:[1,31]},{6:o,7:g,10:32,11:a},{1:[2,7],6:f,12:21,13:m,14:14,15:y,16:r,17:17,18:18,19:t,22:e},I(n,[2,14],{7:c,11:l}),I(E,[2,8]),I(E,[2,9]),I(E,[2,10]),I(v,[2,15]),I(v,[2,16]),I(v,[2,17]),{20:[1,35]},{21:[1,36]},I(n,[2,13],{7:c,11:l}),I(E,[2,11]),I(E,[2,12]),{21:[1,37]},I(v,[2,25]),I(v,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:S(function(d,N){if(N.recoverable)this.trace(d);else{var s=new Error(d);throw s.hash=N,s}},"parseError"),parse:S(function(d){var N=this,s=[0],h=[],u=[null],p=[],A=this.table,C="",R=0,x=0,_=2,U=1,X=p.slice.call(arguments,1),M=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]);M.setInput(d,G.yy),G.yy.lexer=M,G.yy.parser=this,typeof M.yylloc>"u"&&(M.yylloc={});var b=M.yylloc;p.push(b);var Y=M.options&&M.options.ranges;typeof G.yy.parseError=="function"?this.parseError=G.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function k(V){s.length=s.length-2*V,u.length=u.length-V,p.length=p.length-V}S(k,"popStack");function H(){var V;return V=h.pop()||M.lex()||U,typeof V!="number"&&(V instanceof Array&&(h=V,V=h.pop()),V=N.symbols_[V]||V),V}S(H,"lex");for(var P,B,$,K,Q={},J,j,gt,q;;){if(B=s[s.length-1],this.defaultActions[B]?$=this.defaultActions[B]:((P===null||typeof P>"u")&&(P=H()),$=A[B]&&A[B][P]),typeof $>"u"||!$.length||!$[0]){var rt="";q=[];for(J in A[B])this.terminals_[J]&&J>_&&q.push("'"+this.terminals_[J]+"'");M.showPosition?rt="Parse error on line "+(R+1)+`: +`+M.showPosition()+` +Expecting `+q.join(", ")+", got '"+(this.terminals_[P]||P)+"'":rt="Parse error on line "+(R+1)+": Unexpected "+(P==U?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(rt,{text:M.match,token:this.terminals_[P]||P,line:M.yylineno,loc:b,expected:q})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+B+", token: "+P);switch($[0]){case 1:s.push(P),u.push(M.yytext),p.push(M.yylloc),s.push($[1]),P=null,x=M.yyleng,C=M.yytext,R=M.yylineno,b=M.yylloc;break;case 2:if(j=this.productions_[$[1]][1],Q.$=u[u.length-j],Q._$={first_line:p[p.length-(j||1)].first_line,last_line:p[p.length-1].last_line,first_column:p[p.length-(j||1)].first_column,last_column:p[p.length-1].last_column},Y&&(Q._$.range=[p[p.length-(j||1)].range[0],p[p.length-1].range[1]]),K=this.performAction.apply(Q,[C,x,R,G.yy,$[1],u,p].concat(X)),typeof K<"u")return K;j&&(s=s.slice(0,-1*j*2),u=u.slice(0,-1*j),p=p.slice(0,-1*j)),s.push(this.productions_[$[1]][0]),u.push(Q.$),p.push(Q._$),gt=A[s[s.length-2]][s[s.length-1]],s.push(gt);break;case 3:return!0}}return!0},"parse")},D=function(){var O={EOF:1,parseError:S(function(N,s){if(this.yy.parser)this.yy.parser.parseError(N,s);else throw new Error(N)},"parseError"),setInput:S(function(d,N){return this.yy=N||this.yy||{},this._input=d,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:S(function(){var d=this._input[0];this.yytext+=d,this.yyleng++,this.offset++,this.match+=d,this.matched+=d;var N=d.match(/(?:\r\n?|\n).*/g);return N?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),d},"input"),unput:S(function(d){var N=d.length,s=d.split(/(?:\r\n?|\n)/g);this._input=d+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-N),this.offset-=N;var h=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 u=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===h.length?this.yylloc.first_column:0)+h[h.length-s.length].length-s[0].length:this.yylloc.first_column-N},this.options.ranges&&(this.yylloc.range=[u[0],u[0]+this.yyleng-N]),this.yyleng=this.yytext.length,this},"unput"),more:S(function(){return this._more=!0,this},"more"),reject:S(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:S(function(d){this.unput(this.match.slice(d))},"less"),pastInput:S(function(){var d=this.matched.substr(0,this.matched.length-this.match.length);return(d.length>20?"...":"")+d.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:S(function(){var d=this.match;return d.length<20&&(d+=this._input.substr(0,20-d.length)),(d.substr(0,20)+(d.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:S(function(){var d=this.pastInput(),N=new Array(d.length+1).join("-");return d+this.upcomingInput()+` +`+N+"^"},"showPosition"),test_match:S(function(d,N){var s,h,u;if(this.options.backtrack_lexer&&(u={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&&(u.yylloc.range=this.yylloc.range.slice(0))),h=d[0].match(/(?:\r\n?|\n).*/g),h&&(this.yylineno+=h.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:h?h[h.length-1].length-h[h.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+d[0].length},this.yytext+=d[0],this.match+=d[0],this.matches=d,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(d[0].length),this.matched+=d[0],s=this.performAction.call(this,this.yy,this,N,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var p in u)this[p]=u[p];return!1}return!1},"test_match"),next:S(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var d,N,s,h;this._more||(this.yytext="",this.match="");for(var u=this._currentRules(),p=0;pN[0].length)){if(N=s,h=p,this.options.backtrack_lexer){if(d=this.test_match(s,u[p]),d!==!1)return d;if(this._backtrack){N=!1;continue}else return!1}else if(!this.options.flex)break}return N?(d=this.test_match(N,u[h]),d!==!1?d:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:S(function(){var N=this.next();return N||this.lex()},"lex"),begin:S(function(N){this.conditionStack.push(N)},"begin"),popState:S(function(){var N=this.conditionStack.length-1;return N>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:S(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:S(function(N){return N=this.conditionStack.length-1-Math.abs(N||0),N>=0?this.conditionStack[N]:"INITIAL"},"topState"),pushState:S(function(N){this.begin(N)},"pushState"),stateStackSize:S(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:S(function(N,s,h,u){switch(h){case 0:return N.getLogger().trace("Found comment",s.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:N.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return N.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:N.getLogger().trace("end icon"),this.popState();break;case 10:return N.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return N.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return N.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return N.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;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 23:this.popState();break;case 24:N.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return N.getLogger().trace("description:",s.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),N.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),N.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),N.getLogger().trace("node end ...",s.yytext),"NODE_DEND";case 30:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),N.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),N.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),N.getLogger().trace("node end (("),"NODE_DEND";case 35:return N.getLogger().trace("Long description:",s.yytext),20;case 36:return N.getLogger().trace("Long description:",s.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}}};return O}();T.lexer=D;function L(){this.yy={}}return S(L,"Parser"),L.prototype=T,T.Parser=L,new L}();st.parser=st;var _t=st,Z=[],vt=0,ht={},Ft=S(()=>{Z=[],vt=0,ht={}},"clear"),bt=S(function(I){for(let w=Z.length-1;w>=0;w--)if(Z[w].levelZ.length>0?Z[0]:null,"getMindmap"),Pt=S((I,w,f,m)=>{var i,o;z.info("addNode",I,w,f,m);const y=ot();let r=((i=y.mindmap)==null?void 0:i.padding)??tt.mindmap.padding;switch(m){case W.ROUNDED_RECT:case W.RECT:case W.HEXAGON:r*=2}const t={id:vt++,nodeId:et(w,y),level:I,descr:et(f,y),type:m,children:[],width:((o=y.mindmap)==null?void 0:o.maxNodeWidth)??tt.mindmap.maxNodeWidth,padding:r},e=bt(I);if(e)e.children.push(t),Z.push(t);else if(Z.length===0)Z.push(t);else throw new Error('There can be only one root. No parent could be found for ("'+t.descr+'")')},"addNode"),W={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},Yt=S((I,w)=>{switch(z.debug("In get type",I,w),I){case"[":return W.RECT;case"(":return w===")"?W.ROUNDED_RECT:W.CLOUD;case"((":return W.CIRCLE;case")":return W.CLOUD;case"))":return W.BANG;case"{{":return W.HEXAGON;default:return W.DEFAULT}},"getType"),Xt=S((I,w)=>{ht[I]=w},"setElementForId"),kt=S(I=>{if(!I)return;const w=ot(),f=Z[Z.length-1];I.icon&&(f.icon=et(I.icon,w)),I.class&&(f.class=et(I.class,w))},"decorateNode"),Ht=S(I=>{switch(I){case W.DEFAULT:return"no-border";case W.RECT:return"rect";case W.ROUNDED_RECT:return"rounded-rect";case W.CIRCLE:return"circle";case W.CLOUD:return"cloud";case W.BANG:return"bang";case W.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),$t=S(()=>z,"getLogger"),Wt=S(I=>ht[I],"getElementById"),Bt={clear:Ft,addNode:Pt,getMindmap:Ut,nodeType:W,getType:Yt,setElementForId:Xt,decorateNode:kt,type2Str:Ht,getLogger:$t,getElementById:Wt},Vt=Bt,Zt=12,Qt=S(function(I,w,f,m){w.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("d",`M0 ${f.height-5} v${-f.height+2*5} q0,-5 5,-5 h${f.width-2*5} q5,0 5,5 v${f.height-5} H0 Z`),w.append("line").attr("class","node-line-"+m).attr("x1",0).attr("y1",f.height).attr("x2",f.width).attr("y2",f.height)},"defaultBkg"),jt=S(function(I,w,f){w.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("height",f.height).attr("width",f.width)},"rectBkg"),zt=S(function(I,w,f){const m=f.width,y=f.height,r=.15*m,t=.25*m,e=.35*m,i=.2*m;w.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("d",`M0 0 a${r},${r} 0 0,1 ${m*.25},${-1*m*.1} + a${e},${e} 1 0,1 ${m*.4},${-1*m*.1} + a${t},${t} 1 0,1 ${m*.35},${1*m*.2} + + a${r},${r} 1 0,1 ${m*.15},${1*y*.35} + a${i},${i} 1 0,1 ${-1*m*.15},${1*y*.65} + + a${t},${r} 1 0,1 ${-1*m*.25},${m*.15} + a${e},${e} 1 0,1 ${-1*m*.5},0 + a${r},${r} 1 0,1 ${-1*m*.25},${-1*m*.15} + + a${r},${r} 1 0,1 ${-1*m*.1},${-1*y*.35} + a${i},${i} 1 0,1 ${m*.1},${-1*y*.65} + + H0 V0 Z`)},"cloudBkg"),Kt=S(function(I,w,f){const m=f.width,y=f.height,r=.15*m;w.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("d",`M0 0 a${r},${r} 1 0,0 ${m*.25},${-1*y*.1} + a${r},${r} 1 0,0 ${m*.25},0 + a${r},${r} 1 0,0 ${m*.25},0 + a${r},${r} 1 0,0 ${m*.25},${1*y*.1} + + a${r},${r} 1 0,0 ${m*.15},${1*y*.33} + a${r*.8},${r*.8} 1 0,0 0,${1*y*.34} + a${r},${r} 1 0,0 ${-1*m*.15},${1*y*.33} + + a${r},${r} 1 0,0 ${-1*m*.25},${y*.15} + a${r},${r} 1 0,0 ${-1*m*.25},0 + a${r},${r} 1 0,0 ${-1*m*.25},0 + a${r},${r} 1 0,0 ${-1*m*.25},${-1*y*.15} + + a${r},${r} 1 0,0 ${-1*m*.1},${-1*y*.33} + a${r*.8},${r*.8} 1 0,0 0,${-1*y*.34} + a${r},${r} 1 0,0 ${m*.1},${-1*y*.33} + + H0 V0 Z`)},"bangBkg"),Jt=S(function(I,w,f){w.append("circle").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("r",f.width/2)},"circleBkg");function yt(I,w,f,m,y){return I.insert("polygon",":first-child").attr("points",m.map(function(r){return r.x+","+r.y}).join(" ")).attr("transform","translate("+(y.width-w)/2+", "+f+")")}S(yt,"insertPolygonShape");var qt=S(function(I,w,f){const m=f.height,r=m/4,t=f.width-f.padding+2*r,e=[{x:r,y:0},{x:t-r,y:0},{x:t,y:-m/2},{x:t-r,y:-m},{x:r,y:-m},{x:0,y:-m/2}];yt(w,t,m,e,f)},"hexagonBkg"),te=S(function(I,w,f){w.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+I.type2Str(f.type)).attr("height",f.height).attr("rx",f.padding).attr("ry",f.padding).attr("width",f.width)},"roundedRectBkg"),ee=S(async function(I,w,f,m,y){const r=y.htmlLabels,t=m%(Zt-1),e=w.append("g");f.section=t;let i="section-"+t;t<0&&(i+=" section-root"),e.attr("class",(f.class?f.class+" ":"")+"mindmap-node "+i);const o=e.append("g"),g=e.append("g"),a=f.descr.replace(/()/g,` +`);await mt(g,a,{useHtmlLabels:r,width:f.width,classes:"mindmap-node-label"},y),r||g.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const v=g.node().getBBox(),[n]=Ot(y.fontSize);if(f.height=v.height+n*1.1*.5+f.padding,f.width=v.width+2*f.padding,f.icon)if(f.type===I.nodeType.CIRCLE)f.height+=50,f.width+=50,e.append("foreignObject").attr("height","50px").attr("width",f.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+t+" "+f.icon),g.attr("transform","translate("+f.width/2+", "+(f.height/2-1.5*f.padding)+")");else{f.width+=50;const c=f.height;f.height=Math.max(c,60);const l=Math.abs(f.height-c);e.append("foreignObject").attr("width","60px").attr("height",f.height).attr("style","text-align: center;margin-top:"+l/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+t+" "+f.icon),g.attr("transform","translate("+(25+f.width/2)+", "+(l/2+f.padding/2)+")")}else if(r){const c=(f.width-v.width)/2,l=(f.height-v.height)/2;g.attr("transform","translate("+c+", "+l+")")}else{const c=f.width/2,l=f.padding/2;g.attr("transform","translate("+c+", "+l+")")}switch(f.type){case I.nodeType.DEFAULT:Qt(I,o,f,t);break;case I.nodeType.ROUNDED_RECT:te(I,o,f,t);break;case I.nodeType.RECT:jt(I,o,f,t);break;case I.nodeType.CIRCLE:o.attr("transform","translate("+f.width/2+", "+ +f.height/2+")"),Jt(I,o,f,t);break;case I.nodeType.CLOUD:zt(I,o,f,t);break;case I.nodeType.BANG:Kt(I,o,f,t);break;case I.nodeType.HEXAGON:qt(I,o,f,t);break}return I.setElementForId(f.id,e),f.height},"drawNode"),re=S(function(I,w){const f=I.getElementById(w.id),m=w.x||0,y=w.y||0;f.attr("transform","translate("+m+","+y+")")},"positionNode");pt.use(Gt);async function lt(I,w,f,m,y){await ee(I,w,f,m,y),f.children&&await Promise.all(f.children.map((r,t)=>lt(I,w,r,m<0?t:m,y)))}S(lt,"drawNodes");function Et(I,w){w.edges().map((f,m)=>{const y=f.data();if(f[0]._private.bodyBounds){const r=f[0]._private.rscratch;z.trace("Edge: ",m,y),I.insert("path").attr("d",`M ${r.startX},${r.startY} L ${r.midX},${r.midY} L${r.endX},${r.endY} `).attr("class","edge section-edge-"+y.section+" edge-depth-"+y.depth)}})}S(Et,"drawEdges");function ct(I,w,f,m){w.add({group:"nodes",data:{id:I.id.toString(),labelText:I.descr,height:I.height,width:I.width,level:m,nodeId:I.id,padding:I.padding,type:I.type},position:{x:I.x,y:I.y}}),I.children&&I.children.forEach(y=>{ct(y,w,f,m+1),w.add({group:"edges",data:{id:`${I.id}_${y.id}`,source:I.id,target:y.id,depth:m,section:y.section}})})}S(ct,"addNodes");function Lt(I,w){return new Promise(f=>{const m=Dt("body").append("div").attr("id","cy").attr("style","display:none"),y=pt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});m.remove(),ct(I,y,w,0),y.nodes().forEach(function(r){r.layoutDimensions=()=>{const t=r.data();return{w:t.width,h:t.height}}}),y.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),y.ready(r=>{z.info("Ready",r),f(y)})})}S(Lt,"layoutMindmap");function Tt(I,w){w.nodes().map((f,m)=>{const y=f.data();y.x=f.position().x,y.y=f.position().y,re(I,y);const r=I.getElementById(y.nodeId);z.info("Id:",m,"Position: (",f.position().x,", ",f.position().y,")",y),r.attr("transform",`translate(${f.position().x-y.width/2}, ${f.position().y-y.height/2})`),r.attr("attr",`apa-${m})`)})}S(Tt,"positionNodes");var ie=S(async(I,w,f,m)=>{var a,v;z.debug(`Rendering mindmap diagram +`+I);const y=m.db,r=y.getMindmap();if(!r)return;const t=ot();t.htmlLabels=!1;const e=At(w),i=e.append("g");i.attr("class","mindmap-edges");const o=e.append("g");o.attr("class","mindmap-nodes"),await lt(y,o,r,-1,t);const g=await Lt(r,t);Et(i,g),Tt(y,g),It(void 0,e,((a=t.mindmap)==null?void 0:a.padding)??tt.mindmap.padding,((v=t.mindmap)==null?void 0:v.useMaxWidth)??tt.mindmap.useMaxWidth)},"draw"),ne={draw:ie},se=S(I=>{let w="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${se(I)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${I.git0}; + } + .section-root text { + fill: ${I.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`,"getStyles"),oe=ae,ue={db:Vt,renderer:ne,parser:_t,styles:oe};export{ue as diagram}; diff --git a/assets/chunks/ordinal.BYWQX77i.js b/assets/chunks/ordinal.BYWQX77i.js new file mode 100644 index 00000000..1f7977b7 --- /dev/null +++ b/assets/chunks/ordinal.BYWQX77i.js @@ -0,0 +1 @@ +import{i as a}from"./init.Gi6I4Gst.js";class o extends Map{constructor(n,t=g){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),n!=null)for(const[r,s]of n)this.set(r,s)}get(n){return super.get(c(this,n))}has(n){return super.has(c(this,n))}set(n,t){return super.set(l(this,n),t)}delete(n){return super.delete(p(this,n))}}function c({_intern:e,_key:n},t){const r=n(t);return e.has(r)?e.get(r):t}function l({_intern:e,_key:n},t){const r=n(t);return e.has(r)?e.get(r):(e.set(r,t),t)}function p({_intern:e,_key:n},t){const r=n(t);return e.has(r)&&(t=e.get(r),e.delete(r)),t}function g(e){return e!==null&&typeof e=="object"?e.valueOf():e}const f=Symbol("implicit");function h(){var e=new o,n=[],t=[],r=f;function s(u){let i=e.get(u);if(i===void 0){if(r!==f)return r;e.set(u,i=n.push(u)-1)}return t[i%t.length]}return s.domain=function(u){if(!arguments.length)return n.slice();n=[],e=new o;for(const i of u)e.has(i)||e.set(i,n.push(i)-1);return s},s.range=function(u){return arguments.length?(t=Array.from(u),s):t.slice()},s.unknown=function(u){return arguments.length?(r=u,s):r},s.copy=function(){return h(n,t).unknown(r)},a.apply(s,arguments),s}export{h as o}; diff --git a/assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js b/assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js new file mode 100644 index 00000000..869c83c2 --- /dev/null +++ b/assets/chunks/pieDiagram-YF2LJOPJ.CW9MmEzE.js @@ -0,0 +1,30 @@ +import{p as U}from"./chunk-TMUBEWPD.CkIL-JDd.js";import{X as x,O as z,aF as j,D as q,q as X,r as Z,s as H,g as J,c as K,b as Q,_ as p,l as F,x as Y,d as tt,E as et,I as at,a5 as rt,k as nt}from"../app.BCWCbnje.js";import{p as it}from"./gitGraph-YCYPL57B.CPbwsOso.js";import{d as N}from"./arc.D0VzCNCr.js";import{o as st}from"./ordinal.BYWQX77i.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";import"./clone.BdpAoxvF.js";import"./init.Gi6I4Gst.js";function ot(t,a){return at?1:a>=t?0:NaN}function lt(t){return t}function ct(){var t=lt,a=ot,m=null,o=x(0),g=x(z),y=x(0);function i(e){var r,l=(e=j(e)).length,c,A,h=0,u=new Array(l),n=new Array(l),v=+o.apply(this,arguments),w=Math.min(z,Math.max(-z,g.apply(this,arguments)-v)),f,T=Math.min(Math.abs(w)/l,y.apply(this,arguments)),$=T*(w<0?-1:1),d;for(r=0;r0&&(h+=d);for(a!=null?u.sort(function(S,D){return a(n[S],n[D])}):m!=null&&u.sort(function(S,D){return m(e[S],e[D])}),r=0,A=h?(w-l*$)/h:0;r0?d*A:0)+$,n[c]={data:e[c],index:r,value:d,startAngle:v,endAngle:f,padAngle:T};return n}return i.value=function(e){return arguments.length?(t=typeof e=="function"?e:x(+e),i):t},i.sortValues=function(e){return arguments.length?(a=e,m=null,i):a},i.sort=function(e){return arguments.length?(m=e,a=null,i):m},i.startAngle=function(e){return arguments.length?(o=typeof e=="function"?e:x(+e),i):o},i.endAngle=function(e){return arguments.length?(g=typeof e=="function"?e:x(+e),i):g},i.padAngle=function(e){return arguments.length?(y=typeof e=="function"?e:x(+e),i):y},i}var P=q.pie,G={sections:new Map,showData:!1,config:P},b=G.sections,O=G.showData,ut=structuredClone(P),pt=p(()=>structuredClone(ut),"getConfig"),gt=p(()=>{b=new Map,O=G.showData,Y()},"clear"),dt=p(({label:t,value:a})=>{b.has(t)||(b.set(t,a),F.debug(`added new section: ${t}, with value: ${a}`))},"addSection"),ft=p(()=>b,"getSections"),mt=p(t=>{O=t},"setShowData"),ht=p(()=>O,"getShowData"),R={getConfig:pt,clear:gt,setDiagramTitle:X,getDiagramTitle:Z,setAccTitle:H,getAccTitle:J,setAccDescription:K,getAccDescription:Q,addSection:dt,getSections:ft,setShowData:mt,getShowData:ht},vt=p((t,a)=>{U(t,a),a.setShowData(t.showData),t.sections.map(a.addSection)},"populateDb"),St={parse:p(async t=>{const a=await it("pie",t);F.debug(a),vt(a,R)},"parse")},xt=p(t=>` + .pieCircle{ + stroke: ${t.pieStrokeColor}; + stroke-width : ${t.pieStrokeWidth}; + opacity : ${t.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${t.pieOuterStrokeColor}; + stroke-width: ${t.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${t.pieTitleTextSize}; + fill: ${t.pieTitleTextColor}; + font-family: ${t.fontFamily}; + } + .slice { + font-family: ${t.fontFamily}; + fill: ${t.pieSectionTextColor}; + font-size:${t.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${t.pieLegendTextColor}; + font-family: ${t.fontFamily}; + font-size: ${t.pieLegendTextSize}; + } +`,"getStyles"),yt=xt,At=p(t=>{const a=[...t.entries()].map(o=>({label:o[0],value:o[1]})).sort((o,g)=>g.value-o.value);return ct().value(o=>o.value)(a)},"createPieArcs"),wt=p((t,a,m,o)=>{F.debug(`rendering pie chart +`+t);const g=o.db,y=tt(),i=et(g.getConfig(),y.pie),e=40,r=18,l=4,c=450,A=c,h=at(a),u=h.append("g");u.attr("transform","translate("+A/2+","+c/2+")");const{themeVariables:n}=y;let[v]=rt(n.pieOuterStrokeWidth);v??(v=2);const w=i.textPosition,f=Math.min(A,c)/2-e,T=N().innerRadius(0).outerRadius(f),$=N().innerRadius(f*w).outerRadius(f*w);u.append("circle").attr("cx",0).attr("cy",0).attr("r",f+v/2).attr("class","pieOuterCircle");const d=g.getSections(),S=At(d),D=[n.pie1,n.pie2,n.pie3,n.pie4,n.pie5,n.pie6,n.pie7,n.pie8,n.pie9,n.pie10,n.pie11,n.pie12],C=st(D);u.selectAll("mySlices").data(S).enter().append("path").attr("d",T).attr("fill",s=>C(s.data.label)).attr("class","pieCircle");let W=0;d.forEach(s=>{W+=s}),u.selectAll("mySlices").data(S).enter().append("text").text(s=>(s.data.value/W*100).toFixed(0)+"%").attr("transform",s=>"translate("+$.centroid(s)+")").style("text-anchor","middle").attr("class","slice"),u.append("text").text(g.getDiagramTitle()).attr("x",0).attr("y",-(c-50)/2).attr("class","pieTitleText");const M=u.selectAll(".legend").data(C.domain()).enter().append("g").attr("class","legend").attr("transform",(s,k)=>{const E=r+l,_=E*C.domain().length/2,B=12*r,V=k*E-_;return"translate("+B+","+V+")"});M.append("rect").attr("width",r).attr("height",r).style("fill",C).style("stroke",C),M.data(S).append("text").attr("x",r+l).attr("y",r-l).text(s=>{const{label:k,value:E}=s.data;return g.getShowData()?`${k} [${E}]`:k});const L=Math.max(...M.selectAll("text").nodes().map(s=>(s==null?void 0:s.getBoundingClientRect().width)??0)),I=A+e+r+l+L;h.attr("viewBox",`0 0 ${I} ${c}`),nt(h,c,I,i.useMaxWidth)},"draw"),Dt={draw:wt},Wt={parser:St,db:R,renderer:Dt,styles:yt};export{Wt as diagram}; diff --git a/assets/chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js b/assets/chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js new file mode 100644 index 00000000..0486e889 --- /dev/null +++ b/assets/chunks/quadrantDiagram-OS5C2QUG.D9uzsfCB.js @@ -0,0 +1,7 @@ +import{_ as o,a0 as _e,D,l as At,d as wt,i as Ae,r as ie,s as ke,g as Fe,q as Pe,b as ve,c as Ce,x as Le,j as zt,k as Ee}from"../app.BCWCbnje.js";import{l as ee}from"./linear.D-_N5yV4.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./init.Gi6I4Gst.js";var Vt=function(){var t=o(function(j,r,l,g){for(l=l||{},g=j.length;g--;l[j[g]]=r);return l},"o"),n=[1,3],u=[1,4],c=[1,5],h=[1,6],p=[1,7],y=[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],S=[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],a=[55,56,57],A=[2,36],d=[1,37],T=[1,36],q=[1,38],m=[1,35],b=[1,43],x=[1,41],O=[1,14],Y=[1,23],G=[1,18],yt=[1,19],Tt=[1,20],dt=[1,21],Ft=[1,22],ut=[1,24],xt=[1,25],ft=[1,26],gt=[1,27],i=[1,28],Bt=[1,29],W=[1,32],U=[1,33],k=[1,34],F=[1,39],P=[1,40],v=[1,42],C=[1,44],H=[1,62],X=[1,61],L=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],Rt=[1,65],Nt=[1,66],Wt=[1,67],Ut=[1,68],Qt=[1,69],Ot=[1,70],Ht=[1,71],Xt=[1,72],Mt=[1,73],Yt=[1,74],jt=[1,75],Gt=[1,76],I=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],$=[1,91],tt=[1,92],et=[1,99],it=[1,93],at=[1,96],nt=[1,94],st=[1,95],rt=[1,97],ot=[1,98],Pt=[1,102],Kt=[10,55,56,57],R=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],vt={trace:o(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:o(function(r,l,g,f,_,e,pt){var s=e.length-1;switch(_){case 23:this.$=e[s];break;case 24:this.$=e[s-1]+""+e[s];break;case 26:this.$=e[s-1]+e[s];break;case 27:this.$=[e[s].trim()];break;case 28:e[s-2].push(e[s].trim()),this.$=e[s-2];break;case 29:this.$=e[s-4],f.addClass(e[s-2],e[s]);break;case 37:this.$=[];break;case 42:this.$=e[s].trim(),f.setDiagramTitle(this.$);break;case 43:this.$=e[s].trim(),f.setAccTitle(this.$);break;case 44:case 45:this.$=e[s].trim(),f.setAccDescription(this.$);break;case 46:f.addSection(e[s].substr(8)),this.$=e[s].substr(8);break;case 47:f.addPoint(e[s-3],"",e[s-1],e[s],[]);break;case 48:f.addPoint(e[s-4],e[s-3],e[s-1],e[s],[]);break;case 49:f.addPoint(e[s-4],"",e[s-2],e[s-1],e[s]);break;case 50:f.addPoint(e[s-5],e[s-4],e[s-2],e[s-1],e[s]);break;case 51:f.setXAxisLeftText(e[s-2]),f.setXAxisRightText(e[s]);break;case 52:e[s-1].text+=" ⟶ ",f.setXAxisLeftText(e[s-1]);break;case 53:f.setXAxisLeftText(e[s]);break;case 54:f.setYAxisBottomText(e[s-2]),f.setYAxisTopText(e[s]);break;case 55:e[s-1].text+=" ⟶ ",f.setYAxisBottomText(e[s-1]);break;case 56:f.setYAxisBottomText(e[s]);break;case 57:f.setQuadrant1Text(e[s]);break;case 58:f.setQuadrant2Text(e[s]);break;case 59:f.setQuadrant3Text(e[s]);break;case 60:f.setQuadrant4Text(e[s]);break;case 64:this.$={text:e[s],type:"text"};break;case 65:this.$={text:e[s-1].text+""+e[s],type:e[s-1].type};break;case 66:this.$={text:e[s],type:"text"};break;case 67:this.$={text:e[s],type:"markdown"};break;case 68:this.$=e[s];break;case 69:this.$=e[s-1]+""+e[s];break}},"anonymous"),table:[{18:n,26:1,27:2,28:u,55:c,56:h,57:p},{1:[3]},{18:n,26:8,27:2,28:u,55:c,56:h,57:p},{18:n,26:9,27:2,28:u,55:c,56:h,57:p},t(y,[2,33],{29:10}),t(S,[2,61]),t(S,[2,62]),t(S,[2,63]),{1:[2,30]},{1:[2,31]},t(a,A,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:T,10:q,12:m,13:b,14:x,18:O,25:Y,35:G,37:yt,39:Tt,41:dt,42:Ft,48:ut,50:xt,51:ft,52:gt,53:i,54:Bt,60:W,61:U,63:k,64:F,65:P,66:v,67:C}),t(y,[2,34]),{27:45,55:c,56:h,57:p},t(a,[2,37]),t(a,A,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:d,5:T,10:q,12:m,13:b,14:x,18:O,25:Y,35:G,37:yt,39:Tt,41:dt,42:Ft,48:ut,50:xt,51:ft,52:gt,53:i,54:Bt,60:W,61:U,63:k,64:F,65:P,66:v,67:C}),t(a,[2,39]),t(a,[2,40]),t(a,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(a,[2,45]),t(a,[2,46]),{18:[1,50]},{4:d,5:T,10:q,12:m,13:b,14:x,43:51,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,10:q,12:m,13:b,14:x,43:52,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,10:q,12:m,13:b,14:x,43:53,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,10:q,12:m,13:b,14:x,43:54,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,10:q,12:m,13:b,14:x,43:55,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,10:q,12:m,13:b,14:x,43:56,58:31,60:W,61:U,63:k,64:F,65:P,66:v,67:C},{4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,44:[1,57],47:[1,58],58:60,59:59,63:k,64:F,65:P,66:v,67:C},t(L,[2,64]),t(L,[2,66]),t(L,[2,67]),t(L,[2,70]),t(L,[2,71]),t(L,[2,72]),t(L,[2,73]),t(L,[2,74]),t(L,[2,75]),t(L,[2,76]),t(L,[2,77]),t(L,[2,78]),t(L,[2,79]),t(L,[2,80]),t(y,[2,35]),t(a,[2,38]),t(a,[2,42]),t(a,[2,43]),t(a,[2,44]),{3:64,4:Rt,5:Nt,6:Wt,7:Ut,8:Qt,9:Ot,10:Ht,11:Xt,12:Mt,13:Yt,14:jt,15:Gt,21:63},t(a,[2,53],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,49:[1,77],63:k,64:F,65:P,66:v,67:C}),t(a,[2,56],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,49:[1,78],63:k,64:F,65:P,66:v,67:C}),t(a,[2,57],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),t(a,[2,58],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),t(a,[2,59],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),t(a,[2,60],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),{45:[1,79]},{44:[1,80]},t(L,[2,65]),t(L,[2,81]),t(L,[2,82]),t(L,[2,83]),{3:82,4:Rt,5:Nt,6:Wt,7:Ut,8:Qt,9:Ot,10:Ht,11:Xt,12:Mt,13:Yt,14:jt,15:Gt,18:[1,81]},t(I,[2,23]),t(I,[2,1]),t(I,[2,2]),t(I,[2,3]),t(I,[2,4]),t(I,[2,5]),t(I,[2,6]),t(I,[2,7]),t(I,[2,8]),t(I,[2,9]),t(I,[2,10]),t(I,[2,11]),t(I,[2,12]),t(a,[2,52],{58:31,43:83,4:d,5:T,10:q,12:m,13:b,14:x,60:W,61:U,63:k,64:F,65:P,66:v,67:C}),t(a,[2,55],{58:31,43:84,4:d,5:T,10:q,12:m,13:b,14:x,60:W,61:U,63:k,64:F,65:P,66:v,67:C}),{46:[1,85]},{45:[1,86]},{4:J,5:$,6:tt,8:et,11:it,13:at,16:89,17:nt,18:st,19:rt,20:ot,22:88,23:87},t(I,[2,24]),t(a,[2,51],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),t(a,[2,54],{59:59,58:60,4:d,5:T,8:H,10:q,12:m,13:b,14:x,18:X,63:k,64:F,65:P,66:v,67:C}),t(a,[2,47],{22:88,16:89,23:100,4:J,5:$,6:tt,8:et,11:it,13:at,17:nt,18:st,19:rt,20:ot}),{46:[1,101]},t(a,[2,29],{10:Pt}),t(Kt,[2,27],{16:103,4:J,5:$,6:tt,8:et,11:it,13:at,17:nt,18:st,19:rt,20:ot}),t(R,[2,25]),t(R,[2,13]),t(R,[2,14]),t(R,[2,15]),t(R,[2,16]),t(R,[2,17]),t(R,[2,18]),t(R,[2,19]),t(R,[2,20]),t(R,[2,21]),t(R,[2,22]),t(a,[2,49],{10:Pt}),t(a,[2,48],{22:88,16:89,23:104,4:J,5:$,6:tt,8:et,11:it,13:at,17:nt,18:st,19:rt,20:ot}),{4:J,5:$,6:tt,8:et,11:it,13:at,16:89,17:nt,18:st,19:rt,20:ot,22:105},t(R,[2,26]),t(a,[2,50],{10:Pt}),t(Kt,[2,28],{16:103,4:J,5:$,6:tt,8:et,11:it,13:at,17:nt,18:st,19:rt,20:ot})],defaultActions:{8:[2,30],9:[2,31]},parseError:o(function(r,l){if(l.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=l,g}},"parseError"),parse:o(function(r){var l=this,g=[0],f=[],_=[null],e=[],pt=this.table,s="",mt=0,Zt=0,qe=2,Jt=1,me=e.slice.call(arguments,1),E=Object.create(this.lexer),K={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(K.yy[Ct]=this.yy[Ct]);E.setInput(r,K.yy),K.yy.lexer=E,K.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var Lt=E.yylloc;e.push(Lt);var be=E.options&&E.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Se(B){g.length=g.length-2*B,_.length=_.length-B,e.length=e.length-B}o(Se,"popStack");function $t(){var B;return B=f.pop()||E.lex()||Jt,typeof B!="number"&&(B instanceof Array&&(f=B,B=f.pop()),B=l.symbols_[B]||B),B}o($t,"lex");for(var w,Z,N,Et,lt={},bt,M,te,St;;){if(Z=g[g.length-1],this.defaultActions[Z]?N=this.defaultActions[Z]:((w===null||typeof w>"u")&&(w=$t()),N=pt[Z]&&pt[Z][w]),typeof N>"u"||!N.length||!N[0]){var Dt="";St=[];for(bt in pt[Z])this.terminals_[bt]&&bt>qe&&St.push("'"+this.terminals_[bt]+"'");E.showPosition?Dt="Parse error on line "+(mt+1)+`: +`+E.showPosition()+` +Expecting `+St.join(", ")+", got '"+(this.terminals_[w]||w)+"'":Dt="Parse error on line "+(mt+1)+": Unexpected "+(w==Jt?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(Dt,{text:E.match,token:this.terminals_[w]||w,line:E.yylineno,loc:Lt,expected:St})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+w);switch(N[0]){case 1:g.push(w),_.push(E.yytext),e.push(E.yylloc),g.push(N[1]),w=null,Zt=E.yyleng,s=E.yytext,mt=E.yylineno,Lt=E.yylloc;break;case 2:if(M=this.productions_[N[1]][1],lt.$=_[_.length-M],lt._$={first_line:e[e.length-(M||1)].first_line,last_line:e[e.length-1].last_line,first_column:e[e.length-(M||1)].first_column,last_column:e[e.length-1].last_column},be&&(lt._$.range=[e[e.length-(M||1)].range[0],e[e.length-1].range[1]]),Et=this.performAction.apply(lt,[s,Zt,mt,K.yy,N[1],_,e].concat(me)),typeof Et<"u")return Et;M&&(g=g.slice(0,-1*M*2),_=_.slice(0,-1*M),e=e.slice(0,-1*M)),g.push(this.productions_[N[1]][0]),_.push(lt.$),e.push(lt._$),te=pt[g[g.length-2]][g[g.length-1]],g.push(te);break;case 3:return!0}}return!0},"parse")},Te=function(){var j={EOF:1,parseError:o(function(l,g){if(this.yy.parser)this.yy.parser.parseError(l,g);else throw new Error(l)},"parseError"),setInput:o(function(r,l){return this.yy=l||this.yy||{},this._input=r,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:o(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var l=r.match(/(?:\r\n?|\n).*/g);return l?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:o(function(r){var l=r.length,g=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-l),this.offset-=l;var f=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),g.length-1&&(this.yylineno-=g.length-1);var _=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:g?(g.length===f.length?this.yylloc.first_column:0)+f[f.length-g.length].length-g[0].length:this.yylloc.first_column-l},this.options.ranges&&(this.yylloc.range=[_[0],_[0]+this.yyleng-l]),this.yyleng=this.yytext.length,this},"unput"),more:o(function(){return this._more=!0,this},"more"),reject:o(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:o(function(r){this.unput(this.match.slice(r))},"less"),pastInput:o(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:o(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:o(function(){var r=this.pastInput(),l=new Array(r.length+1).join("-");return r+this.upcomingInput()+` +`+l+"^"},"showPosition"),test_match:o(function(r,l){var g,f,_;if(this.options.backtrack_lexer&&(_={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&&(_.yylloc.range=this.yylloc.range.slice(0))),f=r[0].match(/(?:\r\n?|\n).*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+r[0].length},this.yytext+=r[0],this.match+=r[0],this.matches=r,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(r[0].length),this.matched+=r[0],g=this.performAction.call(this,this.yy,this,l,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var e in _)this[e]=_[e];return!1}return!1},"test_match"),next:o(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var r,l,g,f;this._more||(this.yytext="",this.match="");for(var _=this._currentRules(),e=0;e<_.length;e++)if(g=this._input.match(this.rules[_[e]]),g&&(!l||g[0].length>l[0].length)){if(l=g,f=e,this.options.backtrack_lexer){if(r=this.test_match(g,_[e]),r!==!1)return r;if(this._backtrack){l=!1;continue}else return!1}else if(!this.options.flex)break}return l?(r=this.test_match(l,_[f]),r!==!1?r:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:o(function(){var l=this.next();return l||this.lex()},"lex"),begin:o(function(l){this.conditionStack.push(l)},"begin"),popState:o(function(){var l=this.conditionStack.length-1;return l>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:o(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:o(function(l){return l=this.conditionStack.length-1-Math.abs(l||0),l>=0?this.conditionStack[l]:"INITIAL"},"topState"),pushState:o(function(l){this.begin(l)},"pushState"),stateStackSize:o(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:o(function(l,g,f,_){switch(f){case 0:break;case 1:break;case 2:return 55;case 3:break;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: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 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();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 31:this.popState();break;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:return 65;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}}};return j}();vt.lexer=Te;function qt(){this.yy={}}return o(qt,"Parser"),qt.prototype=vt,vt.Parser=qt,new qt}();Vt.parser=Vt;var De=Vt,V=_e(),ht,ze=(ht=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var n,u,c,h,p,y,S,a,A,d,T,q,m,b,x,O,Y,G;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:((n=D.quadrantChart)==null?void 0:n.chartWidth)||500,chartWidth:((u=D.quadrantChart)==null?void 0:u.chartHeight)||500,titlePadding:((c=D.quadrantChart)==null?void 0:c.titlePadding)||10,titleFontSize:((h=D.quadrantChart)==null?void 0:h.titleFontSize)||20,quadrantPadding:((p=D.quadrantChart)==null?void 0:p.quadrantPadding)||5,xAxisLabelPadding:((y=D.quadrantChart)==null?void 0:y.xAxisLabelPadding)||5,yAxisLabelPadding:((S=D.quadrantChart)==null?void 0:S.yAxisLabelPadding)||5,xAxisLabelFontSize:((a=D.quadrantChart)==null?void 0:a.xAxisLabelFontSize)||16,yAxisLabelFontSize:((A=D.quadrantChart)==null?void 0:A.yAxisLabelFontSize)||16,quadrantLabelFontSize:((d=D.quadrantChart)==null?void 0:d.quadrantLabelFontSize)||16,quadrantTextTopPadding:((T=D.quadrantChart)==null?void 0:T.quadrantTextTopPadding)||5,pointTextPadding:((q=D.quadrantChart)==null?void 0:q.pointTextPadding)||5,pointLabelFontSize:((m=D.quadrantChart)==null?void 0:m.pointLabelFontSize)||12,pointRadius:((b=D.quadrantChart)==null?void 0:b.pointRadius)||5,xAxisPosition:((x=D.quadrantChart)==null?void 0:x.xAxisPosition)||"top",yAxisPosition:((O=D.quadrantChart)==null?void 0:O.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:((Y=D.quadrantChart)==null?void 0:Y.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:((G=D.quadrantChart)==null?void 0:G.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:V.quadrant1Fill,quadrant2Fill:V.quadrant2Fill,quadrant3Fill:V.quadrant3Fill,quadrant4Fill:V.quadrant4Fill,quadrant1TextFill:V.quadrant1TextFill,quadrant2TextFill:V.quadrant2TextFill,quadrant3TextFill:V.quadrant3TextFill,quadrant4TextFill:V.quadrant4TextFill,quadrantPointFill:V.quadrantPointFill,quadrantPointTextFill:V.quadrantPointTextFill,quadrantXAxisTextFill:V.quadrantXAxisTextFill,quadrantYAxisTextFill:V.quadrantYAxisTextFill,quadrantTitleFill:V.quadrantTitleFill,quadrantInternalBorderStrokeFill:V.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:V.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,At.info("clear called")}setData(n){this.data={...this.data,...n}}addPoints(n){this.data.points=[...n,...this.data.points]}addClass(n,u){this.classes.set(n,u)}setConfig(n){At.trace("setConfig called with: ",n),this.config={...this.config,...n}}setThemeConfig(n){At.trace("setThemeConfig called with: ",n),this.themeConfig={...this.themeConfig,...n}}calculateSpace(n,u,c,h){const p=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,y={top:n==="top"&&u?p:0,bottom:n==="bottom"&&u?p:0},S=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,a={left:this.config.yAxisPosition==="left"&&c?S:0,right:this.config.yAxisPosition==="right"&&c?S:0},A=this.config.titleFontSize+this.config.titlePadding*2,d={top:h?A:0},T=this.config.quadrantPadding+a.left,q=this.config.quadrantPadding+y.top+d.top,m=this.config.chartWidth-this.config.quadrantPadding*2-a.left-a.right,b=this.config.chartHeight-this.config.quadrantPadding*2-y.top-y.bottom-d.top,x=m/2,O=b/2;return{xAxisSpace:y,yAxisSpace:a,titleSpace:d,quadrantSpace:{quadrantLeft:T,quadrantTop:q,quadrantWidth:m,quadrantHalfWidth:x,quadrantHeight:b,quadrantHalfHeight:O}}}getAxisLabels(n,u,c,h){const{quadrantSpace:p,titleSpace:y}=h,{quadrantHalfHeight:S,quadrantHeight:a,quadrantLeft:A,quadrantHalfWidth:d,quadrantTop:T,quadrantWidth:q}=p,m=!!this.data.xAxisRightText,b=!!this.data.yAxisTopText,x=[];return this.data.xAxisLeftText&&u&&x.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:A+(m?d/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+a+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&u&&x.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:A+d+(m?d/2:0),y:n==="top"?this.config.xAxisLabelPadding+y.top:this.config.xAxisLabelPadding+T+a+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:m?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&c&&x.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+A+q+this.config.quadrantPadding,y:T+a-(b?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:b?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&c&&x.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+A+q+this.config.quadrantPadding,y:T+S-(b?S/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:b?"center":"left",horizontalPos:"top",rotation:-90}),x}getQuadrants(n){const{quadrantSpace:u}=n,{quadrantHalfHeight:c,quadrantLeft:h,quadrantHalfWidth:p,quadrantTop:y}=u,S=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:h+p,y,width:p,height:c,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:h,y,width:p,height:c,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:h,y:y+c,width:p,height:c,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:h+p,y:y+c,width:p,height:c,fill:this.themeConfig.quadrant4Fill}];for(const a of S)a.text.x=a.x+a.width/2,this.data.points.length===0?(a.text.y=a.y+a.height/2,a.text.horizontalPos="middle"):(a.text.y=a.y+this.config.quadrantTextTopPadding,a.text.horizontalPos="top");return S}getQuadrantPoints(n){const{quadrantSpace:u}=n,{quadrantHeight:c,quadrantLeft:h,quadrantTop:p,quadrantWidth:y}=u,S=ee().domain([0,1]).range([h,y+h]),a=ee().domain([0,1]).range([c+p,p]);return this.data.points.map(d=>{const T=this.classes.get(d.className);return T&&(d={...T,...d}),{x:S(d.x),y:a(d.y),fill:d.color??this.themeConfig.quadrantPointFill,radius:d.radius??this.config.pointRadius,text:{text:d.text,fill:this.themeConfig.quadrantPointTextFill,x:S(d.x),y:a(d.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:d.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:d.strokeWidth??"0px"}})}getBorders(n){const u=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:c}=n,{quadrantHalfHeight:h,quadrantHeight:p,quadrantLeft:y,quadrantHalfWidth:S,quadrantTop:a,quadrantWidth:A}=c;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-u,y1:a,x2:y+A+u,y2:a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y+A,y1:a+u,x2:y+A,y2:a+p-u},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y-u,y1:a+p,x2:y+A+u,y2:a+p},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:y,y1:a+u,x2:y,y2:a+p-u},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+S,y1:a+u,x2:y+S,y2:a+p-u},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:y+u,y1:a+h,x2:y+A-u,y2:a+h}]}getTitle(n){if(n)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 n=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),u=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),c=this.config.showTitle&&!!this.data.titleText,h=this.data.points.length>0?"bottom":this.config.xAxisPosition,p=this.calculateSpace(h,n,u,c);return{points:this.getQuadrantPoints(p),quadrants:this.getQuadrants(p),axisLabels:this.getAxisLabels(h,n,u,p),borderLines:this.getBorders(p),title:this.getTitle(c)}}},o(ht,"QuadrantBuilder"),ht),ct,_t=(ct=class extends Error{constructor(n,u,c){super(`value for ${n} ${u} is invalid, please use a valid ${c}`),this.name="InvalidStyleError"}},o(ct,"InvalidStyleError"),ct);function It(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}o(It,"validateHexCode");function ae(t){return!/^\d+$/.test(t)}o(ae,"validateNumber");function ne(t){return!/^\d+px$/.test(t)}o(ne,"validateSizeInPixels");var Ve=wt();function Q(t){return Ae(t.trim(),Ve)}o(Q,"textSanitizer");var z=new ze;function se(t){z.setData({quadrant1Text:Q(t.text)})}o(se,"setQuadrant1Text");function re(t){z.setData({quadrant2Text:Q(t.text)})}o(re,"setQuadrant2Text");function oe(t){z.setData({quadrant3Text:Q(t.text)})}o(oe,"setQuadrant3Text");function le(t){z.setData({quadrant4Text:Q(t.text)})}o(le,"setQuadrant4Text");function he(t){z.setData({xAxisLeftText:Q(t.text)})}o(he,"setXAxisLeftText");function ce(t){z.setData({xAxisRightText:Q(t.text)})}o(ce,"setXAxisRightText");function de(t){z.setData({yAxisTopText:Q(t.text)})}o(de,"setYAxisTopText");function ue(t){z.setData({yAxisBottomText:Q(t.text)})}o(ue,"setYAxisBottomText");function kt(t){const n={};for(const u of t){const[c,h]=u.trim().split(/\s*:\s*/);if(c==="radius"){if(ae(h))throw new _t(c,h,"number");n.radius=parseInt(h)}else if(c==="color"){if(It(h))throw new _t(c,h,"hex code");n.color=h}else if(c==="stroke-color"){if(It(h))throw new _t(c,h,"hex code");n.strokeColor=h}else if(c==="stroke-width"){if(ne(h))throw new _t(c,h,"number of pixels (eg. 10px)");n.strokeWidth=h}else throw new Error(`style named ${c} is not supported.`)}return n}o(kt,"parseStyles");function xe(t,n,u,c,h){const p=kt(h);z.addPoints([{x:u,y:c,text:Q(t.text),className:n,...p}])}o(xe,"addPoint");function fe(t,n){z.addClass(t,kt(n))}o(fe,"addClass");function ge(t){z.setConfig({chartWidth:t})}o(ge,"setWidth");function pe(t){z.setConfig({chartHeight:t})}o(pe,"setHeight");function ye(){const t=wt(),{themeVariables:n,quadrantChart:u}=t;return u&&z.setConfig(u),z.setThemeConfig({quadrant1Fill:n.quadrant1Fill,quadrant2Fill:n.quadrant2Fill,quadrant3Fill:n.quadrant3Fill,quadrant4Fill:n.quadrant4Fill,quadrant1TextFill:n.quadrant1TextFill,quadrant2TextFill:n.quadrant2TextFill,quadrant3TextFill:n.quadrant3TextFill,quadrant4TextFill:n.quadrant4TextFill,quadrantPointFill:n.quadrantPointFill,quadrantPointTextFill:n.quadrantPointTextFill,quadrantXAxisTextFill:n.quadrantXAxisTextFill,quadrantYAxisTextFill:n.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:n.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:n.quadrantInternalBorderStrokeFill,quadrantTitleFill:n.quadrantTitleFill}),z.setData({titleText:ie()}),z.build()}o(ye,"getQuadrantData");var Ie=o(function(){z.clear(),Le()},"clear"),we={setWidth:ge,setHeight:pe,setQuadrant1Text:se,setQuadrant2Text:re,setQuadrant3Text:oe,setQuadrant4Text:le,setXAxisLeftText:he,setXAxisRightText:ce,setYAxisTopText:de,setYAxisBottomText:ue,parseStyles:kt,addPoint:xe,addClass:fe,getQuadrantData:ye,clear:Ie,setAccTitle:ke,getAccTitle:Fe,setDiagramTitle:Pe,getDiagramTitle:ie,getAccDescription:ve,setAccDescription:Ce},Be=o((t,n,u,c)=>{var xt,ft,gt;function h(i){return i==="top"?"hanging":"middle"}o(h,"getDominantBaseLine");function p(i){return i==="left"?"start":"middle"}o(p,"getTextAnchor");function y(i){return`translate(${i.x}, ${i.y}) rotate(${i.rotation||0})`}o(y,"getTransformation");const S=wt();At.debug(`Rendering quadrant chart +`+t);const a=S.securityLevel;let A;a==="sandbox"&&(A=zt("#i"+n));const T=(a==="sandbox"?zt(A.nodes()[0].contentDocument.body):zt("body")).select(`[id="${n}"]`),q=T.append("g").attr("class","main"),m=((xt=S.quadrantChart)==null?void 0:xt.chartWidth)??500,b=((ft=S.quadrantChart)==null?void 0:ft.chartHeight)??500;Ee(T,b,m,((gt=S.quadrantChart)==null?void 0:gt.useMaxWidth)??!0),T.attr("viewBox","0 0 "+m+" "+b),c.db.setHeight(b),c.db.setWidth(m);const x=c.db.getQuadrantData(),O=q.append("g").attr("class","quadrants"),Y=q.append("g").attr("class","border"),G=q.append("g").attr("class","data-points"),yt=q.append("g").attr("class","labels"),Tt=q.append("g").attr("class","title");x.title&&Tt.append("text").attr("x",0).attr("y",0).attr("fill",x.title.fill).attr("font-size",x.title.fontSize).attr("dominant-baseline",h(x.title.horizontalPos)).attr("text-anchor",p(x.title.verticalPos)).attr("transform",y(x.title)).text(x.title.text),x.borderLines&&Y.selectAll("line").data(x.borderLines).enter().append("line").attr("x1",i=>i.x1).attr("y1",i=>i.y1).attr("x2",i=>i.x2).attr("y2",i=>i.y2).style("stroke",i=>i.strokeFill).style("stroke-width",i=>i.strokeWidth);const dt=O.selectAll("g.quadrant").data(x.quadrants).enter().append("g").attr("class","quadrant");dt.append("rect").attr("x",i=>i.x).attr("y",i=>i.y).attr("width",i=>i.width).attr("height",i=>i.height).attr("fill",i=>i.fill),dt.append("text").attr("x",0).attr("y",0).attr("fill",i=>i.text.fill).attr("font-size",i=>i.text.fontSize).attr("dominant-baseline",i=>h(i.text.horizontalPos)).attr("text-anchor",i=>p(i.text.verticalPos)).attr("transform",i=>y(i.text)).text(i=>i.text.text),yt.selectAll("g.label").data(x.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(i=>i.text).attr("fill",i=>i.fill).attr("font-size",i=>i.fontSize).attr("dominant-baseline",i=>h(i.horizontalPos)).attr("text-anchor",i=>p(i.verticalPos)).attr("transform",i=>y(i));const ut=G.selectAll("g.data-point").data(x.points).enter().append("g").attr("class","data-point");ut.append("circle").attr("cx",i=>i.x).attr("cy",i=>i.y).attr("r",i=>i.radius).attr("fill",i=>i.fill).attr("stroke",i=>i.strokeColor).attr("stroke-width",i=>i.strokeWidth),ut.append("text").attr("x",0).attr("y",0).text(i=>i.text.text).attr("fill",i=>i.text.fill).attr("font-size",i=>i.text.fontSize).attr("dominant-baseline",i=>h(i.text.horizontalPos)).attr("text-anchor",i=>p(i.text.verticalPos)).attr("transform",i=>y(i.text))},"draw"),Re={draw:Be},He={parser:De,db:we,renderer:Re,styles:o(()=>"","styles")};export{He as diagram}; diff --git a/assets/chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js b/assets/chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js new file mode 100644 index 00000000..c5ce6db6 --- /dev/null +++ b/assets/chunks/requirementDiagram-MIRIMTAZ.B2DK176o.js @@ -0,0 +1,52 @@ +import{_ as r,d as ve,s as Fe,g as De,c as Pe,b as Ye,l as xe,x as Ue,j as ce,k as Be,a1 as Qe,e as Te}from"../app.BCWCbnje.js";import{G as He}from"./graph.DlH8fBwT.js";import{l as We}from"./layout.BFk54v6v.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";var he=function(){var e=r(function($,i,a,l){for(a=a||{},l=$.length;l--;a[$[l]]=i);return a},"o"),t=[1,3],c=[1,4],d=[1,5],u=[1,6],p=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],y=[1,18],h=[2,7],o=[1,22],g=[1,23],R=[1,24],I=[1,25],b=[1,26],w=[1,27],q=[1,20],v=[1,28],A=[1,29],F=[62,63],pe=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],fe=[1,47],ye=[1,48],_e=[1,49],ge=[1,50],Ee=[1,51],Re=[1,52],me=[1,53],O=[53,54],D=[1,64],P=[1,60],Y=[1,61],U=[1,62],B=[1,63],Q=[1,65],j=[1,69],X=[1,70],J=[1,67],Z=[1,68],S=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],ne={trace:r(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,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$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",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"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],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:r(function(i,a,l,n,f,s,K){var E=s.length-1;switch(f){case 4:this.$=s[E].trim(),n.setAccTitle(this.$);break;case 5:case 6:this.$=s[E].trim(),n.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:n.addRequirement(s[E-3],s[E-4]);break;case 14:n.setNewReqId(s[E-2]);break;case 15:n.setNewReqText(s[E-2]);break;case 16:n.setNewReqRisk(s[E-2]);break;case 17:n.setNewReqVerifyMethod(s[E-2]);break;case 20:this.$=n.RequirementType.REQUIREMENT;break;case 21:this.$=n.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=n.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=n.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=n.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=n.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=n.RiskLevel.LOW_RISK;break;case 27:this.$=n.RiskLevel.MED_RISK;break;case 28:this.$=n.RiskLevel.HIGH_RISK;break;case 29:this.$=n.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=n.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=n.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=n.VerifyType.VERIFY_TEST;break;case 33:n.addElement(s[E-3]);break;case 34:n.setNewElementType(s[E-2]);break;case 35:n.setNewElementDocRef(s[E-2]);break;case 38:n.addRelationship(s[E-2],s[E],s[E-4]);break;case 39:n.addRelationship(s[E-2],s[E-4],s[E]);break;case 40:this.$=n.Relationships.CONTAINS;break;case 41:this.$=n.Relationships.COPIES;break;case 42:this.$=n.Relationships.DERIVES;break;case 43:this.$=n.Relationships.SATISFIES;break;case 44:this.$=n.Relationships.VERIFIES;break;case 45:this.$=n.Relationships.REFINES;break;case 46:this.$=n.Relationships.TRACES;break}},"anonymous"),table:[{3:1,4:2,6:t,9:c,11:d,13:u},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:c,11:d,13:u},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(p,[2,6]),{3:12,4:2,6:t,9:c,11:d,13:u},{1:[2,2]},{4:17,5:y,7:13,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},e(p,[2,4]),e(p,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:y,7:31,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},{4:17,5:y,7:32,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},{4:17,5:y,7:33,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},{4:17,5:y,7:34,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},{4:17,5:y,7:35,8:h,9:c,11:d,13:u,14:14,15:15,16:16,17:19,23:21,31:o,32:g,33:R,34:I,35:b,36:w,44:q,62:v,63:A},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},e(F,[2,20]),e(F,[2,21]),e(F,[2,22]),e(F,[2,23]),e(F,[2,24]),e(F,[2,25]),e(pe,[2,49]),e(pe,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:fe,56:ye,57:_e,58:ge,59:Ee,60:Re,61:me},{52:54,55:fe,56:ye,57:_e,58:ge,59:Ee,60:Re,61:me},{5:[1,55]},{5:[1,56]},{53:[1,57]},e(O,[2,40]),e(O,[2,41]),e(O,[2,42]),e(O,[2,43]),e(O,[2,44]),e(O,[2,45]),e(O,[2,46]),{54:[1,58]},{5:D,20:59,21:P,24:Y,26:U,28:B,30:Q},{5:j,30:X,46:66,47:J,49:Z},{23:71,62:v,63:A},{23:72,62:v,63:A},e(S,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:D,20:77,21:P,24:Y,26:U,28:B,30:Q},e(S,[2,19]),e(S,[2,33]),{22:[1,78]},{22:[1,79]},{5:j,30:X,46:80,47:J,49:Z},e(S,[2,37]),e(S,[2,38]),e(S,[2,39]),{23:81,62:v,63:A},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},e(S,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},e(S,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:D,20:106,21:P,24:Y,26:U,28:B,30:Q},{5:D,20:107,21:P,24:Y,26:U,28:B,30:Q},{5:D,20:108,21:P,24:Y,26:U,28:B,30:Q},{5:D,20:109,21:P,24:Y,26:U,28:B,30:Q},{5:j,30:X,46:110,47:J,49:Z},{5:j,30:X,46:111,47:J,49:Z},e(S,[2,14]),e(S,[2,15]),e(S,[2,16]),e(S,[2,17]),e(S,[2,34]),e(S,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:r(function(i,a){if(a.recoverable)this.trace(i);else{var l=new Error(i);throw l.hash=a,l}},"parseError"),parse:r(function(i){var a=this,l=[0],n=[],f=[null],s=[],K=this.table,E="",te=0,Ie=0,Le=2,be=1,Oe=s.slice.call(arguments,1),m=Object.create(this.lexer),C={yy:{}};for(var se in this.yy)Object.prototype.hasOwnProperty.call(this.yy,se)&&(C.yy[se]=this.yy[se]);m.setInput(i,C.yy),C.yy.lexer=m,C.yy.parser=this,typeof m.yylloc>"u"&&(m.yylloc={});var ae=m.yylloc;s.push(ae);var Ce=m.options&&m.options.ranges;typeof C.yy.parseError=="function"?this.parseError=C.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Me(N){l.length=l.length-2*N,f.length=f.length-N,s.length=s.length-N}r(Me,"popStack");function Se(){var N;return N=n.pop()||m.lex()||be,typeof N!="number"&&(N instanceof Array&&(n=N,N=n.pop()),N=a.symbols_[N]||N),N}r(Se,"lex");for(var k,M,x,le,H={},ie,V,ke,re;;){if(M=l[l.length-1],this.defaultActions[M]?x=this.defaultActions[M]:((k===null||typeof k>"u")&&(k=Se()),x=K[M]&&K[M][k]),typeof x>"u"||!x.length||!x[0]){var oe="";re=[];for(ie in K[M])this.terminals_[ie]&&ie>Le&&re.push("'"+this.terminals_[ie]+"'");m.showPosition?oe="Parse error on line "+(te+1)+`: +`+m.showPosition()+` +Expecting `+re.join(", ")+", got '"+(this.terminals_[k]||k)+"'":oe="Parse error on line "+(te+1)+": Unexpected "+(k==be?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(oe,{text:m.match,token:this.terminals_[k]||k,line:m.yylineno,loc:ae,expected:re})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+M+", token: "+k);switch(x[0]){case 1:l.push(k),f.push(m.yytext),s.push(m.yylloc),l.push(x[1]),k=null,Ie=m.yyleng,E=m.yytext,te=m.yylineno,ae=m.yylloc;break;case 2:if(V=this.productions_[x[1]][1],H.$=f[f.length-V],H._$={first_line:s[s.length-(V||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(V||1)].first_column,last_column:s[s.length-1].last_column},Ce&&(H._$.range=[s[s.length-(V||1)].range[0],s[s.length-1].range[1]]),le=this.performAction.apply(H,[E,Ie,te,C.yy,x[1],f,s].concat(Oe)),typeof le<"u")return le;V&&(l=l.slice(0,-1*V*2),f=f.slice(0,-1*V),s=s.slice(0,-1*V)),l.push(this.productions_[x[1]][0]),f.push(H.$),s.push(H._$),ke=K[l[l.length-2]][l[l.length-1]],l.push(ke);break;case 3:return!0}}return!0},"parse")},$e=function(){var $={EOF:1,parseError:r(function(a,l){if(this.yy.parser)this.yy.parser.parseError(a,l);else throw new Error(a)},"parseError"),setInput:r(function(i,a){return this.yy=a||this.yy||{},this._input=i,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:r(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var a=i.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:r(function(i){var a=i.length,l=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;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),l.length-1&&(this.yylineno-=l.length-1);var f=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:l?(l.length===n.length?this.yylloc.first_column:0)+n[n.length-l.length].length-l[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[f[0],f[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:r(function(){return this._more=!0,this},"more"),reject:r(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:r(function(i){this.unput(this.match.slice(i))},"less"),pastInput:r(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:r(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:r(function(){var i=this.pastInput(),a=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+a+"^"},"showPosition"),test_match:r(function(i,a){var l,n,f;if(this.options.backtrack_lexer&&(f={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&&(f.yylloc.range=this.yylloc.range.slice(0))),n=i[0].match(/(?:\r\n?|\n).*/g),n&&(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+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,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(i[0].length),this.matched+=i[0],l=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var s in f)this[s]=f[s];return!1}return!1},"test_match"),next:r(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,a,l,n;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),s=0;sa[0].length)){if(a=l,n=s,this.options.backtrack_lexer){if(i=this.test_match(l,f[s]),i!==!1)return i;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(i=this.test_match(a,f[n]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:r(function(){var a=this.next();return a||this.lex()},"lex"),begin:r(function(a){this.conditionStack.push(a)},"begin"),popState:r(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:r(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:r(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:r(function(a){this.begin(a)},"pushState"),stateStackSize:r(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:r(function(a,l,n,f){switch(n){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:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return l.yytext=l.yytext.trim(),62}},"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,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/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,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],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,50],inclusive:!0}}};return $}();ne.lexer=$e;function ee(){this.yy={}}return r(ee,"Parser"),ee.prototype=ne,ne.Parser=ee,new ee}();he.parser=he;var Ke=he,de=[],T={},G=new Map,L={},z=new Map,Ge={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},ze={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},je={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Xe={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},Je=r((e,t)=>(G.has(e)||G.set(e,{name:e,type:t,id:T.id,text:T.text,risk:T.risk,verifyMethod:T.verifyMethod}),T={},G.get(e)),"addRequirement"),Ze=r(()=>G,"getRequirements"),et=r(e=>{T!==void 0&&(T.id=e)},"setNewReqId"),tt=r(e=>{T!==void 0&&(T.text=e)},"setNewReqText"),it=r(e=>{T!==void 0&&(T.risk=e)},"setNewReqRisk"),rt=r(e=>{T!==void 0&&(T.verifyMethod=e)},"setNewReqVerifyMethod"),nt=r(e=>(z.has(e)||(z.set(e,{name:e,type:L.type,docRef:L.docRef}),xe.info("Added new requirement: ",e)),L={},z.get(e)),"addElement"),st=r(()=>z,"getElements"),at=r(e=>{L!==void 0&&(L.type=e)},"setNewElementType"),lt=r(e=>{L!==void 0&&(L.docRef=e)},"setNewElementDocRef"),ot=r((e,t,c)=>{de.push({type:e,src:t,dst:c})},"addRelationship"),ct=r(()=>de,"getRelationships"),ht=r(()=>{de=[],T={},G=new Map,L={},z=new Map,Ue()},"clear"),ut={RequirementType:Ge,RiskLevel:ze,VerifyType:je,Relationships:Xe,getConfig:r(()=>ve().req,"getConfig"),addRequirement:Je,getRequirements:Ze,setNewReqId:et,setNewReqText:tt,setNewReqRisk:it,setNewReqVerifyMethod:rt,setAccTitle:Fe,getAccTitle:De,setAccDescription:Pe,getAccDescription:Ye,addElement:nt,getElements:st,setNewElementType:at,setNewElementDocRef:lt,addRelationship:ot,getRelationships:ct,clear:ht},dt=r(e=>` + + marker { + fill: ${e.relationColor}; + stroke: ${e.relationColor}; + } + + marker.cross { + stroke: ${e.lineColor}; + } + + svg { + font-family: ${e.fontFamily}; + font-size: ${e.fontSize}; + } + + .reqBox { + fill: ${e.requirementBackground}; + fill-opacity: 1.0; + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${e.requirementTextColor}; + } + .reqLabelBox { + fill: ${e.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${e.requirementBorderColor}; + stroke-width: ${e.requirementBorderSize}; + } + .relationshipLine { + stroke: ${e.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${e.relationLabelColor}; + } + +`,"getStyles"),pt=dt,ue={CONTAINS:"contains",ARROW:"arrow"},ft=r((e,t)=>{let c=e.append("defs").append("marker").attr("id",ue.CONTAINS+"_line_ending").attr("refX",0).attr("refY",t.line_height/2).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("g");c.append("circle").attr("cx",t.line_height/2).attr("cy",t.line_height/2).attr("r",t.line_height/2).attr("fill","none"),c.append("line").attr("x1",0).attr("x2",t.line_height).attr("y1",t.line_height/2).attr("y2",t.line_height/2).attr("stroke-width",1),c.append("line").attr("y1",0).attr("y2",t.line_height).attr("x1",t.line_height/2).attr("x2",t.line_height/2).attr("stroke-width",1),e.append("defs").append("marker").attr("id",ue.ARROW+"_line_ending").attr("refX",t.line_height).attr("refY",.5*t.line_height).attr("markerWidth",t.line_height).attr("markerHeight",t.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${t.line_height},${t.line_height/2} + M${t.line_height},${t.line_height/2} + L0,${t.line_height}`).attr("stroke-width",1)},"insertLineEndings"),we={ReqMarkers:ue,insertLineEndings:ft},_={},Ne=0,Ae=r((e,t)=>e.insert("rect","#"+t).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",_.rect_min_width+"px").attr("height",_.rect_min_height+"px"),"newRectNode"),qe=r((e,t,c)=>{let d=_.rect_min_width/2,u=e.append("text").attr("class","req reqLabel reqTitle").attr("id",t).attr("x",d).attr("y",_.rect_padding).attr("dominant-baseline","hanging"),p=0;c.forEach(g=>{p==0?u.append("tspan").attr("text-anchor","middle").attr("x",_.rect_min_width/2).attr("dy",0).text(g):u.append("tspan").attr("text-anchor","middle").attr("x",_.rect_min_width/2).attr("dy",_.line_height*.75).text(g),p++});let y=1.5*_.rect_padding,h=p*_.line_height*.75,o=y+h;return e.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",_.rect_min_width).attr("y1",o).attr("y2",o),{titleNode:u,y:o}},"newTitleNode"),Ve=r((e,t,c,d)=>{let u=e.append("text").attr("class","req reqLabel").attr("id",t).attr("x",_.rect_padding).attr("y",d).attr("dominant-baseline","hanging"),p=0;const y=30;let h=[];return c.forEach(o=>{let g=o.length;for(;g>y&&p<3;){let R=o.substring(0,y);o=o.substring(y,o.length),g=o.length,h[h.length]=R,p++}if(p==3){let R=h[h.length-1];h[h.length-1]=R.substring(0,R.length-4)+"..."}else h[h.length]=o;p=0}),h.forEach(o=>{u.append("tspan").attr("x",_.rect_padding).attr("dy",_.line_height).text(o)}),u},"newBodyNode"),yt=r((e,t,c,d)=>{const u=t.node().getTotalLength(),p=t.node().getPointAtLength(u*.5),y="rel"+Ne;Ne++;const o=e.append("text").attr("class","req relationshipLabel").attr("id",y).attr("x",p.x).attr("y",p.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(d).node().getBBox();e.insert("rect","#"+y).attr("class","req reqLabelBox").attr("x",p.x-o.width/2).attr("y",p.y-o.height/2).attr("width",o.width).attr("height",o.height).attr("fill","white").attr("fill-opacity","85%")},"addEdgeLabel"),_t=r(function(e,t,c,d,u){const p=c.edge(W(t.src),W(t.dst)),y=Qe().x(function(o){return o.x}).y(function(o){return o.y}),h=e.insert("path","#"+d).attr("class","er relationshipLine").attr("d",y(p.points)).attr("fill","none");t.type==u.db.Relationships.CONTAINS?h.attr("marker-start","url("+Te.getUrl(_.arrowMarkerAbsolute)+"#"+t.type+"_line_ending)"):(h.attr("stroke-dasharray","10,7"),h.attr("marker-end","url("+Te.getUrl(_.arrowMarkerAbsolute)+"#"+we.ReqMarkers.ARROW+"_line_ending)")),yt(e,h,_,`<<${t.type}>>`)},"drawRelationshipFromLayout"),gt=r((e,t,c)=>{e.forEach((d,u)=>{u=W(u),xe.info("Added new requirement: ",u);const p=c.append("g").attr("id",u),y="req-"+u,h=Ae(p,y);let o=[],g=qe(p,u+"_title",[`<<${d.type}>>`,`${d.name}`]);o.push(g.titleNode);let R=Ve(p,u+"_body",[`Id: ${d.id}`,`Text: ${d.text}`,`Risk: ${d.risk}`,`Verification: ${d.verifyMethod}`],g.y);o.push(R);const I=h.node().getBBox();t.setNode(u,{width:I.width,height:I.height,shape:"rect",id:u})})},"drawReqs"),Et=r((e,t,c)=>{e.forEach((d,u)=>{const p=W(u),y=c.append("g").attr("id",p),h="element-"+p,o=Ae(y,h);let g=[],R=qe(y,h+"_title",["<>",`${u}`]);g.push(R.titleNode);let I=Ve(y,h+"_body",[`Type: ${d.type||"Not Specified"}`,`Doc Ref: ${d.docRef||"None"}`],R.y);g.push(I);const b=o.node().getBBox();t.setNode(p,{width:b.width,height:b.height,shape:"rect",id:p})})},"drawElements"),Rt=r((e,t)=>(e.forEach(function(c){let d=W(c.src),u=W(c.dst);t.setEdge(d,u,{relationship:c})}),e),"addRelationships"),mt=r(function(e,t){t.nodes().forEach(function(c){c!==void 0&&t.node(c)!==void 0&&(e.select("#"+c),e.select("#"+c).attr("transform","translate("+(t.node(c).x-t.node(c).width/2)+","+(t.node(c).y-t.node(c).height/2)+" )"))})},"adjustEntities"),W=r(e=>e.replace(/\s/g,"").replace(/\./g,"_"),"elementString"),It=r((e,t,c,d)=>{_=ve().requirement;const u=_.securityLevel;let p;u==="sandbox"&&(p=ce("#i"+t));const h=(u==="sandbox"?ce(p.nodes()[0].contentDocument.body):ce("body")).select(`[id='${t}']`);we.insertLineEndings(h,_);const o=new He({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:_.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let g=d.db.getRequirements(),R=d.db.getElements(),I=d.db.getRelationships();gt(g,o,h),Et(R,o,h),Rt(I,o),We(o),mt(h,o),I.forEach(function(A){_t(h,A,o,t,d)});const b=_.rect_padding,w=h.node().getBBox(),q=w.width+b*2,v=w.height+b*2;Be(h,v,q,_.useMaxWidth),h.attr("viewBox",`${w.x-b} ${w.y-b} ${q} ${v}`)},"draw"),bt={draw:It},At={parser:Ke,db:ut,renderer:bt,styles:pt};export{At as diagram}; diff --git a/assets/chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js b/assets/chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js new file mode 100644 index 00000000..fac9adcf --- /dev/null +++ b/assets/chunks/sankeyDiagram-Y46BX6SQ.6IYhj9Rg.js @@ -0,0 +1,8 @@ +import{_ as m,d as lt,g as _t,s as xt,b as vt,c as bt,r as wt,q as St,x as Lt,e as Et,p as At,j as H,ac as Tt}from"../app.BCWCbnje.js";import{o as Mt}from"./ordinal.BYWQX77i.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./init.Gi6I4Gst.js";function Nt(t){for(var e=t.length/6|0,i=new Array(e),a=0;a=a)&&(i=a);else{let a=-1;for(let h of t)(h=e(h,++a,t))!=null&&(i=h)&&(i=h)}return i}function pt(t,e){let i;if(e===void 0)for(const a of t)a!=null&&(i>a||i===void 0&&a>=a)&&(i=a);else{let a=-1;for(let h of t)(h=e(h,++a,t))!=null&&(i>h||i===void 0&&h>=h)&&(i=h)}return i}function nt(t,e){let i=0;if(e===void 0)for(let a of t)(a=+a)&&(i+=a);else{let a=-1;for(let h of t)(h=+e(h,++a,t))&&(i+=h)}return i}function Pt(t){return t.target.depth}function Ct(t){return t.depth}function Ot(t,e){return e-1-t.height}function mt(t,e){return t.sourceLinks.length?t.depth:e-1}function Dt(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?pt(t.sourceLinks,Pt)-1:0}function X(t){return function(){return t}}function ut(t,e){return Q(t.source,e.source)||t.index-e.index}function ht(t,e){return Q(t.target,e.target)||t.index-e.index}function Q(t,e){return t.y0-e.y0}function it(t){return t.value}function jt(t){return t.index}function zt(t){return t.nodes}function $t(t){return t.links}function ft(t,e){const i=t.get(e);if(!i)throw new Error("missing: "+e);return i}function yt({nodes:t}){for(const e of t){let i=e.y0,a=i;for(const h of e.sourceLinks)h.y0=i+h.width/2,i+=h.width;for(const h of e.targetLinks)h.y1=a+h.width/2,a+=h.width}}function Bt(){let t=0,e=0,i=1,a=1,h=24,d=8,p,_=jt,s=mt,o,l,x=zt,v=$t,y=6;function b(){const n={nodes:x.apply(null,arguments),links:v.apply(null,arguments)};return M(n),T(n),N(n),C(n),S(n),yt(n),n}b.update=function(n){return yt(n),n},b.nodeId=function(n){return arguments.length?(_=typeof n=="function"?n:X(n),b):_},b.nodeAlign=function(n){return arguments.length?(s=typeof n=="function"?n:X(n),b):s},b.nodeSort=function(n){return arguments.length?(o=n,b):o},b.nodeWidth=function(n){return arguments.length?(h=+n,b):h},b.nodePadding=function(n){return arguments.length?(d=p=+n,b):d},b.nodes=function(n){return arguments.length?(x=typeof n=="function"?n:X(n),b):x},b.links=function(n){return arguments.length?(v=typeof n=="function"?n:X(n),b):v},b.linkSort=function(n){return arguments.length?(l=n,b):l},b.size=function(n){return arguments.length?(t=e=0,i=+n[0],a=+n[1],b):[i-t,a-e]},b.extent=function(n){return arguments.length?(t=+n[0][0],i=+n[1][0],e=+n[0][1],a=+n[1][1],b):[[t,e],[i,a]]},b.iterations=function(n){return arguments.length?(y=+n,b):y};function M({nodes:n,links:f}){for(const[c,r]of n.entries())r.index=c,r.sourceLinks=[],r.targetLinks=[];const u=new Map(n.map((c,r)=>[_(c,r,n),c]));for(const[c,r]of f.entries()){r.index=c;let{source:k,target:w}=r;typeof k!="object"&&(k=r.source=ft(u,k)),typeof w!="object"&&(w=r.target=ft(u,w)),k.sourceLinks.push(r),w.targetLinks.push(r)}if(l!=null)for(const{sourceLinks:c,targetLinks:r}of n)c.sort(l),r.sort(l)}function T({nodes:n}){for(const f of n)f.value=f.fixedValue===void 0?Math.max(nt(f.sourceLinks,it),nt(f.targetLinks,it)):f.fixedValue}function N({nodes:n}){const f=n.length;let u=new Set(n),c=new Set,r=0;for(;u.size;){for(const k of u){k.depth=r;for(const{target:w}of k.sourceLinks)c.add(w)}if(++r>f)throw new Error("circular link");u=c,c=new Set}}function C({nodes:n}){const f=n.length;let u=new Set(n),c=new Set,r=0;for(;u.size;){for(const k of u){k.height=r;for(const{source:w}of k.targetLinks)c.add(w)}if(++r>f)throw new Error("circular link");u=c,c=new Set}}function j({nodes:n}){const f=ct(n,r=>r.depth)+1,u=(i-t-h)/(f-1),c=new Array(f);for(const r of n){const k=Math.max(0,Math.min(f-1,Math.floor(s.call(null,r,f))));r.layer=k,r.x0=t+k*u,r.x1=r.x0+h,c[k]?c[k].push(r):c[k]=[r]}if(o)for(const r of c)r.sort(o);return c}function R(n){const f=pt(n,u=>(a-e-(u.length-1)*p)/nt(u,it));for(const u of n){let c=e;for(const r of u){r.y0=c,r.y1=c+r.value*f,c=r.y1+p;for(const k of r.sourceLinks)k.width=k.value*f}c=(a-c+p)/(u.length+1);for(let r=0;ru.length)-1)),R(f);for(let u=0;u0))continue;let G=(L/V-w.y0)*f;w.y0+=G,w.y1+=G,E(w)}o===void 0&&k.sort(Q),O(k,u)}}function B(n,f,u){for(let c=n.length,r=c-2;r>=0;--r){const k=n[r];for(const w of k){let L=0,V=0;for(const{target:Y,value:et}of w.sourceLinks){let q=et*(Y.layer-w.layer);L+=I(w,Y)*q,V+=q}if(!(V>0))continue;let G=(L/V-w.y0)*f;w.y0+=G,w.y1+=G,E(w)}o===void 0&&k.sort(Q),O(k,u)}}function O(n,f){const u=n.length>>1,c=n[u];g(n,c.y0-p,u-1,f),D(n,c.y1+p,u+1,f),g(n,a,n.length-1,f),D(n,e,0,f)}function D(n,f,u,c){for(;u1e-6&&(r.y0+=k,r.y1+=k),f=r.y1+p}}function g(n,f,u,c){for(;u>=0;--u){const r=n[u],k=(r.y1-f)*c;k>1e-6&&(r.y0-=k,r.y1-=k),f=r.y0-p}}function E({sourceLinks:n,targetLinks:f}){if(l===void 0){for(const{source:{sourceLinks:u}}of f)u.sort(ht);for(const{target:{targetLinks:u}}of n)u.sort(ut)}}function A(n){if(l===void 0)for(const{sourceLinks:f,targetLinks:u}of n)f.sort(ht),u.sort(ut)}function z(n,f){let u=n.y0-(n.sourceLinks.length-1)*p/2;for(const{target:c,width:r}of n.sourceLinks){if(c===f)break;u+=r+p}for(const{source:c,width:r}of f.targetLinks){if(c===n)break;u-=r}return u}function I(n,f){let u=f.y0-(f.targetLinks.length-1)*p/2;for(const{source:c,width:r}of f.targetLinks){if(c===n)break;u+=r+p}for(const{target:c,width:r}of n.sourceLinks){if(c===f)break;u-=r}return u}return b}var st=Math.PI,rt=2*st,F=1e-6,Rt=rt-F;function ot(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function kt(){return new ot}ot.prototype=kt.prototype={constructor:ot,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,i,a){this._+="Q"+ +t+","+ +e+","+(this._x1=+i)+","+(this._y1=+a)},bezierCurveTo:function(t,e,i,a,h,d){this._+="C"+ +t+","+ +e+","+ +i+","+ +a+","+(this._x1=+h)+","+(this._y1=+d)},arcTo:function(t,e,i,a,h){t=+t,e=+e,i=+i,a=+a,h=+h;var d=this._x1,p=this._y1,_=i-t,s=a-e,o=d-t,l=p-e,x=o*o+l*l;if(h<0)throw new Error("negative radius: "+h);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(x>F)if(!(Math.abs(l*_-s*o)>F)||!h)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var v=i-d,y=a-p,b=_*_+s*s,M=v*v+y*y,T=Math.sqrt(b),N=Math.sqrt(x),C=h*Math.tan((st-Math.acos((b+x-M)/(2*T*N)))/2),j=C/N,R=C/T;Math.abs(j-1)>F&&(this._+="L"+(t+j*o)+","+(e+j*l)),this._+="A"+h+","+h+",0,0,"+ +(l*v>o*y)+","+(this._x1=t+R*_)+","+(this._y1=e+R*s)}},arc:function(t,e,i,a,h,d){t=+t,e=+e,i=+i,d=!!d;var p=i*Math.cos(a),_=i*Math.sin(a),s=t+p,o=e+_,l=1^d,x=d?a-h:h-a;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+s+","+o:(Math.abs(this._x1-s)>F||Math.abs(this._y1-o)>F)&&(this._+="L"+s+","+o),i&&(x<0&&(x=x%rt+rt),x>Rt?this._+="A"+i+","+i+",0,1,"+l+","+(t-p)+","+(e-_)+"A"+i+","+i+",0,1,"+l+","+(this._x1=s)+","+(this._y1=o):x>F&&(this._+="A"+i+","+i+",0,"+ +(x>=st)+","+l+","+(this._x1=t+i*Math.cos(h))+","+(this._y1=e+i*Math.sin(h))))},rect:function(t,e,i,a){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +i+"v"+ +a+"h"+-i+"Z"},toString:function(){return this._}};function dt(t){return function(){return t}}function Vt(t){return t[0]}function Ft(t){return t[1]}var Wt=Array.prototype.slice;function Ut(t){return t.source}function Gt(t){return t.target}function Yt(t){var e=Ut,i=Gt,a=Vt,h=Ft,d=null;function p(){var _,s=Wt.call(arguments),o=e.apply(this,s),l=i.apply(this,s);if(d||(d=_=kt()),t(d,+a.apply(this,(s[0]=o,s)),+h.apply(this,s),+a.apply(this,(s[0]=l,s)),+h.apply(this,s)),_)return d=null,_+""||null}return p.source=function(_){return arguments.length?(e=_,p):e},p.target=function(_){return arguments.length?(i=_,p):i},p.x=function(_){return arguments.length?(a=typeof _=="function"?_:dt(+_),p):a},p.y=function(_){return arguments.length?(h=typeof _=="function"?_:dt(+_),p):h},p.context=function(_){return arguments.length?(d=_??null,p):d},p}function qt(t,e,i,a,h){t.moveTo(e,i),t.bezierCurveTo(e=(e+a)/2,i,e,h,a,h)}function Ht(){return Yt(qt)}function Xt(t){return[t.source.x1,t.y0]}function Qt(t){return[t.target.x0,t.y1]}function Kt(){return Ht().source(Xt).target(Qt)}var at=function(){var t=m(function(_,s,o,l){for(o=o||{},l=_.length;l--;o[_[l]]=s);return o},"o"),e=[1,9],i=[1,10],a=[1,5,10,12],h={trace:m(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:m(function(s,o,l,x,v,y,b){var M=y.length-1;switch(v){case 7:const T=x.findOrCreateNode(y[M-4].trim().replaceAll('""','"')),N=x.findOrCreateNode(y[M-2].trim().replaceAll('""','"')),C=parseFloat(y[M].trim());x.addLink(T,N,C);break;case 8:case 9:case 11:this.$=y[M];break;case 10:this.$=y[M-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:i},{1:[2,6],7:11,10:[1,12]},t(i,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(a,[2,8]),t(a,[2,9]),{19:[1,16]},t(a,[2,11]),{1:[2,1]},{1:[2,5]},t(i,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:i},{15:18,16:7,17:8,18:e,20:i},{18:[1,19]},t(i,[2,3]),{12:[1,20]},t(a,[2,10]),{15:21,16:7,17:8,18:e,20:i},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:m(function(s,o){if(o.recoverable)this.trace(s);else{var l=new Error(s);throw l.hash=o,l}},"parseError"),parse:m(function(s){var o=this,l=[0],x=[],v=[null],y=[],b=this.table,M="",T=0,N=0,C=2,j=1,R=y.slice.call(arguments,1),S=Object.create(this.lexer),P={yy:{}};for(var B in this.yy)Object.prototype.hasOwnProperty.call(this.yy,B)&&(P.yy[B]=this.yy[B]);S.setInput(s,P.yy),P.yy.lexer=S,P.yy.parser=this,typeof S.yylloc>"u"&&(S.yylloc={});var O=S.yylloc;y.push(O);var D=S.options&&S.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function g(L){l.length=l.length-2*L,v.length=v.length-L,y.length=y.length-L}m(g,"popStack");function E(){var L;return L=x.pop()||S.lex()||j,typeof L!="number"&&(L instanceof Array&&(x=L,L=x.pop()),L=o.symbols_[L]||L),L}m(E,"lex");for(var A,z,I,n,f={},u,c,r,k;;){if(z=l[l.length-1],this.defaultActions[z]?I=this.defaultActions[z]:((A===null||typeof A>"u")&&(A=E()),I=b[z]&&b[z][A]),typeof I>"u"||!I.length||!I[0]){var w="";k=[];for(u in b[z])this.terminals_[u]&&u>C&&k.push("'"+this.terminals_[u]+"'");S.showPosition?w="Parse error on line "+(T+1)+`: +`+S.showPosition()+` +Expecting `+k.join(", ")+", got '"+(this.terminals_[A]||A)+"'":w="Parse error on line "+(T+1)+": Unexpected "+(A==j?"end of input":"'"+(this.terminals_[A]||A)+"'"),this.parseError(w,{text:S.match,token:this.terminals_[A]||A,line:S.yylineno,loc:O,expected:k})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+z+", token: "+A);switch(I[0]){case 1:l.push(A),v.push(S.yytext),y.push(S.yylloc),l.push(I[1]),A=null,N=S.yyleng,M=S.yytext,T=S.yylineno,O=S.yylloc;break;case 2:if(c=this.productions_[I[1]][1],f.$=v[v.length-c],f._$={first_line:y[y.length-(c||1)].first_line,last_line:y[y.length-1].last_line,first_column:y[y.length-(c||1)].first_column,last_column:y[y.length-1].last_column},D&&(f._$.range=[y[y.length-(c||1)].range[0],y[y.length-1].range[1]]),n=this.performAction.apply(f,[M,N,T,P.yy,I[1],v,y].concat(R)),typeof n<"u")return n;c&&(l=l.slice(0,-1*c*2),v=v.slice(0,-1*c),y=y.slice(0,-1*c)),l.push(this.productions_[I[1]][0]),v.push(f.$),y.push(f._$),r=b[l[l.length-2]][l[l.length-1]],l.push(r);break;case 3:return!0}}return!0},"parse")},d=function(){var _={EOF:1,parseError:m(function(o,l){if(this.yy.parser)this.yy.parser.parseError(o,l);else throw new Error(o)},"parseError"),setInput:m(function(s,o){return this.yy=o||this.yy||{},this._input=s,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:m(function(){var s=this._input[0];this.yytext+=s,this.yyleng++,this.offset++,this.match+=s,this.matched+=s;var o=s.match(/(?:\r\n?|\n).*/g);return o?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),s},"input"),unput:m(function(s){var o=s.length,l=s.split(/(?:\r\n?|\n)/g);this._input=s+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-o),this.offset-=o;var x=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),l.length-1&&(this.yylineno-=l.length-1);var v=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:l?(l.length===x.length?this.yylloc.first_column:0)+x[x.length-l.length].length-l[0].length:this.yylloc.first_column-o},this.options.ranges&&(this.yylloc.range=[v[0],v[0]+this.yyleng-o]),this.yyleng=this.yytext.length,this},"unput"),more:m(function(){return this._more=!0,this},"more"),reject:m(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:m(function(s){this.unput(this.match.slice(s))},"less"),pastInput:m(function(){var s=this.matched.substr(0,this.matched.length-this.match.length);return(s.length>20?"...":"")+s.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:m(function(){var s=this.match;return s.length<20&&(s+=this._input.substr(0,20-s.length)),(s.substr(0,20)+(s.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:m(function(){var s=this.pastInput(),o=new Array(s.length+1).join("-");return s+this.upcomingInput()+` +`+o+"^"},"showPosition"),test_match:m(function(s,o){var l,x,v;if(this.options.backtrack_lexer&&(v={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&&(v.yylloc.range=this.yylloc.range.slice(0))),x=s[0].match(/(?:\r\n?|\n).*/g),x&&(this.yylineno+=x.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:x?x[x.length-1].length-x[x.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+s[0].length},this.yytext+=s[0],this.match+=s[0],this.matches=s,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(s[0].length),this.matched+=s[0],l=this.performAction.call(this,this.yy,this,o,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),l)return l;if(this._backtrack){for(var y in v)this[y]=v[y];return!1}return!1},"test_match"),next:m(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var s,o,l,x;this._more||(this.yytext="",this.match="");for(var v=this._currentRules(),y=0;yo[0].length)){if(o=l,x=y,this.options.backtrack_lexer){if(s=this.test_match(l,v[y]),s!==!1)return s;if(this._backtrack){o=!1;continue}else return!1}else if(!this.options.flex)break}return o?(s=this.test_match(o,v[x]),s!==!1?s:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:m(function(){var o=this.next();return o||this.lex()},"lex"),begin:m(function(o){this.conditionStack.push(o)},"begin"),popState:m(function(){var o=this.conditionStack.length-1;return o>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:m(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:m(function(o){return o=this.conditionStack.length-1-Math.abs(o||0),o>=0?this.conditionStack[o]:"INITIAL"},"topState"),pushState:m(function(o){this.begin(o)},"pushState"),stateStackSize:m(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:m(function(o,l,x,v){switch(x){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}}};return _}();h.lexer=d;function p(){this.yy={}}return m(p,"Parser"),p.prototype=h,h.Parser=p,new p}();at.parser=at;var K=at,J=[],tt=[],Z=new Map,Zt=m(()=>{J=[],tt=[],Z=new Map,Lt()},"clear"),W,Jt=(W=class{constructor(e,i,a=0){this.source=e,this.target=i,this.value=a}},m(W,"SankeyLink"),W),te=m((t,e,i)=>{J.push(new Jt(t,e,i))},"addLink"),U,ee=(U=class{constructor(e){this.ID=e}},m(U,"SankeyNode"),U),ne=m(t=>{t=Et.sanitizeText(t,lt());let e=Z.get(t);return e===void 0&&(e=new ee(t),Z.set(t,e),tt.push(e)),e},"findOrCreateNode"),ie=m(()=>tt,"getNodes"),se=m(()=>J,"getLinks"),re=m(()=>({nodes:tt.map(t=>({id:t.ID})),links:J.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),oe={nodesMap:Z,getConfig:m(()=>lt().sankey,"getConfig"),getNodes:ie,getLinks:se,getGraph:re,addLink:te,findOrCreateNode:ne,getAccTitle:_t,setAccTitle:xt,getAccDescription:vt,setAccDescription:bt,getDiagramTitle:wt,setDiagramTitle:St,clear:Zt},$,gt=($=class{static next(e){return new $(e+ ++$.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}},m($,"Uid"),$.count=0,$),ae={left:Ct,right:Ot,center:Dt,justify:mt},le=m(function(t,e,i,a){const{securityLevel:h,sankey:d}=lt(),p=At.sankey;let _;h==="sandbox"&&(_=H("#i"+e));const s=h==="sandbox"?H(_.nodes()[0].contentDocument.body):H("body"),o=h==="sandbox"?s.select(`[id="${e}"]`):H(`[id="${e}"]`),l=(d==null?void 0:d.width)??p.width,x=(d==null?void 0:d.height)??p.width,v=(d==null?void 0:d.useMaxWidth)??p.useMaxWidth,y=(d==null?void 0:d.nodeAlignment)??p.nodeAlignment,b=(d==null?void 0:d.prefix)??p.prefix,M=(d==null?void 0:d.suffix)??p.suffix,T=(d==null?void 0:d.showValues)??p.showValues,N=a.db.getGraph(),C=ae[y];Bt().nodeId(g=>g.id).nodeWidth(10).nodePadding(10+(T?15:0)).nodeAlign(C).extent([[0,0],[l,x]])(N);const S=Mt(It);o.append("g").attr("class","nodes").selectAll(".node").data(N.nodes).join("g").attr("class","node").attr("id",g=>(g.uid=gt.next("node-")).id).attr("transform",function(g){return"translate("+g.x0+","+g.y0+")"}).attr("x",g=>g.x0).attr("y",g=>g.y0).append("rect").attr("height",g=>g.y1-g.y0).attr("width",g=>g.x1-g.x0).attr("fill",g=>S(g.id));const P=m(({id:g,value:E})=>T?`${g} +${b}${Math.round(E*100)/100}${M}`:g,"getText");o.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(N.nodes).join("text").attr("x",g=>g.x0(g.y1+g.y0)/2).attr("dy",`${T?"0":"0.35"}em`).attr("text-anchor",g=>g.x0(E.uid=gt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",E=>E.source.x1).attr("x2",E=>E.target.x0);g.append("stop").attr("offset","0%").attr("stop-color",E=>S(E.source.id)),g.append("stop").attr("offset","100%").attr("stop-color",E=>S(E.target.id))}let D;switch(O){case"gradient":D=m(g=>g.uid,"coloring");break;case"source":D=m(g=>S(g.source.id),"coloring");break;case"target":D=m(g=>S(g.target.id),"coloring");break;default:D=O}B.append("path").attr("d",Kt()).attr("stroke",D).attr("stroke-width",g=>Math.max(1,g.width)),Tt(void 0,o,0,v)},"draw"),ce={draw:le},ue=m(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),"prepareTextForParsing"),he=K.parse.bind(K);K.parse=t=>he(ue(t));var me={parser:K,db:oe,renderer:ce};export{me as diagram}; diff --git a/assets/chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js b/assets/chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js new file mode 100644 index 00000000..42eaea1b --- /dev/null +++ b/assets/chunks/sequenceDiagram-G6AWOVSC.ChVfeMQD.js @@ -0,0 +1,122 @@ +import{g as St,a as Kt,d as Se,b as Me,c as Re,e as De}from"./chunk-ASOPGD6M.DXiLsIdP.js";import{I as Ce}from"./chunk-KFBOBJHC.B571SeHl.js";import{_ as d,g as Oe,r as Be,q as Ve,d as at,s as se,c as Ye,b as Fe,e as _,a2 as lt,a3 as wt,v as F,l as J,x as We,i as Mt,a as qe,j as kt,k as ze,m as ae,a4 as ie,F as Ft,a5 as ne,a6 as He}from"../app.BCWCbnje.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var Wt=function(){var t=d(function(pt,I,L,A){for(L=L||{},A=pt.length;A--;L[pt[A]]=I);return L},"o"),e=[1,2],o=[1,3],r=[1,4],a=[2,4],i=[1,9],c=[1,11],h=[1,13],p=[1,14],s=[1,16],f=[1,17],E=[1,18],g=[1,24],T=[1,25],m=[1,26],w=[1,27],k=[1,28],V=[1,29],M=[1,30],Y=[1,31],C=[1,32],z=[1,33],H=[1,34],Z=[1,35],et=[1,36],K=[1,37],U=[1,38],q=[1,39],R=[1,41],Q=[1,42],G=[1,43],j=[1,44],rt=[1,45],S=[1,46],y=[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],P=[4,5,16,50,52,53],$=[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],it=[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],N=[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],Jt=[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],ot=[68,69,70],dt=[1,122],Ct={trace:d(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:d(function(I,L,A,b,D,l,mt){var u=l.length-1;switch(D){case 3:return b.apply(l[u]),l[u];case 4:case 9:this.$=[];break;case 5:case 10:l[u-1].push(l[u]),this.$=l[u-1];break;case 6:case 7:case 11:case 12:this.$=l[u];break;case 8:case 13:this.$=[];break;case 15:l[u].type="createParticipant",this.$=l[u];break;case 16:l[u-1].unshift({type:"boxStart",boxData:b.parseBoxData(l[u-2])}),l[u-1].push({type:"boxEnd",boxText:l[u-2]}),this.$=l[u-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(l[u-2]),sequenceIndexStep:Number(l[u-1]),sequenceVisible:!0,signalType:b.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(l[u-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:b.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:b.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:b.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:b.LINETYPE.ACTIVE_START,actor:l[u-1].actor};break;case 23:this.$={type:"activeEnd",signalType:b.LINETYPE.ACTIVE_END,actor:l[u-1].actor};break;case 29:b.setDiagramTitle(l[u].substring(6)),this.$=l[u].substring(6);break;case 30:b.setDiagramTitle(l[u].substring(7)),this.$=l[u].substring(7);break;case 31:this.$=l[u].trim(),b.setAccTitle(this.$);break;case 32:case 33:this.$=l[u].trim(),b.setAccDescription(this.$);break;case 34:l[u-1].unshift({type:"loopStart",loopText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.LOOP_START}),l[u-1].push({type:"loopEnd",loopText:l[u-2],signalType:b.LINETYPE.LOOP_END}),this.$=l[u-1];break;case 35:l[u-1].unshift({type:"rectStart",color:b.parseMessage(l[u-2]),signalType:b.LINETYPE.RECT_START}),l[u-1].push({type:"rectEnd",color:b.parseMessage(l[u-2]),signalType:b.LINETYPE.RECT_END}),this.$=l[u-1];break;case 36:l[u-1].unshift({type:"optStart",optText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.OPT_START}),l[u-1].push({type:"optEnd",optText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.OPT_END}),this.$=l[u-1];break;case 37:l[u-1].unshift({type:"altStart",altText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.ALT_START}),l[u-1].push({type:"altEnd",signalType:b.LINETYPE.ALT_END}),this.$=l[u-1];break;case 38:l[u-1].unshift({type:"parStart",parText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.PAR_START}),l[u-1].push({type:"parEnd",signalType:b.LINETYPE.PAR_END}),this.$=l[u-1];break;case 39:l[u-1].unshift({type:"parStart",parText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.PAR_OVER_START}),l[u-1].push({type:"parEnd",signalType:b.LINETYPE.PAR_END}),this.$=l[u-1];break;case 40:l[u-1].unshift({type:"criticalStart",criticalText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.CRITICAL_START}),l[u-1].push({type:"criticalEnd",signalType:b.LINETYPE.CRITICAL_END}),this.$=l[u-1];break;case 41:l[u-1].unshift({type:"breakStart",breakText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.BREAK_START}),l[u-1].push({type:"breakEnd",optText:b.parseMessage(l[u-2]),signalType:b.LINETYPE.BREAK_END}),this.$=l[u-1];break;case 43:this.$=l[u-3].concat([{type:"option",optionText:b.parseMessage(l[u-1]),signalType:b.LINETYPE.CRITICAL_OPTION},l[u]]);break;case 45:this.$=l[u-3].concat([{type:"and",parText:b.parseMessage(l[u-1]),signalType:b.LINETYPE.PAR_AND},l[u]]);break;case 47:this.$=l[u-3].concat([{type:"else",altText:b.parseMessage(l[u-1]),signalType:b.LINETYPE.ALT_ELSE},l[u]]);break;case 48:l[u-3].draw="participant",l[u-3].type="addParticipant",l[u-3].description=b.parseMessage(l[u-1]),this.$=l[u-3];break;case 49:l[u-1].draw="participant",l[u-1].type="addParticipant",this.$=l[u-1];break;case 50:l[u-3].draw="actor",l[u-3].type="addParticipant",l[u-3].description=b.parseMessage(l[u-1]),this.$=l[u-3];break;case 51:l[u-1].draw="actor",l[u-1].type="addParticipant",this.$=l[u-1];break;case 52:l[u-1].type="destroyParticipant",this.$=l[u-1];break;case 53:this.$=[l[u-1],{type:"addNote",placement:l[u-2],actor:l[u-1].actor,text:l[u]}];break;case 54:l[u-2]=[].concat(l[u-1],l[u-1]).slice(0,2),l[u-2][0]=l[u-2][0].actor,l[u-2][1]=l[u-2][1].actor,this.$=[l[u-1],{type:"addNote",placement:b.PLACEMENT.OVER,actor:l[u-2].slice(0,2),text:l[u]}];break;case 55:this.$=[l[u-1],{type:"addLinks",actor:l[u-1].actor,text:l[u]}];break;case 56:this.$=[l[u-1],{type:"addALink",actor:l[u-1].actor,text:l[u]}];break;case 57:this.$=[l[u-1],{type:"addProperties",actor:l[u-1].actor,text:l[u]}];break;case 58:this.$=[l[u-1],{type:"addDetails",actor:l[u-1].actor,text:l[u]}];break;case 61:this.$=[l[u-2],l[u]];break;case 62:this.$=l[u];break;case 63:this.$=b.PLACEMENT.LEFTOF;break;case 64:this.$=b.PLACEMENT.RIGHTOF;break;case 65:this.$=[l[u-4],l[u-1],{type:"addMessage",from:l[u-4].actor,to:l[u-1].actor,signalType:l[u-3],msg:l[u],activate:!0},{type:"activeStart",signalType:b.LINETYPE.ACTIVE_START,actor:l[u-1].actor}];break;case 66:this.$=[l[u-4],l[u-1],{type:"addMessage",from:l[u-4].actor,to:l[u-1].actor,signalType:l[u-3],msg:l[u]},{type:"activeEnd",signalType:b.LINETYPE.ACTIVE_END,actor:l[u-4].actor}];break;case 67:this.$=[l[u-3],l[u-1],{type:"addMessage",from:l[u-3].actor,to:l[u-1].actor,signalType:l[u-2],msg:l[u]}];break;case 68:this.$={type:"addParticipant",actor:l[u]};break;case 69:this.$=b.LINETYPE.SOLID_OPEN;break;case 70:this.$=b.LINETYPE.DOTTED_OPEN;break;case 71:this.$=b.LINETYPE.SOLID;break;case 72:this.$=b.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=b.LINETYPE.DOTTED;break;case 74:this.$=b.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=b.LINETYPE.SOLID_CROSS;break;case 76:this.$=b.LINETYPE.DOTTED_CROSS;break;case 77:this.$=b.LINETYPE.SOLID_POINT;break;case 78:this.$=b.LINETYPE.DOTTED_POINT;break;case 79:this.$=b.parseMessage(l[u].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:o,6:r},{1:[3]},{3:5,4:e,5:o,6:r},{3:6,4:e,5:o,6:r},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],a,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:c,8:8,9:10,12:12,13:h,14:p,17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},t(y,[2,5]),{9:47,12:12,13:h,14:p,17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},t(y,[2,7]),t(y,[2,8]),t(y,[2,14]),{12:48,50:K,52:U,53:q},{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(y,[2,29]),t(y,[2,30]),{32:[1,61]},{34:[1,62]},t(y,[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(y,[2,6]),t(y,[2,15]),t(P,[2,9],{10:93}),t(y,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(y,[2,21]),{5:[1,97]},{5:[1,98]},t(y,[2,24]),t(y,[2,25]),t(y,[2,26]),t(y,[2,27]),t(y,[2,28]),t(y,[2,31]),t(y,[2,32]),t($,a,{7:99}),t($,a,{7:100}),t($,a,{7:101}),t(it,a,{40:102,7:103}),t(N,a,{42:104,7:105}),t(N,a,{7:105,42:106}),t(Jt,a,{45:107,7:108}),t($,a,{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(ot,[2,69]),t(ot,[2,70]),t(ot,[2,71]),t(ot,[2,72]),t(ot,[2,73]),t(ot,[2,74]),t(ot,[2,75]),t(ot,[2,76]),t(ot,[2,77]),t(ot,[2,78]),{22:118,70:S},{22:120,58:119,70:S},{70:[2,63]},{70:[2,64]},{56:121,81:dt},{56:123,81:dt},{56:124,81:dt},{56:125,81:dt},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:K,52:U,53:q},{5:[1,131]},t(y,[2,19]),t(y,[2,20]),t(y,[2,22]),t(y,[2,23]),{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,132],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,133],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,134],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{16:[1,135]},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,46],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,49:[1,136],50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{16:[1,137]},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,44],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,48:[1,138],50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{16:[1,139]},{16:[1,140]},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[2,42],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,47:[1,141],50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{4:i,5:c,8:8,9:10,12:12,13:h,14:p,16:[1,142],17:15,18:s,21:f,22:40,23:E,24:19,25:20,26:21,27:22,28:23,29:g,30:T,31:m,33:w,35:k,36:V,37:M,38:Y,39:C,41:z,43:H,44:Z,46:et,50:K,52:U,53:q,54:R,59:Q,60:G,61:j,62:rt,70:S},{15:[1,143]},t(y,[2,49]),{15:[1,144]},t(y,[2,51]),t(y,[2,52]),{22:145,70:S},{22:146,70:S},{56:147,81:dt},{56:148,81:dt},{56:149,81:dt},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(y,[2,16]),t(P,[2,10]),{12:151,50:K,52:U,53:q},t(P,[2,12]),t(P,[2,13]),t(y,[2,18]),t(y,[2,34]),t(y,[2,35]),t(y,[2,36]),t(y,[2,37]),{15:[1,152]},t(y,[2,38]),{15:[1,153]},t(y,[2,39]),t(y,[2,40]),{15:[1,154]},t(y,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:dt},{56:158,81:dt},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:S},t(P,[2,11]),t(it,a,{7:103,40:160}),t(N,a,{7:105,42:161}),t(Jt,a,{7:108,45:162}),t(y,[2,48]),t(y,[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:d(function(I,L){if(L.recoverable)this.trace(I);else{var A=new Error(I);throw A.hash=L,A}},"parseError"),parse:d(function(I){var L=this,A=[0],b=[],D=[null],l=[],mt=this.table,u="",Lt=0,Zt=0,Pe=2,Qt=1,Ae=l.slice.call(arguments,1),W=Object.create(this.lexer),ut={yy:{}};for(var Ot in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ot)&&(ut.yy[Ot]=this.yy[Ot]);W.setInput(I,ut.yy),ut.yy.lexer=W,ut.yy.parser=this,typeof W.yylloc>"u"&&(W.yylloc={});var Bt=W.yylloc;l.push(Bt);var ke=W.options&&W.options.ranges;typeof ut.yy.parseError=="function"?this.parseError=ut.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ne(tt){A.length=A.length-2*tt,D.length=D.length-tt,l.length=l.length-tt}d(Ne,"popStack");function jt(){var tt;return tt=b.pop()||W.lex()||Qt,typeof tt!="number"&&(tt instanceof Array&&(b=tt,tt=b.pop()),tt=L.symbols_[tt]||tt),tt}d(jt,"lex");for(var X,gt,st,Vt,yt={},Pt,ht,$t,At;;){if(gt=A[A.length-1],this.defaultActions[gt]?st=this.defaultActions[gt]:((X===null||typeof X>"u")&&(X=jt()),st=mt[gt]&&mt[gt][X]),typeof st>"u"||!st.length||!st[0]){var Yt="";At=[];for(Pt in mt[gt])this.terminals_[Pt]&&Pt>Pe&&At.push("'"+this.terminals_[Pt]+"'");W.showPosition?Yt="Parse error on line "+(Lt+1)+`: +`+W.showPosition()+` +Expecting `+At.join(", ")+", got '"+(this.terminals_[X]||X)+"'":Yt="Parse error on line "+(Lt+1)+": Unexpected "+(X==Qt?"end of input":"'"+(this.terminals_[X]||X)+"'"),this.parseError(Yt,{text:W.match,token:this.terminals_[X]||X,line:W.yylineno,loc:Bt,expected:At})}if(st[0]instanceof Array&&st.length>1)throw new Error("Parse Error: multiple actions possible at state: "+gt+", token: "+X);switch(st[0]){case 1:A.push(X),D.push(W.yytext),l.push(W.yylloc),A.push(st[1]),X=null,Zt=W.yyleng,u=W.yytext,Lt=W.yylineno,Bt=W.yylloc;break;case 2:if(ht=this.productions_[st[1]][1],yt.$=D[D.length-ht],yt._$={first_line:l[l.length-(ht||1)].first_line,last_line:l[l.length-1].last_line,first_column:l[l.length-(ht||1)].first_column,last_column:l[l.length-1].last_column},ke&&(yt._$.range=[l[l.length-(ht||1)].range[0],l[l.length-1].range[1]]),Vt=this.performAction.apply(yt,[u,Zt,Lt,ut.yy,st[1],D,l].concat(Ae)),typeof Vt<"u")return Vt;ht&&(A=A.slice(0,-1*ht*2),D=D.slice(0,-1*ht),l=l.slice(0,-1*ht)),A.push(this.productions_[st[1]][0]),D.push(yt.$),l.push(yt._$),$t=mt[A[A.length-2]][A[A.length-1]],A.push($t);break;case 3:return!0}}return!0},"parse")},Le=function(){var pt={EOF:1,parseError:d(function(L,A){if(this.yy.parser)this.yy.parser.parseError(L,A);else throw new Error(L)},"parseError"),setInput:d(function(I,L){return this.yy=L||this.yy||{},this._input=I,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:d(function(){var I=this._input[0];this.yytext+=I,this.yyleng++,this.offset++,this.match+=I,this.matched+=I;var L=I.match(/(?:\r\n?|\n).*/g);return L?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),I},"input"),unput:d(function(I){var L=I.length,A=I.split(/(?:\r\n?|\n)/g);this._input=I+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-L),this.offset-=L;var b=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 D=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===b.length?this.yylloc.first_column:0)+b[b.length-A.length].length-A[0].length:this.yylloc.first_column-L},this.options.ranges&&(this.yylloc.range=[D[0],D[0]+this.yyleng-L]),this.yyleng=this.yytext.length,this},"unput"),more:d(function(){return this._more=!0,this},"more"),reject:d(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:d(function(I){this.unput(this.match.slice(I))},"less"),pastInput:d(function(){var I=this.matched.substr(0,this.matched.length-this.match.length);return(I.length>20?"...":"")+I.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:d(function(){var I=this.match;return I.length<20&&(I+=this._input.substr(0,20-I.length)),(I.substr(0,20)+(I.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:d(function(){var I=this.pastInput(),L=new Array(I.length+1).join("-");return I+this.upcomingInput()+` +`+L+"^"},"showPosition"),test_match:d(function(I,L){var A,b,D;if(this.options.backtrack_lexer&&(D={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&&(D.yylloc.range=this.yylloc.range.slice(0))),b=I[0].match(/(?:\r\n?|\n).*/g),b&&(this.yylineno+=b.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:b?b[b.length-1].length-b[b.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+I[0].length},this.yytext+=I[0],this.match+=I[0],this.matches=I,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(I[0].length),this.matched+=I[0],A=this.performAction.call(this,this.yy,this,L,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),A)return A;if(this._backtrack){for(var l in D)this[l]=D[l];return!1}return!1},"test_match"),next:d(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var I,L,A,b;this._more||(this.yytext="",this.match="");for(var D=this._currentRules(),l=0;lL[0].length)){if(L=A,b=l,this.options.backtrack_lexer){if(I=this.test_match(A,D[l]),I!==!1)return I;if(this._backtrack){L=!1;continue}else return!1}else if(!this.options.flex)break}return L?(I=this.test_match(L,D[b]),I!==!1?I:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:d(function(){var L=this.next();return L||this.lex()},"lex"),begin:d(function(L){this.conditionStack.push(L)},"begin"),popState:d(function(){var L=this.conditionStack.length-1;return L>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:d(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:d(function(L){return L=this.conditionStack.length-1-Math.abs(L||0),L>=0?this.conditionStack[L]:"INITIAL"},"topState"),pushState:d(function(L){this.begin(L)},"pushState"),stateStackSize:d(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:d(function(L,A,b,D){switch(b){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;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 A.yytext=A.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 51:return 5;case 52:return A.yytext=A.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:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67: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],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],inclusive:!0}}};return pt}();Ct.lexer=Le;function _t(){this.yy={}}return d(_t,"Parser"),_t.prototype=Ct,Ct.Parser=_t,new _t}();Wt.parser=Wt;var Ke=Wt,v=new Ce(()=>({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})),Ue=d(function(t){v.records.boxes.push({name:t.text,wrap:t.wrap??xt(),fill:t.color,actorKeys:[]}),v.records.currentBox=v.records.boxes.slice(-1)[0]},"addBox"),qt=d(function(t,e,o,r){let a=v.records.currentBox;const i=v.records.actors.get(t);if(i){if(v.records.currentBox&&i.box&&v.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 '${v.records.currentBox.name}' at the same time.`);if(a=i.box?i.box:v.records.currentBox,i.box=a,i&&e===i.name&&o==null)return}if((o==null?void 0:o.text)==null&&(o={text:e,type:r}),(r==null||o.text==null)&&(o={text:e,type:r}),v.records.actors.set(t,{box:a,name:e,description:o.text,wrap:o.wrap??xt(),prevActor:v.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:r??"participant"}),v.records.prevActor){const c=v.records.actors.get(v.records.prevActor);c&&(c.nextActor=t)}v.records.currentBox&&v.records.currentBox.actorKeys.push(t),v.records.prevActor=t},"addActor"),Ge=d(t=>{let e,o=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},c}return v.records.messages.push({from:t,to:e,message:(o==null?void 0:o.text)??"",wrap:(o==null?void 0:o.wrap)??xt(),type:r,activate:a}),!0},"addSignal"),Je=d(function(){return v.records.boxes.length>0},"hasAtLeastOneBox"),Ze=d(function(){return v.records.boxes.some(t=>t.name)},"hasAtLeastOneBoxWithTitle"),Qe=d(function(){return v.records.messages},"getMessages"),je=d(function(){return v.records.boxes},"getBoxes"),$e=d(function(){return v.records.actors},"getActors"),t0=d(function(){return v.records.createdActors},"getCreatedActors"),e0=d(function(){return v.records.destroyedActors},"getDestroyedActors"),It=d(function(t){return v.records.actors.get(t)},"getActor"),r0=d(function(){return[...v.records.actors.keys()]},"getActorKeys"),s0=d(function(){v.records.sequenceNumbersEnabled=!0},"enableSequenceNumbers"),a0=d(function(){v.records.sequenceNumbersEnabled=!1},"disableSequenceNumbers"),i0=d(()=>v.records.sequenceNumbersEnabled,"showSequenceNumbers"),n0=d(function(t){v.records.wrapEnabled=t},"setWrap"),oe=d(t=>{if(t===void 0)return{};t=t.trim();const e=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(e===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}},"extractWrap"),xt=d(()=>{var t;return v.records.wrapEnabled!==void 0?v.records.wrapEnabled:((t=at().sequence)==null?void 0:t.wrap)??!1},"autoWrap"),o0=d(function(){v.reset(),We()},"clear"),c0=d(function(t){const e=t.trim(),{wrap:o,cleanedText:r}=oe(e),a={text:r,wrap:o};return J.debug(`parseMessage: ${JSON.stringify(a)}`),a},"parseMessage"),l0=d(function(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let o=e!=null&&e[1]?e[1].trim():"transparent",r=e!=null&&e[2]?e[2].trim():void 0;if(window!=null&&window.CSS)window.CSS.supports("color",o)||(o="transparent",r=t.trim());else{const c=new Option().style;c.color=o,c.color!==o&&(o="transparent",r=t.trim())}const{wrap:a,cleanedText:i}=oe(r);return{text:i?Mt(i,at()):void 0,color:o,wrap:a}},"parseBoxData"),vt={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},d0={FILLED:0,OPEN:1},h0={LEFTOF:0,RIGHTOF:1,OVER:2},ce=d(function(t,e,o){const r={actor:t,placement:e,message:o.text,wrap:o.wrap??xt()},a=[].concat(t,t);v.records.notes.push(r),v.records.messages.push({from:a[0],to:a[1],message:o.text,wrap:o.wrap??xt(),type:vt.NOTE,placement:e})},"addNote"),le=d(function(t,e){const o=It(t);try{let r=Mt(e.text,at());r=r.replace(/&/g,"&"),r=r.replace(/=/g,"=");const a=JSON.parse(r);Rt(o,a)}catch(r){J.error("error while parsing actor link text",r)}},"addLinks"),p0=d(function(t,e){const o=It(t);try{const r={};let a=Mt(e.text,at());const i=a.indexOf("@");a=a.replace(/&/g,"&"),a=a.replace(/=/g,"=");const c=a.slice(0,i-1).trim(),h=a.slice(i+1).trim();r[c]=h,Rt(o,r)}catch(r){J.error("error while parsing actor link text",r)}},"addALink");function Rt(t,e){if(t.links==null)t.links=e;else for(const o in e)t.links[o]=e[o]}d(Rt,"insertLinks");var de=d(function(t,e){const o=It(t);try{const r=Mt(e.text,at()),a=JSON.parse(r);Ut(o,a)}catch(r){J.error("error while parsing actor properties text",r)}},"addProperties");function Ut(t,e){if(t.properties==null)t.properties=e;else for(const o in e)t.properties[o]=e[o]}d(Ut,"insertProperties");function he(){v.records.currentBox=void 0}d(he,"boxEnd");var pe=d(function(t,e){const o=It(t),r=document.getElementById(e.text);try{const a=r.innerHTML,i=JSON.parse(a);i.properties&&Ut(o,i.properties),i.links&&Rt(o,i.links)}catch(a){J.error("error while parsing actor details text",a)}},"addDetails"),u0=d(function(t,e){if((t==null?void 0:t.properties)!==void 0)return t.properties[e]},"getActorProperty"),ue=d(function(t){if(Array.isArray(t))t.forEach(function(e){ue(e)});else switch(t.type){case"sequenceIndex":v.records.messages.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":qt(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if(v.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");v.records.lastCreated=t.actor,qt(t.actor,t.actor,t.description,t.draw),v.records.createdActors.set(t.actor,v.records.messages.length);break;case"destroyParticipant":v.records.lastDestroyed=t.actor,v.records.destroyedActors.set(t.actor,v.records.messages.length);break;case"activeStart":O(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":O(t.actor,void 0,void 0,t.signalType);break;case"addNote":ce(t.actor,t.placement,t.text);break;case"addLinks":le(t.actor,t.text);break;case"addALink":p0(t.actor,t.text);break;case"addProperties":de(t.actor,t.text);break;case"addDetails":pe(t.actor,t.text);break;case"addMessage":if(v.records.lastCreated){if(t.to!==v.records.lastCreated)throw new Error("The created participant "+v.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");v.records.lastCreated=void 0}else if(v.records.lastDestroyed){if(t.to!==v.records.lastDestroyed&&t.from!==v.records.lastDestroyed)throw new Error("The destroyed participant "+v.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");v.records.lastDestroyed=void 0}O(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":Ue(t.boxData);break;case"boxEnd":he();break;case"loopStart":O(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":O(void 0,void 0,void 0,t.signalType);break;case"rectStart":O(void 0,void 0,t.color,t.signalType);break;case"rectEnd":O(void 0,void 0,void 0,t.signalType);break;case"optStart":O(void 0,void 0,t.optText,t.signalType);break;case"optEnd":O(void 0,void 0,void 0,t.signalType);break;case"altStart":O(void 0,void 0,t.altText,t.signalType);break;case"else":O(void 0,void 0,t.altText,t.signalType);break;case"altEnd":O(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":se(t.text);break;case"parStart":O(void 0,void 0,t.parText,t.signalType);break;case"and":O(void 0,void 0,t.parText,t.signalType);break;case"parEnd":O(void 0,void 0,void 0,t.signalType);break;case"criticalStart":O(void 0,void 0,t.criticalText,t.signalType);break;case"option":O(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":O(void 0,void 0,void 0,t.signalType);break;case"breakStart":O(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":O(void 0,void 0,void 0,t.signalType);break}},"apply"),te={addActor:qt,addMessage:Xe,addSignal:O,addLinks:le,addDetails:pe,addProperties:de,autoWrap:xt,setWrap:n0,enableSequenceNumbers:s0,disableSequenceNumbers:a0,showSequenceNumbers:i0,getMessages:Qe,getActors:$e,getCreatedActors:t0,getDestroyedActors:e0,getActor:It,getActorKeys:r0,getActorProperty:u0,getAccTitle:Oe,getBoxes:je,getDiagramTitle:Be,setDiagramTitle:Ve,getConfig:d(()=>at().sequence,"getConfig"),clear:o0,parseMessage:c0,parseBoxData:l0,LINETYPE:vt,ARROWTYPE:d0,PLACEMENT:h0,addNote:ce,setAccTitle:se,apply:ue,setAccDescription:Ye,getAccDescription:Fe,hasAtLeastOneBox:Je,hasAtLeastOneBoxWithTitle:Ze},g0=d(t=>`.actor { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + + text.actor > tspan { + fill: ${t.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${t.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${t.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${t.signalColor}; + } + + #arrowhead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .sequenceNumber { + fill: ${t.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${t.signalColor}; + } + + #crosshead path { + fill: ${t.signalColor}; + stroke: ${t.signalColor}; + } + + .messageText { + fill: ${t.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${t.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${t.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${t.labelBoxBorderColor}; + fill: ${t.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${t.noteBorderColor}; + fill: ${t.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${t.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation1 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .activation2 { + fill: ${t.activationBkgColor}; + stroke: ${t.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${t.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + } + .actor-man circle, line { + stroke: ${t.actorBorder}; + fill: ${t.actorBkg}; + stroke-width: 2px; + } +`,"getStyles"),f0=g0,ft=18*2,ge="actor-top",fe="actor-bottom",x0="actor-box",ee="actor-man",Gt=d(function(t,e){return Se(t,e)},"drawRect"),T0=d(function(t,e,o,r,a){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};const i=e.links,c=e.actorCnt,h=e.rectData;var p="none";a&&(p="block !important");const s=t.append("g");s.attr("id","actor"+c+"_popup"),s.attr("class","actorPopupMenu"),s.attr("display",p);var f="";h.class!==void 0&&(f=" "+h.class);let E=h.width>o?h.width:o;const g=s.append("rect");if(g.attr("class","actorPopupMenuPanel"+f),g.attr("x",h.x),g.attr("y",h.height),g.attr("fill",h.fill),g.attr("stroke",h.stroke),g.attr("width",E),g.attr("height",h.height),g.attr("rx",h.rx),g.attr("ry",h.ry),i!=null){var T=20;for(let k in i){var m=s.append("a"),w=ae(i[k]);m.attr("xlink:href",w),m.attr("target","_blank"),D0(r)(k,m,h.x+10,h.height+T,E,20,{class:"actor"},r),T+=30}}return g.attr("height",T),{height:h.height+T,width:E}},"drawPopup"),y0=d(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),Nt=d(async function(t,e,o=null){let r=t.append("foreignObject");const a=await ie(e.text,Ft()),c=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(a).node().getBoundingClientRect();if(r.attr("height",Math.round(c.height)).attr("width",Math.round(c.width)),e.class==="noteText"){const h=t.node().firstChild;h.setAttribute("height",c.height+2*e.textMargin);const p=h.getBBox();r.attr("x",Math.round(p.x+p.width/2-c.width/2)).attr("y",Math.round(p.y+p.height/2-c.height/2))}else if(o){let{startx:h,stopx:p,starty:s}=o;if(h>p){const f=h;h=p,p=f}r.attr("x",Math.round(h+Math.abs(h-p)/2-c.width/2)),e.class==="loopText"?r.attr("y",Math.round(s)):r.attr("y",Math.round(s-c.height))}return[r]},"drawKatex"),bt=d(function(t,e){let o=0,r=0;const a=e.text.split(_.lineBreakRegex),[i,c]=ne(e.fontSize);let h=[],p=0,s=d(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":s=d(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":s=d(()=>Math.round(e.y+(o+r+e.textMargin)/2),"yfunc");break;case"bottom":case"end":s=d(()=>Math.round(e.y+(o+r+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)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";break}for(let[f,E]of a.entries()){e.textMargin!==void 0&&e.textMargin===0&&i!==void 0&&(p=f*i);const g=t.append("text");g.attr("x",e.x),g.attr("y",s()),e.anchor!==void 0&&g.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&g.style("font-family",e.fontFamily),c!==void 0&&g.style("font-size",c),e.fontWeight!==void 0&&g.style("font-weight",e.fontWeight),e.fill!==void 0&&g.attr("fill",e.fill),e.class!==void 0&&g.attr("class",e.class),e.dy!==void 0?g.attr("dy",e.dy):p!==0&&g.attr("dy",p);const T=E||He;if(e.tspan){const m=g.append("tspan");m.attr("x",e.x),e.fill!==void 0&&m.attr("fill",e.fill),m.text(T)}else g.text(T);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(r+=(g._groups||g)[0][0].getBBox().height,o=r),h.push(g)}return h},"drawText"),xe=d(function(t,e){function o(a,i,c,h,p){return a+","+i+" "+(a+c)+","+i+" "+(a+c)+","+(i+h-p)+" "+(a+c-p*1.2)+","+(i+h)+" "+a+","+(i+h)}d(o,"genPoints");const r=t.append("polygon");return r.attr("points",o(e.x,e.y,e.width,e.height,7)),r.attr("class","labelBox"),e.y=e.y+e.height/2,bt(t,e),r},"drawLabel"),ct=-1,Te=d((t,e,o,r)=>{t.select&&o.forEach(a=>{const i=e.get(a),c=t.select("#actor"+i.actorCnt);!r.mirrorActors&&i.stopy?c.attr("y2",i.stopy+i.height/2):r.mirrorActors&&c.attr("y2",i.stopy)})},"fixLifeLineHeights"),E0=d(function(t,e,o,r){var T,m;const a=r?e.stopy:e.starty,i=e.x+e.width/2,c=a+e.height,h=t.append("g").lower();var p=h;r||(ct++,Object.keys(e.links||{}).length&&!o.forceMenus&&p.attr("onclick",y0(`actor${ct}_popup`)).attr("cursor","pointer"),p.append("line").attr("id","actor"+ct).attr("x1",i).attr("y1",c).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),p=h.append("g"),e.actorCnt=ct,e.links!=null&&p.attr("id","root-"+ct));const s=St();var f="actor";(T=e.properties)!=null&&T.class?f=e.properties.class:s.fill="#eaeaea",r?f+=` ${fe}`:f+=` ${ge}`,s.x=e.x,s.y=a,s.width=e.width,s.height=e.height,s.class=f,s.rx=3,s.ry=3,s.name=e.name;const E=Gt(p,s);if(e.rectData=s,(m=e.properties)!=null&&m.icon){const w=e.properties.icon.trim();w.charAt(0)==="@"?Re(p,s.x+s.width-20,s.y+10,w.substr(1)):De(p,s.x+s.width-20,s.y+10,w)}Xt(o,lt(e.description))(e.description,p,s.x,s.y,s.width,s.height,{class:`actor ${x0}`},o);let g=e.height;if(E.node){const w=E.node().getBBox();e.height=w.height,g=w.height}return g},"drawActorTypeParticipant"),b0=d(function(t,e,o,r){const a=r?e.stopy:e.starty,i=e.x+e.width/2,c=a+80,h=t.append("g").lower();r||(ct++,h.append("line").attr("id","actor"+ct).attr("x1",i).attr("y1",c).attr("x2",i).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=ct);const p=t.append("g");let s=ee;r?s+=` ${fe}`:s+=` ${ge}`,p.attr("class",s),p.attr("name",e.name);const f=St();f.x=e.x,f.y=a,f.fill="#eaeaea",f.width=e.width,f.height=e.height,f.class="actor",f.rx=3,f.ry=3,p.append("line").attr("id","actor-man-torso"+ct).attr("x1",i).attr("y1",a+25).attr("x2",i).attr("y2",a+45),p.append("line").attr("id","actor-man-arms"+ct).attr("x1",i-ft/2).attr("y1",a+33).attr("x2",i+ft/2).attr("y2",a+33),p.append("line").attr("x1",i-ft/2).attr("y1",a+60).attr("x2",i).attr("y2",a+45),p.append("line").attr("x1",i).attr("y1",a+45).attr("x2",i+ft/2-2).attr("y2",a+60);const E=p.append("circle");E.attr("cx",e.x+e.width/2),E.attr("cy",a+10),E.attr("r",15),E.attr("width",e.width),E.attr("height",e.height);const g=p.node().getBBox();return e.height=g.height,Xt(o,lt(e.description))(e.description,p,f.x,f.y+35,f.width,f.height,{class:`actor ${ee}`},o),e.height},"drawActorTypeActor"),m0=d(async function(t,e,o,r){switch(e.type){case"actor":return await b0(t,e,o,r);case"participant":return await E0(t,e,o,r)}},"drawActor"),v0=d(function(t,e,o){const a=t.append("g");ye(a,e),e.name&&Xt(o)(e.name,a,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},o),a.lower()},"drawBox"),w0=d(function(t){return t.append("g")},"anchorElement"),I0=d(function(t,e,o,r,a){const i=St(),c=e.anchored;i.x=e.startx,i.y=e.starty,i.class="activation"+a%3,i.width=e.stopx-e.startx,i.height=o-e.starty,Gt(c,i)},"drawActivation"),_0=d(async function(t,e,o,r){const{boxMargin:a,boxTextMargin:i,labelBoxHeight:c,labelBoxWidth:h,messageFontFamily:p,messageFontSize:s,messageFontWeight:f}=r,E=t.append("g"),g=d(function(w,k,V,M){return E.append("line").attr("x1",w).attr("y1",k).attr("x2",V).attr("y2",M).attr("class","loopLine")},"drawLoopLine");g(e.startx,e.starty,e.stopx,e.starty),g(e.stopx,e.starty,e.stopx,e.stopy),g(e.startx,e.stopy,e.stopx,e.stopy),g(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(w){g(e.startx,w.y,e.stopx,w.y).style("stroke-dasharray","3, 3")});let T=Kt();T.text=o,T.x=e.startx,T.y=e.starty,T.fontFamily=p,T.fontSize=s,T.fontWeight=f,T.anchor="middle",T.valign="middle",T.tspan=!1,T.width=h||50,T.height=c||20,T.textMargin=i,T.class="labelText",xe(E,T),T=Ee(),T.text=e.title,T.x=e.startx+h/2+(e.stopx-e.startx)/2,T.y=e.starty+a+i,T.anchor="middle",T.valign="middle",T.textMargin=i,T.class="loopText",T.fontFamily=p,T.fontSize=s,T.fontWeight=f,T.wrap=!0;let m=lt(T.text)?await Nt(E,T,e):bt(E,T);if(e.sectionTitles!==void 0){for(const[w,k]of Object.entries(e.sectionTitles))if(k.message){T.text=k.message,T.x=e.startx+(e.stopx-e.startx)/2,T.y=e.sections[w].y+a+i,T.class="loopText",T.anchor="middle",T.valign="middle",T.tspan=!1,T.fontFamily=p,T.fontSize=s,T.fontWeight=f,T.wrap=e.wrap,lt(T.text)?(e.starty=e.sections[w].y,await Nt(E,T,e)):bt(E,T);let V=Math.round(m.map(M=>(M._groups||M)[0][0].getBBox().height).reduce((M,Y)=>M+Y));e.sections[w].height+=V-(a+i)}}return e.height=Math.round(e.stopy-e.starty),E},"drawLoop"),ye=d(function(t,e){Me(t,e)},"drawBackgroundRect"),L0=d(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"),P0=d(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"),A0=d(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"),k0=d(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"),N0=d(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"),S0=d(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"),M0=d(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"),Ee=d(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"),R0=d(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),Xt=function(){function t(i,c,h,p,s,f,E){const g=c.append("text").attr("x",h+s/2).attr("y",p+f/2+5).style("text-anchor","middle").text(i);a(g,E)}d(t,"byText");function e(i,c,h,p,s,f,E,g){const{actorFontSize:T,actorFontFamily:m,actorFontWeight:w}=g,[k,V]=ne(T),M=i.split(_.lineBreakRegex);for(let Y=0;Yt.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:d(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:d(function(t){this.boxes.push(t)},"addBox"),addActor:d(function(t){this.actors.push(t)},"addActor"),addLoop:d(function(t){this.loops.push(t)},"addLoop"),addMessage:d(function(t){this.messages.push(t)},"addMessage"),addNote:d(function(t){this.notes.push(t)},"addNote"),lastActor:d(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:d(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:d(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:d(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:d(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,ve(at())},"init"),updateVal:d(function(t,e,o,r){t[e]===void 0?t[e]=o:t[e]=r(o,t[e])},"updateVal"),updateBounds:d(function(t,e,o,r){const a=this;let i=0;function c(h){return d(function(s){i++;const f=a.sequenceItems.length-i+1;a.updateVal(s,"starty",e-f*n.boxMargin,Math.min),a.updateVal(s,"stopy",r+f*n.boxMargin,Math.max),a.updateVal(x.data,"startx",t-f*n.boxMargin,Math.min),a.updateVal(x.data,"stopx",o+f*n.boxMargin,Math.max),h!=="activation"&&(a.updateVal(s,"startx",t-f*n.boxMargin,Math.min),a.updateVal(s,"stopx",o+f*n.boxMargin,Math.max),a.updateVal(x.data,"starty",e-f*n.boxMargin,Math.min),a.updateVal(x.data,"stopy",r+f*n.boxMargin,Math.max))},"updateItemBounds")}d(c,"updateFn"),this.sequenceItems.forEach(c()),this.activations.forEach(c("activation"))},"updateBounds"),insert:d(function(t,e,o,r){const a=_.getMin(t,o),i=_.getMax(t,o),c=_.getMin(e,r),h=_.getMax(e,r);this.updateVal(x.data,"startx",a,Math.min),this.updateVal(x.data,"starty",c,Math.min),this.updateVal(x.data,"stopx",i,Math.max),this.updateVal(x.data,"stopy",h,Math.max),this.updateBounds(a,c,i,h)},"insert"),newActivation:d(function(t,e,o){const r=o.get(t.from),a=Dt(t.from).length||0,i=r.x+r.width/2+(a-1)*n.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+n.activationWidth,stopy:void 0,actor:t.from,anchored:B.anchorElement(e)})},"newActivation"),endActivation:d(function(t){const e=this.activations.map(function(o){return o.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:d(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:d(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:d(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:d(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:d(function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:x.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:d(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:d(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:d(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=_.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:d(function(){return this.verticalPos},"getVerticalPos"),getBounds:d(function(){return{bounds:this.data,models:this.models}},"getBounds")},C0=d(async function(t,e){x.bumpVerticalPos(n.boxMargin),e.height=n.boxMargin,e.starty=x.getVerticalPos();const o=St();o.x=e.startx,o.y=e.starty,o.width=e.width||n.width,o.class="note";const r=t.append("g"),a=B.drawRect(r,o),i=Kt();i.x=e.startx,i.y=e.starty,i.width=o.width,i.dy="1em",i.text=e.message,i.class="noteText",i.fontFamily=n.noteFontFamily,i.fontSize=n.noteFontSize,i.fontWeight=n.noteFontWeight,i.anchor=n.noteAlign,i.textMargin=n.noteMargin,i.valign="center";const c=lt(i.text)?await Nt(r,i):bt(r,i),h=Math.round(c.map(p=>(p._groups||p)[0][0].getBBox().height).reduce((p,s)=>p+s));a.attr("height",h+2*n.noteMargin),e.height+=h+2*n.noteMargin,x.bumpVerticalPos(h+2*n.noteMargin),e.stopy=e.starty+h+2*n.noteMargin,e.stopx=e.startx+o.width,x.insert(e.startx,e.starty,e.stopx,e.stopy),x.models.addNote(e)},"drawNote"),Tt=d(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),Et=d(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),zt=d(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");async function be(t,e){x.bumpVerticalPos(10);const{startx:o,stopx:r,message:a}=e,i=_.splitBreaks(a).length,c=lt(a),h=c?await wt(a,at()):F.calculateTextDimensions(a,Tt(n));if(!c){const E=h.height/i;e.height+=E,x.bumpVerticalPos(E)}let p,s=h.height-10;const f=h.width;if(o===r){p=x.getVerticalPos()+s,n.rightAngles||(s+=n.boxMargin,p=x.getVerticalPos()+s),s+=30;const E=_.getMax(f/2,n.width/2);x.insert(o-E,x.getVerticalPos()-10+s,r+E,x.getVerticalPos()+30+s)}else s+=n.boxMargin,p=x.getVerticalPos()+s,x.insert(o,p-10,r,p);return x.bumpVerticalPos(s),e.height+=s,e.stopy=e.starty+e.height,x.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),p}d(be,"boundMessage");var O0=d(async function(t,e,o,r){const{startx:a,stopx:i,starty:c,message:h,type:p,sequenceIndex:s,sequenceVisible:f}=e,E=F.calculateTextDimensions(h,Tt(n)),g=Kt();g.x=a,g.y=c+10,g.width=i-a,g.class="messageText",g.dy="1em",g.text=h,g.fontFamily=n.messageFontFamily,g.fontSize=n.messageFontSize,g.fontWeight=n.messageFontWeight,g.anchor=n.messageAlign,g.valign="center",g.textMargin=n.wrapPadding,g.tspan=!1,lt(g.text)?await Nt(t,g,{startx:a,stopx:i,starty:o}):bt(t,g);const T=E.width;let m;a===i?n.rightAngles?m=t.append("path").attr("d",`M ${a},${o} H ${a+_.getMax(n.width/2,T/2)} V ${o+25} H ${a}`):m=t.append("path").attr("d","M "+a+","+o+" C "+(a+60)+","+(o-10)+" "+(a+60)+","+(o+30)+" "+a+","+(o+20)):(m=t.append("line"),m.attr("x1",a),m.attr("y1",o),m.attr("x2",i),m.attr("y2",o)),p===r.db.LINETYPE.DOTTED||p===r.db.LINETYPE.DOTTED_CROSS||p===r.db.LINETYPE.DOTTED_POINT||p===r.db.LINETYPE.DOTTED_OPEN||p===r.db.LINETYPE.BIDIRECTIONAL_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let w="";n.arrowMarkerAbsolute&&(w=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,w=w.replace(/\(/g,"\\("),w=w.replace(/\)/g,"\\)")),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),(p===r.db.LINETYPE.SOLID||p===r.db.LINETYPE.DOTTED)&&m.attr("marker-end","url("+w+"#arrowhead)"),(p===r.db.LINETYPE.BIDIRECTIONAL_SOLID||p===r.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(m.attr("marker-start","url("+w+"#arrowhead)"),m.attr("marker-end","url("+w+"#arrowhead)")),(p===r.db.LINETYPE.SOLID_POINT||p===r.db.LINETYPE.DOTTED_POINT)&&m.attr("marker-end","url("+w+"#filled-head)"),(p===r.db.LINETYPE.SOLID_CROSS||p===r.db.LINETYPE.DOTTED_CROSS)&&m.attr("marker-end","url("+w+"#crosshead)"),(f||n.showSequenceNumbers)&&(m.attr("marker-start","url("+w+"#sequencenumber)"),t.append("text").attr("x",a).attr("y",o+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(s))},"drawMessage"),B0=d(function(t,e,o,r,a,i,c){let h=0,p=0,s,f=0;for(const E of r){const g=e.get(E),T=g.box;s&&s!=T&&(c||x.models.addBox(s),p+=n.boxMargin+s.margin),T&&T!=s&&(c||(T.x=h+p,T.y=a),p+=T.margin),g.width=g.width||n.width,g.height=_.getMax(g.height||n.height,n.height),g.margin=g.margin||n.actorMargin,f=_.getMax(f,g.height),o.get(g.name)&&(p+=g.width/2),g.x=h+p,g.starty=x.getVerticalPos(),x.insert(g.x,a,g.x+g.width,g.height),h+=g.width+p,g.box&&(g.box.width=h+T.margin-g.box.x),p=g.margin,s=g.box,x.models.addActor(g)}s&&!c&&x.models.addBox(s),x.bumpVerticalPos(f)},"addActorRenderingData"),Ht=d(async function(t,e,o,r){if(r){let a=0;x.bumpVerticalPos(n.boxMargin*2);for(const i of o){const c=e.get(i);c.stopy||(c.stopy=x.getVerticalPos());const h=await B.drawActor(t,c,n,!0);a=_.getMax(a,h)}x.bumpVerticalPos(a+n.boxMargin)}else for(const a of o){const i=e.get(a);await B.drawActor(t,i,n,!1)}},"drawActors"),me=d(function(t,e,o,r){let a=0,i=0;for(const c of o){const h=e.get(c),p=Y0(h),s=B.drawPopup(t,h,p,n,n.forceMenus,r);s.height>a&&(a=s.height),s.width+h.x>i&&(i=s.width+h.x)}return{maxHeight:a,maxWidth:i}},"drawActorsPopup"),ve=d(function(t){qe(n,t),t.fontFamily&&(n.actorFontFamily=n.noteFontFamily=n.messageFontFamily=t.fontFamily),t.fontSize&&(n.actorFontSize=n.noteFontSize=n.messageFontSize=t.fontSize),t.fontWeight&&(n.actorFontWeight=n.noteFontWeight=n.messageFontWeight=t.fontWeight)},"setConf"),Dt=d(function(t){return x.activations.filter(function(e){return e.actor===t})},"actorActivations"),re=d(function(t,e){const o=e.get(t),r=Dt(t),a=r.reduce(function(c,h){return _.getMin(c,h.startx)},o.x+o.width/2-1),i=r.reduce(function(c,h){return _.getMax(c,h.stopx)},o.x+o.width/2+1);return[a,i]},"activationBounds");function nt(t,e,o,r,a){x.bumpVerticalPos(o);let i=r;if(e.id&&e.message&&t[e.id]){const c=t[e.id].width,h=Tt(n);e.message=F.wrapLabel(`[${e.message}]`,c-2*n.wrapPadding,h),e.width=c,e.wrap=!0;const p=F.calculateTextDimensions(e.message,h),s=_.getMax(p.height,n.labelBoxHeight);i=r+s,J.debug(`${s} - ${e.message}`)}a(e),x.bumpVerticalPos(i)}d(nt,"adjustLoopHeightForWrap");function we(t,e,o,r,a,i,c){function h(s,f){s.x{y.add(P.from),y.add(P.to)}),m=m.filter(P=>y.has(P))}B0(s,f,E,m,0,w,!1);const C=await q0(w,f,Y,r);B.insertArrowHead(s),B.insertArrowCrossHead(s),B.insertArrowFilledHead(s),B.insertSequenceNumber(s);function z(y,P){const $=x.endActivation(y);$.starty+18>P&&($.starty=P-6,P+=12),B.drawActivation(s,$,P,n,Dt(y.from).length),x.insert($.startx,P-10,$.stopx,P)}d(z,"activeEnd");let H=1,Z=1;const et=[],K=[];let U=0;for(const y of w){let P,$,it;switch(y.type){case r.db.LINETYPE.NOTE:x.resetVerticalPos(),$=y.noteModel,await C0(s,$);break;case r.db.LINETYPE.ACTIVE_START:x.newActivation(y,s,f);break;case r.db.LINETYPE.ACTIVE_END:z(y,x.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N));break;case r.db.LINETYPE.LOOP_END:P=x.endLoop(),await B.drawLoop(s,P,"loop",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;case r.db.LINETYPE.RECT_START:nt(C,y,n.boxMargin,n.boxMargin,N=>x.newLoop(void 0,N.message));break;case r.db.LINETYPE.RECT_END:P=x.endLoop(),K.push(P),x.models.addLoop(P),x.bumpVerticalPos(P.stopy-x.getVerticalPos());break;case r.db.LINETYPE.OPT_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N));break;case r.db.LINETYPE.OPT_END:P=x.endLoop(),await B.drawLoop(s,P,"opt",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;case r.db.LINETYPE.ALT_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N));break;case r.db.LINETYPE.ALT_ELSE:nt(C,y,n.boxMargin+n.boxTextMargin,n.boxMargin,N=>x.addSectionToLoop(N));break;case r.db.LINETYPE.ALT_END:P=x.endLoop(),await B.drawLoop(s,P,"alt",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N)),x.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:nt(C,y,n.boxMargin+n.boxTextMargin,n.boxMargin,N=>x.addSectionToLoop(N));break;case r.db.LINETYPE.PAR_END:P=x.endLoop(),await B.drawLoop(s,P,"par",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;case r.db.LINETYPE.AUTONUMBER:H=y.message.start||H,Z=y.message.step||Z,y.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N));break;case r.db.LINETYPE.CRITICAL_OPTION:nt(C,y,n.boxMargin+n.boxTextMargin,n.boxMargin,N=>x.addSectionToLoop(N));break;case r.db.LINETYPE.CRITICAL_END:P=x.endLoop(),await B.drawLoop(s,P,"critical",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;case r.db.LINETYPE.BREAK_START:nt(C,y,n.boxMargin,n.boxMargin+n.boxTextMargin,N=>x.newLoop(N));break;case r.db.LINETYPE.BREAK_END:P=x.endLoop(),await B.drawLoop(s,P,"break",n),x.bumpVerticalPos(P.stopy-x.getVerticalPos()),x.models.addLoop(P);break;default:try{it=y.msgModel,it.starty=x.getVerticalPos(),it.sequenceIndex=H,it.sequenceVisible=r.db.showSequenceNumbers();const N=await be(s,it);we(y,it,N,U,f,E,g),et.push({messageModel:it,lineStartY:N}),x.models.addMessage(it)}catch(N){J.error("error while drawing message",N)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(y.type)&&(H=H+Z),U++}J.debug("createdActors",E),J.debug("destroyedActors",g),await Ht(s,f,m,!1);for(const y of et)await O0(s,y.messageModel,y.lineStartY,r);n.mirrorActors&&await Ht(s,f,m,!0),K.forEach(y=>B.drawBackgroundRect(s,y)),Te(s,f,m,n);for(const y of x.models.boxes)y.height=x.getVerticalPos()-y.y,x.insert(y.x,y.y,y.x+y.width,y.height),y.startx=y.x,y.starty=y.y,y.stopx=y.startx+y.width,y.stopy=y.starty+y.height,y.stroke="rgb(0,0,0, 0.5)",B.drawBox(s,y,n);V&&x.bumpVerticalPos(n.boxMargin);const q=me(s,f,m,p),{bounds:R}=x.getBounds();R.startx===void 0&&(R.startx=0),R.starty===void 0&&(R.starty=0),R.stopx===void 0&&(R.stopx=0),R.stopy===void 0&&(R.stopy=0);let Q=R.stopy-R.starty;Q{const c=Tt(n);let h=i.actorKeys.reduce((f,E)=>f+=t.get(E).width+(t.get(E).margin||0),0);h-=2*n.boxTextMargin,i.wrap&&(i.name=F.wrapLabel(i.name,h-2*n.wrapPadding,c));const p=F.calculateTextDimensions(i.name,c);a=_.getMax(p.height,a);const s=_.getMax(h,p.width+2*n.wrapPadding);if(i.margin=n.boxTextMargin,hi.textMaxHeight=a),_.getMax(r,n.height)}d(_e,"calculateActorMargins");var F0=d(async function(t,e,o){const r=e.get(t.from),a=e.get(t.to),i=r.x,c=a.x,h=t.wrap&&t.message;let p=lt(t.message)?await wt(t.message,at()):F.calculateTextDimensions(h?F.wrapLabel(t.message,n.width,Et(n)):t.message,Et(n));const s={width:h?n.width:_.getMax(n.width,p.width+2*n.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===o.db.PLACEMENT.RIGHTOF?(s.width=h?_.getMax(n.width,p.width):_.getMax(r.width/2+a.width/2,p.width+2*n.noteMargin),s.startx=i+(r.width+n.actorMargin)/2):t.placement===o.db.PLACEMENT.LEFTOF?(s.width=h?_.getMax(n.width,p.width+2*n.noteMargin):_.getMax(r.width/2+a.width/2,p.width+2*n.noteMargin),s.startx=i-s.width+(r.width-n.actorMargin)/2):t.to===t.from?(p=F.calculateTextDimensions(h?F.wrapLabel(t.message,_.getMax(n.width,r.width),Et(n)):t.message,Et(n)),s.width=h?_.getMax(n.width,r.width):_.getMax(r.width,n.width,p.width+2*n.noteMargin),s.startx=i+(r.width-s.width)/2):(s.width=Math.abs(i+r.width/2-(c+a.width/2))+n.actorMargin,s.startx=i2,E=d(w=>h?-w:w,"adjustValue");t.from===t.to?s=p:(t.activate&&!f&&(s+=E(n.activationWidth/2-1)),[o.db.LINETYPE.SOLID_OPEN,o.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(s+=E(3)),[o.db.LINETYPE.BIDIRECTIONAL_SOLID,o.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(p-=E(3)));const g=[r,a,i,c],T=Math.abs(p-s);t.wrap&&t.message&&(t.message=F.wrapLabel(t.message,_.getMax(T+2*n.wrapPadding,n.width),Tt(n)));const m=F.calculateTextDimensions(t.message,Tt(n));return{width:_.getMax(t.wrap?0:m.width+2*n.wrapPadding,T+2*n.wrapPadding,n.width),height:0,startx:p,stopx:s,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,g),toBounds:Math.max.apply(null,g)}},"buildMessageModel"),q0=d(async function(t,e,o,r){const a={},i=[];let c,h,p;for(const s of t){switch(s.id=F.random({length:10}),s.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:s.id,msg:s.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:s.message&&(c=i.pop(),a[c.id]=c,a[s.id]=c,i.push(c));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:c=i.pop(),a[c.id]=c;break;case r.db.LINETYPE.ACTIVE_START:{const E=e.get(s.from?s.from:s.to.actor),g=Dt(s.from?s.from:s.to.actor).length,T=E.x+E.width/2+(g-1)*n.activationWidth/2,m={startx:T,stopx:T+n.activationWidth,actor:s.from,enabled:!0};x.activations.push(m)}break;case r.db.LINETYPE.ACTIVE_END:{const E=x.activations.map(g=>g.actor).lastIndexOf(s.from);x.activations.splice(E,1).splice(0,1)}break}s.placement!==void 0?(h=await F0(s,e,r),s.noteModel=h,i.forEach(E=>{c=E,c.from=_.getMin(c.from,h.startx),c.to=_.getMax(c.to,h.startx+h.width),c.width=_.getMax(c.width,Math.abs(c.from-c.to))-n.labelBoxWidth})):(p=W0(s,e,r),s.msgModel=p,p.startx&&p.stopx&&i.length>0&&i.forEach(E=>{if(c=E,p.startx===p.stopx){const g=e.get(s.from),T=e.get(s.to);c.from=_.getMin(g.x-p.width/2,g.x-g.width/2,c.from),c.to=_.getMax(T.x+p.width/2,T.x+g.width/2,c.to),c.width=_.getMax(c.width,Math.abs(c.to-c.from))-n.labelBoxWidth}else c.from=_.getMin(p.startx,c.from),c.to=_.getMax(p.stopx,c.to),c.width=_.getMax(c.width,p.width)-n.labelBoxWidth}))}return x.activations=[],J.debug("Loop type widths:",a),a},"calculateLoopBounds"),z0={bounds:x,drawActors:Ht,drawActorsPopup:me,setConf:ve,draw:V0},J0={parser:Ke,db:te,renderer:z0,styles:f0,init:d(({wrap:t})=>{te.setWrap(t)},"init")};export{J0 as diagram}; diff --git a/assets/chunks/stateDiagram-MAYHULR4.2fsE_yAm.js b/assets/chunks/stateDiagram-MAYHULR4.2fsE_yAm.js new file mode 100644 index 00000000..4d09a293 --- /dev/null +++ b/assets/chunks/stateDiagram-MAYHULR4.2fsE_yAm.js @@ -0,0 +1 @@ +import{s as W,a as N,b as P}from"./chunk-7U56Z5CX.3DFBXZZA.js";import{_ as u,d as t,j as H,l as S,k as C,e as z,a1 as U,a8 as F,v as O}from"../app.BCWCbnje.js";import{G as J}from"./graph.DlH8fBwT.js";import{l as X}from"./layout.BFk54v6v.js";import"./chunk-5HRBRIJM.BLuRsvWo.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";import"./baseUniq.CLqXXsun.js";import"./basePickBy.B1urSlEm.js";var L={},D=u((e,i)=>{L[e]=i},"set"),Y=u(e=>L[e],"get"),G=u(()=>Object.keys(L),"keys"),I=u(()=>G().length,"size"),$={get:Y,set:D,keys:G,size:I},j=u(e=>e.append("circle").attr("class","start-state").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit).attr("cy",t().state.padding+t().state.sizeUnit),"drawStartState"),q=u(e=>e.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",t().state.textHeight).attr("class","divider").attr("x2",t().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),Z=u((e,i)=>{const d=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+2*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),o=d.node().getBBox();return e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",o.width+2*t().state.padding).attr("height",o.height+2*t().state.padding).attr("rx",t().state.radius),d},"drawSimpleState"),K=u((e,i)=>{const d=u(function(l,B,m){const k=l.append("tspan").attr("x",2*t().state.padding).text(B);m||k.attr("dy",t().state.textHeight)},"addTspan"),n=e.append("text").attr("x",2*t().state.padding).attr("y",t().state.textHeight+1.3*t().state.padding).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.descriptions[0]).node().getBBox(),g=n.height,p=e.append("text").attr("x",t().state.padding).attr("y",g+t().state.padding*.4+t().state.dividerMargin+t().state.textHeight).attr("class","state-description");let a=!0,s=!0;i.descriptions.forEach(function(l){a||(d(p,l,s),s=!1),a=!1});const y=e.append("line").attr("x1",t().state.padding).attr("y1",t().state.padding+g+t().state.dividerMargin/2).attr("y2",t().state.padding+g+t().state.dividerMargin/2).attr("class","descr-divider"),x=p.node().getBBox(),c=Math.max(x.width,n.width);return y.attr("x2",c+3*t().state.padding),e.insert("rect",":first-child").attr("x",t().state.padding).attr("y",t().state.padding).attr("width",c+2*t().state.padding).attr("height",x.height+g+2*t().state.padding).attr("rx",t().state.radius),e},"drawDescrState"),Q=u((e,i,d)=>{const o=t().state.padding,n=2*t().state.padding,g=e.node().getBBox(),p=g.width,a=g.x,s=e.append("text").attr("x",0).attr("y",t().state.titleShift).attr("font-size",t().state.fontSize).attr("class","state-title").text(i.id),x=s.node().getBBox().width+n;let c=Math.max(x,p);c===p&&(c=c+n);let l;const B=e.node().getBBox();i.doc,l=a-o,x>p&&(l=(p-c)/2+o),Math.abs(a-B.x)p&&(l=a-(x-p)/2);const m=1-t().state.textHeight;return e.insert("rect",":first-child").attr("x",l).attr("y",m).attr("class",d?"alt-composit":"composit").attr("width",c).attr("height",B.height+t().state.textHeight+t().state.titleShift+1).attr("rx","0"),s.attr("x",l+o),x<=p&&s.attr("x",a+(c-n)/2-x/2+o),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",c).attr("height",t().state.textHeight*3).attr("rx",t().state.radius),e.insert("rect",":first-child").attr("x",l).attr("y",t().state.titleShift-t().state.textHeight-t().state.padding).attr("width",c).attr("height",B.height+3+2*t().state.textHeight).attr("rx",t().state.radius),e},"addTitleAndBox"),V=u(e=>(e.append("circle").attr("class","end-state-outer").attr("r",t().state.sizeUnit+t().state.miniPadding).attr("cx",t().state.padding+t().state.sizeUnit+t().state.miniPadding).attr("cy",t().state.padding+t().state.sizeUnit+t().state.miniPadding),e.append("circle").attr("class","end-state-inner").attr("r",t().state.sizeUnit).attr("cx",t().state.padding+t().state.sizeUnit+2).attr("cy",t().state.padding+t().state.sizeUnit+2)),"drawEndState"),tt=u((e,i)=>{let d=t().state.forkWidth,o=t().state.forkHeight;if(i.parentId){let n=d;d=o,o=n}return e.append("rect").style("stroke","black").style("fill","black").attr("width",d).attr("height",o).attr("x",t().state.padding).attr("y",t().state.padding)},"drawForkJoinState"),et=u((e,i,d,o)=>{let n=0;const g=o.append("text");g.style("text-anchor","start"),g.attr("class","noteText");let p=e.replace(/\r\n/g,"
    ");p=p.replace(/\n/g,"
    ");const a=p.split(z.lineBreakRegex);let s=1.25*t().state.noteMargin;for(const y of a){const x=y.trim();if(x.length>0){const c=g.append("tspan");if(c.text(x),s===0){const l=c.node().getBBox();s+=l.height}n+=s,c.attr("x",i+t().state.noteMargin),c.attr("y",d+n+1.25*t().state.noteMargin)}}return{textWidth:g.node().getBBox().width,textHeight:n}},"_drawLongText"),at=u((e,i)=>{i.attr("class","state-note");const d=i.append("rect").attr("x",0).attr("y",t().state.padding),o=i.append("g"),{textWidth:n,textHeight:g}=et(e,0,0,o);return d.attr("height",g+2*t().state.noteMargin),d.attr("width",n+t().state.noteMargin*2),d},"drawNote"),_=u(function(e,i){const d=i.id,o={id:d,label:i.id,width:0,height:0},n=e.append("g").attr("id",d).attr("class","stateGroup");i.type==="start"&&j(n),i.type==="end"&&V(n),(i.type==="fork"||i.type==="join")&&tt(n,i),i.type==="note"&&at(i.note.text,n),i.type==="divider"&&q(n),i.type==="default"&&i.descriptions.length===0&&Z(n,i),i.type==="default"&&i.descriptions.length>0&&K(n,i);const g=n.node().getBBox();return o.width=g.width+2*t().state.padding,o.height=g.height+2*t().state.padding,$.set(d,o),o},"drawState"),A=0,it=u(function(e,i,d){const o=u(function(s){switch(s){case N.relationType.AGGREGATION:return"aggregation";case N.relationType.EXTENSION:return"extension";case N.relationType.COMPOSITION:return"composition";case N.relationType.DEPENDENCY:return"dependency"}},"getRelationType");i.points=i.points.filter(s=>!Number.isNaN(s.y));const n=i.points,g=U().x(function(s){return s.x}).y(function(s){return s.y}).curve(F),p=e.append("path").attr("d",g(n)).attr("id","edge"+A).attr("class","transition");let a="";if(t().state.arrowMarkerAbsolute&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replace(/\(/g,"\\("),a=a.replace(/\)/g,"\\)")),p.attr("marker-end","url("+a+"#"+o(N.relationType.DEPENDENCY)+"End)"),d.title!==void 0){const s=e.append("g").attr("class","stateLabel"),{x:y,y:x}=O.calcLabelPosition(i.points),c=z.getRows(d.title);let l=0;const B=[];let m=0,k=0;for(let f=0;f<=c.length;f++){const h=s.append("text").attr("text-anchor","middle").text(c[f]).attr("x",y).attr("y",x+l),w=h.node().getBBox();m=Math.max(m,w.width),k=Math.min(k,w.x),S.info(w.x,y,x+l),l===0&&(l=h.node().getBBox().height,S.info("Title height",l,x)),B.push(h)}let E=l*c.length;if(c.length>1){const f=(c.length-1)*l*.5;B.forEach((h,w)=>h.attr("y",x+w*l-f)),E=l*c.length}const r=s.node().getBBox();s.insert("rect",":first-child").attr("class","box").attr("x",y-m/2-t().state.padding/2).attr("y",x-E/2-t().state.padding/2-3.5).attr("width",m+t().state.padding).attr("height",E+t().state.padding),S.info(r)}A++},"drawEdge"),b,T={},rt=u(function(){},"setConf"),nt=u(function(e){e.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"),st=u(function(e,i,d,o){b=t().state;const n=t().securityLevel;let g;n==="sandbox"&&(g=H("#i"+i));const p=n==="sandbox"?H(g.nodes()[0].contentDocument.body):H("body"),a=n==="sandbox"?g.nodes()[0].contentDocument:document;S.debug("Rendering diagram "+e);const s=p.select(`[id='${i}']`);nt(s);const y=o.db.getRootDoc();R(y,s,void 0,!1,p,a,o);const x=b.padding,c=s.node().getBBox(),l=c.width+x*2,B=c.height+x*2,m=l*1.75;C(s,B,m,b.useMaxWidth),s.attr("viewBox",`${c.x-b.padding} ${c.y-b.padding} `+l+" "+B)},"draw"),dt=u(e=>e?e.length*b.fontSizeFactor:1,"getLabelWidth"),R=u((e,i,d,o,n,g,p)=>{const a=new J({compound:!0,multigraph:!0});let s,y=!0;for(s=0;s{const w=h.parentElement;let v=0,M=0;w&&(w.parentElement&&(v=w.parentElement.getBBox().width),M=parseInt(w.getAttribute("data-x-shift"),10),Number.isNaN(M)&&(M=0)),h.setAttribute("x1",0-M+8),h.setAttribute("x2",v-M-8)})):S.debug("No Node "+r+": "+JSON.stringify(a.node(r)))});let k=m.getBBox();a.edges().forEach(function(r){r!==void 0&&a.edge(r)!==void 0&&(S.debug("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(a.edge(r))),it(i,a.edge(r),a.edge(r).relation))}),k=m.getBBox();const E={id:d||"root",label:d||"root",width:0,height:0};return E.width=k.width+2*b.padding,E.height=k.height+2*b.padding,S.debug("Doc rendered",E,a),E},"renderDoc"),ot={setConf:rt,draw:st},yt={parser:W,db:N,renderer:ot,styles:P,init:u(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute,N.clear()},"init")};export{yt as diagram}; diff --git a/assets/chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js b/assets/chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js new file mode 100644 index 00000000..a372bfca --- /dev/null +++ b/assets/chunks/stateDiagram-v2-4JROLMXI.DqYwz9GF.js @@ -0,0 +1 @@ +import{s as e,a as t,c as r,b as s}from"./chunk-7U56Z5CX.3DFBXZZA.js";import{_ as i}from"../app.BCWCbnje.js";import"./chunk-5HRBRIJM.BLuRsvWo.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var p={parser:e,db:t,renderer:r,styles:s,init:i(a=>{a.state||(a.state={}),a.state.arrowMarkerAbsolute=a.arrowMarkerAbsolute,t.clear()},"init")};export{p as diagram}; diff --git a/assets/chunks/theme.DQlX5-hY.js b/assets/chunks/theme.DQlX5-hY.js new file mode 100644 index 00000000..46c79981 --- /dev/null +++ b/assets/chunks/theme.DQlX5-hY.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.Bb--4sHY.js","assets/chunks/framework.BDUoXecB.js","assets/chunks/index.CRBiAhYs.js"])))=>i.map(i=>d[i]); +import{d as m,o as a,c as u,r as c,n as I,a as U,t as N,b as k,w as p,e as h,T as ue,_ as g,u as De,i as Oe,f as je,g as de,h as y,j as d,k as i,l as q,m as ae,p as T,q as D,s as Q,v as z,x as pe,y as ve,z as Ge,A as Ue,B as K,F as M,C as H,D as ye,E as Z,G as _,H as E,I as Pe,J as W,K as G,L as x,M as ze,N as Le,O as re,P as Ve,Q as Se,R as ee,S as qe,U as Ke,V as Te,W as we,X as Ne,Y as Re,Z as We,$ as Je,a0 as Xe,a1 as Ye,a2 as Qe}from"./framework.BDUoXecB.js";const Ze=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[U(N(e.text),1)])],2))}}),xe={key:0,class:"VPBackdrop"},et=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),k(ue,{name:"fade"},{default:p(()=>[e.show?(a(),u("div",xe)):h("",!0)]),_:1}))}}),tt=g(et,[["__scopeId","data-v-54a304ca"]]),L=De;function nt(s,e){let t,o=!1;return()=>{t&&clearTimeout(t),o?t=setTimeout(s,e):(s(),(o=!0)&&setTimeout(()=>o=!1,e))}}function ie(s){return/^\//.test(s)?s:`/${s}`}function fe(s){const{pathname:e,search:t,hash:o,protocol:n}=new URL(s,"http://a.com");if(Oe(s)||s.startsWith("#")||!n.startsWith("http")||!je(e))return s;const{site:r}=L(),l=e.endsWith("/")||e.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${o}`);return de(l)}function J({correspondingLink:s=!1}={}){const{site:e,localeIndex:t,page:o,theme:n,hash:r}=L(),l=y(()=>{var v,$;return{label:(v=e.value.locales[t.value])==null?void 0:v.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([v,$])=>l.value.label===$.label?[]:{text:$.label,link:ot($.link||(v==="root"?"/":`/${v}/`),n.value.i18nRouting!==!1&&s,o.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function ot(s,e,t,o){return e?s.replace(/\/$/,"")+ie(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,o?".html":"")):s}const st={class:"NotFound"},at={class:"code"},rt={class:"title"},it={class:"quote"},lt={class:"action"},ct=["href","aria-label"],ut=m({__name:"NotFound",setup(s){const{theme:e}=L(),{currentLang:t}=J();return(o,n)=>{var r,l,f,v,$;return a(),u("div",st,[d("p",at,N(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),d("h1",rt,N(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=d("div",{class:"divider"},null,-1)),d("blockquote",it,N(((f=i(e).notFound)==null?void 0:f.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",lt,[d("a",{class:"link",href:i(de)(i(t).link),"aria-label":((v=i(e).notFound)==null?void 0:v.linkLabel)??"go to home"},N((($=i(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,ct)])])}}}),dt=g(ut,[["__scopeId","data-v-6ff51ddd"]]);function Ie(s,e){if(Array.isArray(s))return X(s);if(s==null)return[];e=ie(e);const t=Object.keys(s).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(ie(n))),o=t?s[t]:[];return Array.isArray(o)?X(o):X(o.items,o.base)}function pt(s){const e=[];let t=0;for(const o in s){const n=s[o];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function vt(s){const e=[];function t(o){for(const n of o)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(s),e}function le(s,e){return Array.isArray(e)?e.some(t=>le(s,t)):q(s,e.link)?!0:e.items?le(s,e.items):!1}function X(s,e){return[...s].map(t=>{const o={...t},n=o.base||e;return n&&o.link&&(o.link=n+o.link),o.items&&(o.items=X(o.items,n)),o})}function O(){const{frontmatter:s,page:e,theme:t}=L(),o=ae("(min-width: 960px)"),n=T(!1),r=y(()=>{const A=t.value.sidebar,S=e.value.relativePath;return A?Ie(A,S):[]}),l=T(r.value);D(r,(A,S)=>{JSON.stringify(A)!==JSON.stringify(S)&&(l.value=r.value)});const f=y(()=>s.value.sidebar!==!1&&l.value.length>0&&s.value.layout!=="home"),v=y(()=>$?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),$=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),V=y(()=>f.value&&o.value),b=y(()=>f.value?pt(l.value):[]);function P(){n.value=!0}function w(){n.value=!1}function B(){n.value?w():P()}return{isOpen:n,sidebar:l,sidebarGroups:b,hasSidebar:f,hasAside:$,leftAside:v,isSidebarEnabled:V,open:P,close:w,toggle:B}}function ft(s,e){let t;Q(()=>{t=s.value?document.activeElement:void 0}),z(()=>{window.addEventListener("keyup",o)}),pe(()=>{window.removeEventListener("keyup",o)});function o(n){n.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}function ht(s){const{page:e,hash:t}=L(),o=T(!1),n=y(()=>s.value.collapsed!=null),r=y(()=>!!s.value.link),l=T(!1),f=()=>{l.value=q(e.value.relativePath,s.value.link)};D([e,s,t],f),z(f);const v=y(()=>l.value?!0:s.value.items?le(e.value.relativePath,s.value.items):!1),$=y(()=>!!(s.value.items&&s.value.items.length));Q(()=>{o.value=!!(n.value&&s.value.collapsed)}),ve(()=>{(l.value||v.value)&&(o.value=!1)});function V(){n.value&&(o.value=!o.value)}return{collapsed:o,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:v,hasChildren:$,toggle:V}}function mt(){const{hasSidebar:s}=O(),e=ae("(min-width: 960px)"),t=ae("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const ce=[];function Me(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function he(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const o=Number(t.tagName[1]);return{element:t,title:_t(t),link:"#"+t.id,level:o}});return kt(e,s)}function _t(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function kt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[o,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return $t(s,o,n)}function bt(s,e){const{isAsideEnabled:t}=mt(),o=nt(r,100);let n=null;z(()=>{requestAnimationFrame(r),window.addEventListener("scroll",o)}),Ge(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",o)});function r(){if(!t.value)return;const f=window.scrollY,v=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(f+v-$)<1,b=ce.map(({element:w,link:B})=>({link:B,top:gt(w)})).filter(({top:w})=>!Number.isNaN(w)).sort((w,B)=>w.top-B.top);if(!b.length){l(null);return}if(f<1){l(null);return}if(V){l(b[b.length-1].link);return}let P=null;for(const{link:w,top:B}of b){if(B>f+Ue()+4)break;P=w}l(P)}function l(f){n&&n.classList.remove("active"),f==null?n=null:n=s.value.querySelector(`a[href="${decodeURIComponent(f)}"]`);const v=n;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function gt(s){let e=0;for(;s!==document.body;){if(s===null)return NaN;e+=s.offsetTop,s=s.offsetParent}return e}function $t(s,e,t){ce.length=0;const o=[],n=[];return s.forEach(r=>{const l={...r,children:[]};let f=n[n.length-1];for(;f&&f.level>=l.level;)n.pop(),f=n[n.length-1];if(l.element.classList.contains("ignore-header")||f&&"shouldIgnore"in f){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=K("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,H(t.headers,({children:r,link:l,title:f})=>(a(),u("li",null,[d("a",{class:"outline-link",href:l,onClick:e,title:f},N(f),9,yt),r!=null&&r.length?(a(),k(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),Be=g(Pt,[["__scopeId","data-v-53c99d69"]]),Lt={class:"content"},Vt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},St=m({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=L(),o=ye([]);Z(()=>{o.value=he(e.value.outline??t.value.outline)});const n=T(),r=T();return bt(n,r),(l,f)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":o.value.length>0}]),ref_key:"container",ref:n},[d("div",Lt,[d("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),d("div",Vt,N(i(Me)(i(t))),1),_(Be,{headers:o.value,root:!0},null,8,["headers"])])],2))}}),Tt=g(St,[["__scopeId","data-v-f610f197"]]),wt={class:"VPDocAsideCarbonAds"},Nt=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,o)=>(a(),u("div",wt,[_(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),It={class:"VPDocAside"},Mt=m({__name:"VPDocAside",setup(s){const{theme:e}=L();return(t,o)=>(a(),u("div",It,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),_(Tt),c(t.$slots,"aside-outline-after",{},void 0,!0),o[0]||(o[0]=d("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),k(Nt,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Bt=g(Mt,[["__scopeId","data-v-cb998dce"]]);function At(){const{theme:s,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:o=""}=s.value.editLink||{};let n;return typeof o=="function"?n=o(e.value):n=o.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ht(){const{page:s,theme:e,frontmatter:t}=L();return y(()=>{var $,V,b,P,w,B,A,S;const o=Ie(e.value.sidebar,s.value.relativePath),n=vt(o),r=Ct(n,C=>C.link.replace(/[?#].*$/,"")),l=r.findIndex(C=>q(s.value.relativePath,C.link)),f=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,v=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:f?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((b=r[l-1])==null?void 0:b.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((w=r[l-1])==null?void 0:w.link)},next:v?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((B=r[l+1])==null?void 0:B.docFooterText)??((A=r[l+1])==null?void 0:A.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=r[l+1])==null?void 0:S.link)}}})}function Ct(s,e){const t=new Set;return s.filter(o=>{const n=e(o);return t.has(n)?!1:t.add(n)})}const F=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),o=y(()=>e.href&&Pe.test(e.href)||e.target==="_blank");return(n,r)=>(a(),k(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":o.value,"no-icon":n.noIcon}]),href:n.href?i(fe)(n.href):void 0,target:n.target??(o.value?"_blank":void 0),rel:n.rel??(o.value?"noreferrer":void 0)},{default:p(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Et={class:"VPLastUpdated"},Ft=["datetime"],Dt=m({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,lang:o}=L(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return z(()=>{Q(()=>{var f,v,$;l.value=new Intl.DateTimeFormat((v=(f=e.value.lastUpdated)==null?void 0:f.formatOptions)!=null&&v.forceLocale?o.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(f,v)=>{var $;return a(),u("p",Et,[U(N((($=i(e).lastUpdated)==null?void 0:$.text)||i(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:r.value},N(l.value),9,Ft)])}}}),Ot=g(Dt,[["__scopeId","data-v-1bb0c8a8"]]),jt={key:0,class:"VPDocFooter"},Gt={key:0,class:"edit-info"},Ut={key:0,class:"edit-link"},zt={key:1,class:"last-updated"},qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Kt={class:"pager"},Rt=["innerHTML"],Wt=["innerHTML"],Jt={class:"pager"},Xt=["innerHTML"],Yt=["innerHTML"],Qt=m({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:o}=L(),n=At(),r=Ht(),l=y(()=>e.value.editLink&&o.value.editLink!==!1),f=y(()=>t.value.lastUpdated),v=y(()=>l.value||f.value||r.value.prev||r.value.next);return($,V)=>{var b,P,w,B;return v.value?(a(),u("footer",jt,[c($.$slots,"doc-footer-before",{},void 0,!0),l.value||f.value?(a(),u("div",Gt,[l.value?(a(),u("div",Ut,[_(F,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:p(()=>[V[0]||(V[0]=d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),U(" "+N(i(n).text),1)]),_:1},8,["href"])])):h("",!0),f.value?(a(),u("div",zt,[_(Ot)])):h("",!0)])):h("",!0),(b=i(r).prev)!=null&&b.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",qt,[V[1]||(V[1]=d("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),d("div",Kt,[(w=i(r).prev)!=null&&w.link?(a(),k(F,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:p(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.prev)||"Previous page"},null,8,Rt),d("span",{class:"title",innerHTML:i(r).prev.text},null,8,Wt)]}),_:1},8,["href"])):h("",!0)]),d("div",Jt,[(B=i(r).next)!=null&&B.link?(a(),k(F,{key:0,class:"pager-link next",href:i(r).next.link},{default:p(()=>{var A;return[d("span",{class:"desc",innerHTML:((A=i(e).docFooter)==null?void 0:A.next)||"Next page"},null,8,Xt),d("span",{class:"title",innerHTML:i(r).next.text},null,8,Yt)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),Zt=g(Qt,[["__scopeId","data-v-1bcd8184"]]),xt={class:"container"},en={class:"aside-container"},tn={class:"aside-content"},nn={class:"content"},on={class:"content-container"},sn={class:"main"},an=m({__name:"VPDoc",setup(s){const{theme:e}=L(),t=W(),{hasSidebar:o,hasAside:n,leftAside:r}=O(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(f,v)=>{const $=K("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(o),"has-aside":i(n)}])},[c(f.$slots,"doc-top",{},void 0,!0),d("div",xt,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[v[0]||(v[0]=d("div",{class:"aside-curtain"},null,-1)),d("div",en,[d("div",tn,[_(Bt,null,{"aside-top":p(()=>[c(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),d("div",nn,[d("div",on,[c(f.$slots,"doc-before",{},void 0,!0),d("main",sn,[_($,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),_(Zt,null,{"doc-footer-before":p(()=>[c(f.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(f.$slots,"doc-after",{},void 0,!0)])])]),c(f.$slots,"doc-bottom",{},void 0,!0)],2)}}}),rn=g(an,[["__scopeId","data-v-e6f2a212"]]),ln=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.href&&Pe.test(e.href)),o=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),k(E(o.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:p(()=>[U(N(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),cn=g(ln,[["__scopeId","data-v-93dc4167"]]),un=["src","alt"],dn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const o=K("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",G({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(de)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,un)):(a(),u(M,{key:1},[_(o,G({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),_(o,G({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Y=g(dn,[["__scopeId","data-v-ab19afbb"]]),pn={class:"container"},vn={class:"main"},fn={key:0,class:"name"},hn=["innerHTML"],mn=["innerHTML"],_n=["innerHTML"],kn={key:0,class:"actions"},bn={key:0,class:"image"},gn={class:"image-container"},$n=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=x("hero-image-slot-exists");return(t,o)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[d("div",pn,[d("div",vn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",fn,[d("span",{innerHTML:t.name,class:"clip"},null,8,hn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,mn)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,_n)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",kn,[(a(!0),u(M,null,H(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[_(cn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",bn,[d("div",gn,[o[0]||(o[0]=d("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(Y,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),yn=g($n,[["__scopeId","data-v-b10c5094"]]),Pn=m({__name:"VPHomeHero",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).hero?(a(),k(yn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),Ln={class:"box"},Vn={key:0,class:"icon"},Sn=["innerHTML"],Tn=["innerHTML"],wn=["innerHTML"],Nn={key:4,class:"link-text"},In={class:"link-text-value"},Mn=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),k(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:p(()=>[d("article",Ln,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",Vn,[_(Y,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(Y,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Sn)):h("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,Tn),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,wn)):h("",!0),e.linkText?(a(),u("div",Nn,[d("p",In,[U(N(e.linkText)+" ",1),t[0]||(t[0]=d("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Bn=g(Mn,[["__scopeId","data-v-bd37d1a2"]]),An={key:0,class:"VPFeatures"},Hn={class:"container"},Cn={class:"items"},En=m({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const o=e.features.length;if(o){if(o===2)return"grid-2";if(o===3)return"grid-3";if(o%3===0)return"grid-6";if(o>3)return"grid-4"}else return});return(o,n)=>o.features?(a(),u("div",An,[d("div",Hn,[d("div",Cn,[(a(!0),u(M,null,H(o.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[_(Bn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),Fn=g(En,[["__scopeId","data-v-b1eea84a"]]),Dn=m({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=L();return(t,o)=>i(e).features?(a(),k(Fn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),On=m({__name:"VPHomeContent",setup(s){const{width:e}=ze({initialWidth:0,includeScrollbar:!1});return(t,o)=>(a(),u("div",{class:"vp-doc container",style:Le(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),jn=g(On,[["__scopeId","data-v-c141a4bd"]]),Gn={class:"VPHome"},Un=m({__name:"VPHome",setup(s){const{frontmatter:e}=L();return(t,o)=>{const n=K("Content");return a(),u("div",Gn,[c(t.$slots,"home-hero-before",{},void 0,!0),_(Pn,null,{"home-hero-info-before":p(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),_(Dn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),k(jn,{key:0},{default:p(()=>[_(n)]),_:1})):(a(),k(n,{key:1}))])}}}),zn=g(Un,[["__scopeId","data-v-07b1ad08"]]),qn={},Kn={class:"VPPage"};function Rn(s,e){const t=K("Content");return a(),u("div",Kn,[c(s.$slots,"page-top"),_(t),c(s.$slots,"page-bottom")])}const Wn=g(qn,[["render",Rn]]),Jn=m({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=L(),{hasSidebar:o}=O();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(o),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[_(dt)],!0):i(t).layout==="page"?(a(),k(Wn,{key:1},{"page-top":p(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),k(zn,{key:2},{"home-hero-before":p(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),k(E(i(t).layout),{key:3})):(a(),k(rn,{key:4},{"doc-top":p(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":p(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":p(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":p(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":p(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),Xn=g(Jn,[["__scopeId","data-v-9a6c75ad"]]),Yn={class:"container"},Qn=["innerHTML"],Zn=["innerHTML"],xn=m({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=O();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(o)}])},[d("div",Yn,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,Qn)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,Zn)):h("",!0)])],2)):h("",!0)}}),eo=g(xn,[["__scopeId","data-v-566314d4"]]);function to(){const{theme:s,frontmatter:e}=L(),t=ye([]),o=y(()=>t.value.length>0);return Z(()=>{t.value=he(e.value.outline??s.value.outline)}),{headers:t,hasLocalNav:o}}const no={class:"menu-text"},oo={class:"header"},so={class:"outline"},ao=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=L(),o=T(!1),n=T(0),r=T(),l=T();function f(b){var P;(P=r.value)!=null&&P.contains(b.target)||(o.value=!1)}D(o,b=>{if(b){document.addEventListener("click",f);return}document.removeEventListener("click",f)}),re("Escape",()=>{o.value=!1}),Z(()=>{o.value=!1});function v(){o.value=!o.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ve(()=>{o.value=!1}))}function V(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Le({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[b.headers.length>0?(a(),u("button",{key:0,onClick:v,class:I({open:o.value})},[d("span",no,N(i(Me)(i(t))),1),P[0]||(P[0]=d("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)),_(ue,{name:"flyout"},{default:p(()=>[o.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:$},[d("div",oo,[d("a",{class:"top-link",href:"#",onClick:V},N(i(t).returnToTopLabel||"Return to top"),1)]),d("div",so,[_(Be,{headers:b.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ro=g(ao,[["__scopeId","data-v-883964e0"]]),io={class:"container"},lo=["aria-expanded"],co={class:"menu-text"},uo=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=L(),{hasSidebar:o}=O(),{headers:n}=to(),{y:r}=Se(),l=T(0);z(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Z(()=>{n.value=he(t.value.outline??e.value.outline)});const f=y(()=>n.value.length===0),v=y(()=>f.value&&!o.value),$=y(()=>({VPLocalNav:!0,"has-sidebar":o.value,empty:f.value,fixed:v.value}));return(V,b)=>i(t).layout!=="home"&&(!v.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I($.value)},[d("div",io,[i(o)?(a(),u("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=P=>V.$emit("open-menu"))},[b[1]||(b[1]=d("span",{class:"vpi-align-left menu-icon"},null,-1)),d("span",co,N(i(e).sidebarMenuLabel||"Menu"),1)],8,lo)):h("",!0),_(ro,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),po=g(uo,[["__scopeId","data-v-2488c25a"]]);function vo(){const s=T(!1);function e(){s.value=!0,window.addEventListener("resize",n)}function t(){s.value=!1,window.removeEventListener("resize",n)}function o(){s.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=W();return D(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:o}}const fo={},ho={class:"VPSwitch",type:"button",role:"switch"},mo={class:"check"},_o={key:0,class:"icon"};function ko(s,e){return a(),u("button",ho,[d("span",mo,[s.$slots.default?(a(),u("span",_o,[c(s.$slots,"default",{},void 0,!0)])):h("",!0)])])}const bo=g(fo,[["render",ko],["__scopeId","data-v-b4ccac88"]]),go=m({__name:"VPSwitchAppearance",setup(s){const{isDark:e,theme:t}=L(),o=x("toggle-appearance",()=>{e.value=!e.value}),n=T("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),k(bo,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(o)},{default:p(()=>l[0]||(l[0]=[d("span",{class:"vpi-sun sun"},null,-1),d("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),me=g(go,[["__scopeId","data-v-be9742d9"]]),$o={key:0,class:"VPNavBarAppearance"},yo=m({__name:"VPNavBarAppearance",setup(s){const{site:e}=L();return(t,o)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",$o,[_(me)])):h("",!0)}}),Po=g(yo,[["__scopeId","data-v-3f90c1a5"]]),_e=T();let Ae=!1,se=0;function Lo(s){const e=T(!1);if(ee){!Ae&&Vo(),se++;const t=D(_e,o=>{var n,r,l;o===s.el.value||(n=s.el.value)!=null&&n.contains(o)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(l=s.onBlur)==null||l.call(s))});pe(()=>{t(),se--,se||So()})}return qe(e)}function Vo(){document.addEventListener("focusin",He),Ae=!0,_e.value=document.activeElement}function So(){document.removeEventListener("focusin",He)}function He(){_e.value=document.activeElement}const To={class:"VPMenuLink"},wo=["innerHTML"],No=m({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),u("div",To,[_(F,{class:I({active:i(q)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,wo)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),te=g(No,[["__scopeId","data-v-7eeeb2dc"]]),Io={class:"VPMenuGroup"},Mo={key:0,class:"title"},Bo=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Io,[e.text?(a(),u("p",Mo,N(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,o=>(a(),u(M,null,["link"in o?(a(),k(te,{key:0,item:o},null,8,["item"])):h("",!0)],64))),256))]))}}),Ao=g(Bo,[["__scopeId","data-v-a6b0397c"]]),Ho={class:"VPMenu"},Co={key:0,class:"items"},Eo=m({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),u("div",Ho,[e.items?(a(),u("div",Co,[(a(!0),u(M,null,H(e.items,o=>(a(),u(M,{key:JSON.stringify(o)},["link"in o?(a(),k(te,{key:0,item:o},null,8,["item"])):"component"in o?(a(),k(E(o.component),G({key:1,ref_for:!0},o.props),null,16)):(a(),k(Ao,{key:2,text:o.text,items:o.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Fo=g(Eo,[["__scopeId","data-v-20ed86d6"]]),Do=["aria-expanded","aria-label"],Oo={key:0,class:"text"},jo=["innerHTML"],Go={key:1,class:"vpi-more-horizontal icon"},Uo={class:"menu"},zo=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=T(!1),t=T();Lo({el:t,onBlur:o});function o(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",Oo,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,jo)):h("",!0),r[3]||(r[3]=d("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Go))],8,Do),d("div",Uo,[_(Fo,{items:n.items},{default:p(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),ke=g(zo,[["__scopeId","data-v-bfe7971f"]]),qo=["href","aria-label","innerHTML"],Ko=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=T();z(async()=>{var r;await Ve();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const o=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:o.value},null,8,qo))}}),Ro=g(Ko,[["__scopeId","data-v-60a9a2d3"]]),Wo={class:"VPSocialLinks"},Jo=m({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),u("div",Wo,[(a(!0),u(M,null,H(e.links,({link:o,icon:n,ariaLabel:r})=>(a(),k(Ro,{key:o,icon:n,link:o,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=g(Jo,[["__scopeId","data-v-e71e869c"]]),Xo={key:0,class:"group translations"},Yo={class:"trans-title"},Qo={key:1,class:"group"},Zo={class:"item appearance"},xo={class:"label"},es={class:"appearance-action"},ts={key:2,class:"group"},ns={class:"item social-links"},os=m({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=L(),{localeLinks:o,currentLang:n}=J({correspondingLink:!0}),r=y(()=>o.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,f)=>r.value?(a(),k(ke,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:p(()=>[i(o).length&&i(n).label?(a(),u("div",Xo,[d("p",Yo,N(i(n).label),1),(a(!0),u(M,null,H(i(o),v=>(a(),k(te,{key:v.link,item:v},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Qo,[d("div",Zo,[d("p",xo,N(i(t).darkModeSwitchLabel||"Appearance"),1),d("div",es,[_(me)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ts,[d("div",ns,[_(be,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),ss=g(os,[["__scopeId","data-v-f953d92f"]]),as=["aria-expanded"],rs=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=o=>e.$emit("click"))},t[1]||(t[1]=[d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)]),10,as))}}),is=g(rs,[["__scopeId","data-v-6bee1efd"]]),ls=["innerHTML"],cs=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=L();return(t,o)=>(a(),k(F,{class:I({VPNavBarMenuLink:!0,active:i(q)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,ls)]),_:1},8,["class","href","target","rel","no-icon"]))}}),us=g(cs,[["__scopeId","data-v-815115f5"]]),ds=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=L(),o=r=>"component"in r?!1:"link"in r?q(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(o),n=y(()=>o(e.item));return(r,l)=>(a(),k(ke,{class:I({VPNavBarMenuGroup:!0,active:i(q)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ps={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},vs=m({__name:"VPNavBarMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",ps,[o[0]||(o[0]=d("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),k(us,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),G({key:1,ref_for:!0},n.props),null,16)):(a(),k(ds,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),fs=g(vs,[["__scopeId","data-v-afb2845e"]]);function hs(s){const{localeIndex:e,theme:t}=L();function o(n){var B,A,S;const r=n.split("."),l=(B=t.value.search)==null?void 0:B.options,f=l&&typeof l=="object",v=f&&((S=(A=l.locales)==null?void 0:A[e.value])==null?void 0:S.translations)||null,$=f&&l.translations||null;let V=v,b=$,P=s;const w=r.pop();for(const C of r){let j=null;const R=P==null?void 0:P[C];R&&(j=P=R);const ne=b==null?void 0:b[C];ne&&(j=b=ne);const oe=V==null?void 0:V[C];oe&&(j=V=oe),R||(P=j),ne||(b=j),oe||(V=j)}return(V==null?void 0:V[w])??(b==null?void 0:b[w])??(P==null?void 0:P[w])??""}return o}const ms=["aria-label"],_s={class:"DocSearch-Button-Container"},ks={class:"DocSearch-Button-Placeholder"},ge=m({__name:"VPNavBarSearchButton",setup(s){const t=hs({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(o,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[d("span",_s,[n[0]||(n[0]=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),d("span",ks,N(i(t)("button.buttonText")),1)]),n[1]||(n[1]=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ms))}}),bs={class:"VPNavBarSearch"},gs={id:"local-search"},$s={key:1,id:"docsearch"},ys=m({__name:"VPNavBarSearch",setup(s){const e=Ke(()=>Te(()=>import("./VPLocalSearchBox.Bb--4sHY.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:o}=L(),n=T(!1),r=T(!1);z(()=>{});function l(){n.value||(n.value=!0,setTimeout(f,16))}function f(){const b=new Event("keydown");b.key="k",b.metaKey=!0,window.dispatchEvent(b),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||f()},16)}function v(b){const P=b.target,w=P.tagName;return P.isContentEditable||w==="INPUT"||w==="SELECT"||w==="TEXTAREA"}const $=T(!1);re("k",b=>{(b.ctrlKey||b.metaKey)&&(b.preventDefault(),$.value=!0)}),re("/",b=>{v(b)||(b.preventDefault(),$.value=!0)});const V="local";return(b,P)=>{var w;return a(),u("div",bs,[i(V)==="local"?(a(),u(M,{key:0},[$.value?(a(),k(i(e),{key:0,onClose:P[0]||(P[0]=B=>$.value=!1)})):h("",!0),d("div",gs,[_(ge,{onClick:P[1]||(P[1]=B=>$.value=!0)})])],64)):i(V)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),k(i(t),{key:0,algolia:((w=i(o).search)==null?void 0:w.options)??i(o).algolia,onVnodeBeforeMount:P[2]||(P[2]=B=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",$s,[_(ge,{onClick:l})]))],64)):h("",!0)])}}}),Ps=m({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),k(be,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Ls=g(Ps,[["__scopeId","data-v-ef6192dc"]]),Vs=["href","rel","target"],Ss=["innerHTML"],Ts={key:2},ws=m({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=L(),{hasSidebar:o}=O(),{currentLang:n}=J(),r=y(()=>{var v;return typeof t.value.logoLink=="string"?t.value.logoLink:(v=t.value.logoLink)==null?void 0:v.link}),l=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.rel}),f=y(()=>{var v;return typeof t.value.logoLink=="string"||(v=t.value.logoLink)==null?void 0:v.target});return(v,$)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(o)}])},[d("a",{class:"title",href:r.value??i(fe)(i(n).link),rel:l.value,target:f.value},[c(v.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),k(Y,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Ss)):i(t).siteTitle===void 0?(a(),u("span",Ts,N(i(e).title),1)):h("",!0),c(v.$slots,"nav-bar-title-after",{},void 0,!0)],8,Vs)],2))}}),Ns=g(ws,[["__scopeId","data-v-9f43907a"]]),Is={class:"items"},Ms={class:"title"},Bs=m({__name:"VPNavBarTranslations",setup(s){const{theme:e}=L(),{localeLinks:t,currentLang:o}=J({correspondingLink:!0});return(n,r)=>i(t).length&&i(o).label?(a(),k(ke,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:p(()=>[d("div",Is,[d("p",Ms,N(i(o).label),1),(a(!0),u(M,null,H(i(t),l=>(a(),k(te,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),As=g(Bs,[["__scopeId","data-v-acee064b"]]),Hs={class:"wrapper"},Cs={class:"container"},Es={class:"title"},Fs={class:"content"},Ds={class:"content-body"},Os=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const e=s,{y:t}=Se(),{hasSidebar:o}=O(),{frontmatter:n}=L(),r=T({});return ve(()=>{r.value={"has-sidebar":o.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,f)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[d("div",Hs,[d("div",Cs,[d("div",Es,[_(Ns,null,{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",Fs,[d("div",Ds,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),_(ys,{class:"search"}),_(fs,{class:"menu"}),_(As,{class:"translations"}),_(Po,{class:"appearance"}),_(Ls,{class:"social-links"}),_(ss,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),_(is,{class:"hamburger",active:l.isScreenOpen,onClick:f[0]||(f[0]=v=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),f[1]||(f[1]=d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1))],2))}}),js=g(Os,[["__scopeId","data-v-9fd4d1dd"]]),Gs={key:0,class:"VPNavScreenAppearance"},Us={class:"text"},zs=m({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=L();return(o,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Gs,[d("p",Us,N(i(t).darkModeSwitchLabel||"Appearance"),1),_(me)])):h("",!0)}}),qs=g(zs,[["__scopeId","data-v-a3e2920d"]]),Ks=["innerHTML"],Rs=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=x("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,Ks)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ws=g(Rs,[["__scopeId","data-v-fa963d97"]]),Js=["innerHTML"],Xs=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=x("close-screen");return(t,o)=>(a(),k(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:p(()=>[d("span",{innerHTML:t.item.text},null,8,Js)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Ce=g(Xs,[["__scopeId","data-v-e04f3e85"]]),Ys={class:"VPNavScreenMenuGroupSection"},Qs={key:0,class:"title"},Zs=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),u("div",Ys,[e.text?(a(),u("p",Qs,N(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,o=>(a(),k(Ce,{key:o.text,item:o},null,8,["item"]))),128))]))}}),xs=g(Zs,[["__scopeId","data-v-f60dbfa7"]]),ea=["aria-controls","aria-expanded"],ta=["innerHTML"],na=["id"],oa={key:0,class:"item"},sa={key:1,class:"item"},aa={key:2,class:"group"},ra=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=T(!1),o=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":o.value,"aria-expanded":t.value,onClick:n},[d("span",{class:"button-text",innerHTML:r.text},null,8,ta),l[0]||(l[0]=d("span",{class:"vpi-plus button-icon"},null,-1))],8,ea),d("div",{id:o.value,class:"items"},[(a(!0),u(M,null,H(r.items,f=>(a(),u(M,{key:JSON.stringify(f)},["link"in f?(a(),u("div",oa,[_(Ce,{item:f},null,8,["item"])])):"component"in f?(a(),u("div",sa,[(a(),k(E(f.component),G({ref_for:!0},f.props,{"screen-menu":""}),null,16))])):(a(),u("div",aa,[_(xs,{text:f.text,items:f.items},null,8,["text","items"])]))],64))),128))],8,na)],2))}}),ia=g(ra,[["__scopeId","data-v-d99bfeec"]]),la={key:0,class:"VPNavScreenMenu"},ca=m({__name:"VPNavScreenMenu",setup(s){const{theme:e}=L();return(t,o)=>i(e).nav?(a(),u("nav",la,[(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),k(Ws,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(E(n.component),G({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(ia,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ua=m({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=L();return(t,o)=>i(e).socialLinks?(a(),k(be,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),da={class:"list"},pa=m({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),o=T(!1);function n(){o.value=!o.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:o.value}])},[d("button",{class:"title",onClick:n},[l[0]||(l[0]=d("span",{class:"vpi-languages icon lang"},null,-1)),U(" "+N(i(t).label)+" ",1),l[1]||(l[1]=d("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),d("ul",da,[(a(!0),u(M,null,H(i(e),f=>(a(),u("li",{key:f.link,class:"item"},[_(F,{class:"link",href:f.link},{default:p(()=>[U(N(f.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),va=g(pa,[["__scopeId","data-v-516e4bc3"]]),fa={class:"container"},ha=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=T(null),t=we(ee?document.body:null);return(o,n)=>(a(),k(ue,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:p(()=>[o.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",fa,[c(o.$slots,"nav-screen-content-before",{},void 0,!0),_(ca,{class:"menu"}),_(va,{class:"translations"}),_(qs,{class:"appearance"}),_(ua,{class:"social-links"}),c(o.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),ma=g(ha,[["__scopeId","data-v-2dd6d0c7"]]),_a={key:0,class:"VPNav"},ka=m({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:o}=vo(),{frontmatter:n}=L(),r=y(()=>n.value.navbar!==!1);return Ne("close-screen",t),Q(()=>{ee&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,f)=>r.value?(a(),u("header",_a,[_(js,{"is-screen-open":i(e),onToggleScreen:i(o)},{"nav-bar-title-before":p(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),_(ma,{open:i(e)},{"nav-screen-content-before":p(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),ba=g(ka,[["__scopeId","data-v-7ad780c2"]]),ga=["role","tabindex"],$a={key:1,class:"items"},ya=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:o,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:f,toggle:v}=ht(y(()=>e.item)),$=y(()=>f.value?"section":"div"),V=y(()=>n.value?"a":"div"),b=y(()=>f.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),w=y(()=>[[`level-${e.depth}`],{collapsible:o.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function B(S){"key"in S&&S.key!=="Enter"||!e.item.link&&v()}function A(){e.item.link&&v()}return(S,C)=>{const j=K("VPSidebarItem",!0);return a(),k(E($.value),{class:I(["VPSidebarItem",w.value])},{default:p(()=>[S.item.text?(a(),u("div",G({key:0,class:"item",role:P.value},Re(S.item.items?{click:B,keydown:B}:{},!0),{tabindex:S.item.items&&0}),[C[1]||(C[1]=d("div",{class:"indicator"},null,-1)),S.item.link?(a(),k(F,{key:0,tag:V.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:p(()=>[(a(),k(E(b.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(E(b.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:A,onKeydown:We(A,["enter"]),tabindex:"0"},C[0]||(C[0]=[d("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,ga)):h("",!0),S.item.items&&S.item.items.length?(a(),u("div",$a,[S.depth<5?(a(!0),u(M,{key:0},H(S.item.items,R=>(a(),k(j,{key:R.text,item:R,depth:S.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Pa=g(ya,[["__scopeId","data-v-edd2eed8"]]),La=m({__name:"VPSidebarGroup",props:{items:{}},setup(s){const e=T(!0);let t=null;return z(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Je(()=>{t!=null&&(clearTimeout(t),t=null)}),(o,n)=>(a(!0),u(M,null,H(o.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[_(Pa,{item:r,depth:0},null,8,["item"])],2))),128))}}),Va=g(La,[["__scopeId","data-v-51288d80"]]),Sa={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ta=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const{sidebarGroups:e,hasSidebar:t}=O(),o=s,n=T(null),r=we(ee?document.body:null);D([o,n],()=>{var f;o.open?(r.value=!0,(f=n.value)==null||f.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return D(e,()=>{l.value+=1},{deep:!0}),(f,v)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:f.open}]),ref_key:"navEl",ref:n,onClick:v[0]||(v[0]=Xe(()=>{},["stop"]))},[v[2]||(v[2]=d("div",{class:"curtain"},null,-1)),d("nav",Sa,[v[1]||(v[1]=d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(f.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(Va,{items:i(e),key:l.value},null,8,["items"])),c(f.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),wa=g(Ta,[["__scopeId","data-v-42c4c606"]]),Na=m({__name:"VPSkipLink",setup(s){const e=W(),t=T();D(()=>e.path,()=>t.value.focus());function o({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:o}," Skip to content ")],64))}}),Ia=g(Na,[["__scopeId","data-v-c8291ffa"]]),Ma=m({__name:"Layout",setup(s){const{isOpen:e,open:t,close:o}=O(),n=W();D(()=>n.path,o),ft(e,o);const{frontmatter:r}=L(),l=Ye(),f=y(()=>!!l["home-hero-image"]);return Ne("hero-image-slot-exists",f),(v,$)=>{const V=K("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(v.$slots,"layout-top",{},void 0,!0),_(Ia),_(tt,{class:"backdrop",show:i(e),onClick:i(o)},null,8,["show","onClick"]),_(ba,null,{"nav-bar-title-before":p(()=>[c(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":p(()=>[c(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":p(()=>[c(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":p(()=>[c(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":p(()=>[c(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":p(()=>[c(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_(po,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),_(wa,{open:i(e)},{"sidebar-nav-before":p(()=>[c(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":p(()=>[c(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),_(Xn,null,{"page-top":p(()=>[c(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":p(()=>[c(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":p(()=>[c(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":p(()=>[c(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":p(()=>[c(v.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":p(()=>[c(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":p(()=>[c(v.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":p(()=>[c(v.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":p(()=>[c(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":p(()=>[c(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":p(()=>[c(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":p(()=>[c(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":p(()=>[c(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":p(()=>[c(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":p(()=>[c(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":p(()=>[c(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":p(()=>[c(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":p(()=>[c(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":p(()=>[c(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":p(()=>[c(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":p(()=>[c(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":p(()=>[c(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":p(()=>[c(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),_(eo),c(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(V,{key:1}))}}}),Ba=g(Ma,[["__scopeId","data-v-d8b57b2d"]]),$e={Layout:Ba,enhanceApp:({app:s})=>{s.component("Badge",Ze)}};function Aa(){const s="twitter-wjs";if(document.getElementById(s))window.twttr.widgets.load();else{const e=document.getElementsByTagName("script")[0],t=/^http:/.test(document.location)?"http":"https",o=document.createElement("script");o.id=s,o.src=t+"://platform.twitter.com/widgets.js",e.parentNode.insertBefore(o,e)}}function Ee(){const s="facebook-jssdk";if(document.getElementById(s))window.FB.XFBML.parse();else{const e=document.getElementsByTagName("script")[0],t=/^http:/.test(document.location)?"http":"https",o=document.createElement("script");o.id=s,o.src=t+"://connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v3.2",e.parentNode.insertBefore(o,e)}}function Fe(){const s="hatena-buttons";if(document.getElementById(s))return;const e=document.getElementsByTagName("script")[0],t=/^http:/.test(document.location)?"http":"https",o=document.createElement("script");o.id=s,o.src=t+"://b.st-hatena.com/js/bookmark_button.js",e.parentNode.insertBefore(o,e)}function Ha(s){const e="pocket-btn-js"+s,t=document.createElement("script");t.id=e,t.src="https://widgets.getpocket.com/v1/j/btn.js?v=1",document.body.appendChild(t)}function Ca(s,e){let t;return()=>{t!=null&&clearTimeout(t),t=setTimeout(s,e)}}const Ea=Ca(function(){Ee(),Fe()},1e3),Fa={name:"PageInfo",props:{href:{type:String,required:!0}},computed:{hatena(){return this.href.replace("https://","https://b.hatena.ne.jp/entry/s/")}},mounted(){Ea()}},Da={class:"page-info"},Oa=["data-href"],ja=["href"];function Ga(s,e,t,o,n,r){return a(),u("div",Da,[d("div",{class:"fb-like","data-href":t.href,"data-layout":"button_count","data-action":"like","data-size":"small","data-show-faces":"true","data-share":"true",style:{height:"20px","line-height":"20px"}},null,8,Oa),d("a",{href:r.hatena,class:"hatena-bookmark-button","data-hatena-bookmark-layout":"basic-label-counter","data-hatena-bookmark-lang":"ja",title:"このエントリーをはてなブックマークに追加"},e[0]||(e[0]=[d("img",{src:"https://b.st-hatena.com/images/entry-button/button-only@2x.png",alt:"このエントリーをはてなブックマークに追加",width:"20",height:"20",style:{border:"none"}},null,-1)]),8,ja)])}const Ua=g(Fa,[["render",Ga],["__scopeId","data-v-b1e769ab"]]),za={name:"PageTitle",data:function(){return{GithubButton:"div"}},computed:{$page(){const s=W();return{path:s.path,title:s.data.title,frontmatter:s.data.frontmatter}},pageUrl(){return"https://future-architect.github.io"+this.$page.path}},mounted(){Te(async()=>{const{default:s}=await import("./index.CRBiAhYs.js");return{default:s}},__vite__mapDeps([2,1])).then(({default:s})=>{this.GithubButton=Qe(s)}),setTimeout(()=>{Aa(),Ee(),Fe(),Ha()},10)}},qa={class:"vitepress-page-title"},Ka={class:"share-buttons"},Ra=["data-url"],Wa=["data-href"],Ja=["href"],Xa=["data-save-url"],Ya={class:"vitepress-page-title__title"},Qa={class:"vitepress-page-title__author"};function Za(s,e,t,o,n,r){return a(),u("div",qa,[d("div",Ka,[d("a",{href:"https://twitter.com/share?ref_src=twsrc%5Etfw",class:"twitter-share-button","data-url":r.pageUrl,"data-show-count":"false"}," Tweet ",8,Ra),d("div",{class:"fb-like","data-href":r.pageUrl,"data-layout":"button_count","data-action":"like","data-size":"small","data-show-faces":"true","data-share":"true"},null,8,Wa),d("a",{href:"http://b.hatena.ne.jp/entry/s/future-architect.github.io"+r.$page.path,class:"hatena-bookmark-button","data-hatena-bookmark-layout":"basic-label-counter","data-hatena-bookmark-lang":"ja",title:"このエントリーをはてなブックマークに追加"},e[0]||(e[0]=[d("img",{src:"https://b.st-hatena.com/images/v4/public/entry-button/button-only@2x.png",alt:"このエントリーをはてなブックマークに追加",width:"20",height:"20",style:{border:"none"}},null,-1)]),8,Ja),(a(),k(E(s.GithubButton),{href:"https://github.com/future-architect/coding-standards","data-icon":"octicon-star","data-show-count":"true","aria-label":"Star future-architect/coding-standards on GitHub"},{default:p(()=>e[1]||(e[1]=[U(" Star ")])),_:1})),d("a",{href:"https://getpocket.com/save",class:"pocket-btn","data-lang":"en","data-save-url":r.pageUrl,"data-pocket-count":"horizontal","data-pocket-align":"left"},"Pocket",8,Xa)]),d("h1",Ya,N(r.$page.title),1),d("div",Qa,N(r.$page.frontmatter.author),1)])}const xa=g(za,[["render",Za],["__scopeId","data-v-a4261501"]]),tr={...$e,enhanceApp:s=>{$e.enhanceApp(s),s.app.component("PageInfo",Ua),s.app.component("PageTitle",xa)}};export{tr as R,hs as c,L as u}; diff --git a/assets/chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js b/assets/chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js new file mode 100644 index 00000000..b3bd7295 --- /dev/null +++ b/assets/chunks/timeline-definition-U7ZMHBDA.BZt45Hpp.js @@ -0,0 +1,61 @@ +import{_ as s,aa as xt,ab as kt,x as vt,j as q,d as _t,l as T,ac as bt,ad as wt,ae as St,af as Et}from"../app.BCWCbnje.js";import{d as nt}from"./arc.D0VzCNCr.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";var X=function(){var n=s(function(f,i,a,d){for(a=a||{},d=f.length;d--;a[f[d]]=i);return a},"o"),t=[6,8,10,11,12,14,16,17,20,21],e=[1,9],l=[1,10],r=[1,11],h=[1,12],c=[1,13],g=[1,16],m=[1,17],p={trace:s(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:s(function(i,a,d,u,y,o,S){var k=o.length-1;switch(y){case 1:return o[k-1];case 2:this.$=[];break;case 3:o[k-1].push(o[k]),this.$=o[k-1];break;case 4:case 5:this.$=o[k];break;case 6:case 7:this.$=[];break;case 8:u.getCommonDb().setDiagramTitle(o[k].substr(6)),this.$=o[k].substr(6);break;case 9:this.$=o[k].trim(),u.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=o[k].trim(),u.getCommonDb().setAccDescription(this.$);break;case 12:u.addSection(o[k].substr(8)),this.$=o[k].substr(8);break;case 15:u.addTask(o[k],0,""),this.$=o[k];break;case 16:u.addEvent(o[k].substr(2)),this.$=o[k];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},n(t,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:e,12:l,14:r,16:h,17:c,18:14,19:15,20:g,21:m},n(t,[2,7],{1:[2,1]}),n(t,[2,3]),{9:18,11:e,12:l,14:r,16:h,17:c,18:14,19:15,20:g,21:m},n(t,[2,5]),n(t,[2,6]),n(t,[2,8]),{13:[1,19]},{15:[1,20]},n(t,[2,11]),n(t,[2,12]),n(t,[2,13]),n(t,[2,14]),n(t,[2,15]),n(t,[2,16]),n(t,[2,4]),n(t,[2,9]),n(t,[2,10])],defaultActions:{},parseError:s(function(i,a){if(a.recoverable)this.trace(i);else{var d=new Error(i);throw d.hash=a,d}},"parseError"),parse:s(function(i){var a=this,d=[0],u=[],y=[null],o=[],S=this.table,k="",M=0,P=0,B=2,J=1,O=o.slice.call(arguments,1),v=Object.create(this.lexer),E={yy:{}};for(var b in this.yy)Object.prototype.hasOwnProperty.call(this.yy,b)&&(E.yy[b]=this.yy[b]);v.setInput(i,E.yy),E.yy.lexer=v,E.yy.parser=this,typeof v.yylloc>"u"&&(v.yylloc={});var L=v.yylloc;o.push(L);var A=v.options&&v.options.ranges;typeof E.yy.parseError=="function"?this.parseError=E.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function R(I){d.length=d.length-2*I,y.length=y.length-I,o.length=o.length-I}s(R,"popStack");function F(){var I;return I=u.pop()||v.lex()||J,typeof I!="number"&&(I instanceof Array&&(u=I,I=u.pop()),I=a.symbols_[I]||I),I}s(F,"lex");for(var w,C,N,K,z={},j,$,et,G;;){if(C=d[d.length-1],this.defaultActions[C]?N=this.defaultActions[C]:((w===null||typeof w>"u")&&(w=F()),N=S[C]&&S[C][w]),typeof N>"u"||!N.length||!N[0]){var Q="";G=[];for(j in S[C])this.terminals_[j]&&j>B&&G.push("'"+this.terminals_[j]+"'");v.showPosition?Q="Parse error on line "+(M+1)+`: +`+v.showPosition()+` +Expecting `+G.join(", ")+", got '"+(this.terminals_[w]||w)+"'":Q="Parse error on line "+(M+1)+": Unexpected "+(w==J?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(Q,{text:v.match,token:this.terminals_[w]||w,line:v.yylineno,loc:L,expected:G})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+C+", token: "+w);switch(N[0]){case 1:d.push(w),y.push(v.yytext),o.push(v.yylloc),d.push(N[1]),w=null,P=v.yyleng,k=v.yytext,M=v.yylineno,L=v.yylloc;break;case 2:if($=this.productions_[N[1]][1],z.$=y[y.length-$],z._$={first_line:o[o.length-($||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-($||1)].first_column,last_column:o[o.length-1].last_column},A&&(z._$.range=[o[o.length-($||1)].range[0],o[o.length-1].range[1]]),K=this.performAction.apply(z,[k,P,M,E.yy,N[1],y,o].concat(O)),typeof K<"u")return K;$&&(d=d.slice(0,-1*$*2),y=y.slice(0,-1*$),o=o.slice(0,-1*$)),d.push(this.productions_[N[1]][0]),y.push(z.$),o.push(z._$),et=S[d[d.length-2]][d[d.length-1]],d.push(et);break;case 3:return!0}}return!0},"parse")},x=function(){var f={EOF:1,parseError:s(function(a,d){if(this.yy.parser)this.yy.parser.parseError(a,d);else throw new Error(a)},"parseError"),setInput:s(function(i,a){return this.yy=a||this.yy||{},this._input=i,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:s(function(){var i=this._input[0];this.yytext+=i,this.yyleng++,this.offset++,this.match+=i,this.matched+=i;var a=i.match(/(?:\r\n?|\n).*/g);return a?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),i},"input"),unput:s(function(i){var a=i.length,d=i.split(/(?:\r\n?|\n)/g);this._input=i+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-a),this.offset-=a;var u=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),d.length-1&&(this.yylineno-=d.length-1);var y=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:d?(d.length===u.length?this.yylloc.first_column:0)+u[u.length-d.length].length-d[0].length:this.yylloc.first_column-a},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-a]),this.yyleng=this.yytext.length,this},"unput"),more:s(function(){return this._more=!0,this},"more"),reject:s(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:s(function(i){this.unput(this.match.slice(i))},"less"),pastInput:s(function(){var i=this.matched.substr(0,this.matched.length-this.match.length);return(i.length>20?"...":"")+i.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:s(function(){var i=this.match;return i.length<20&&(i+=this._input.substr(0,20-i.length)),(i.substr(0,20)+(i.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:s(function(){var i=this.pastInput(),a=new Array(i.length+1).join("-");return i+this.upcomingInput()+` +`+a+"^"},"showPosition"),test_match:s(function(i,a){var d,u,y;if(this.options.backtrack_lexer&&(y={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&&(y.yylloc.range=this.yylloc.range.slice(0))),u=i[0].match(/(?:\r\n?|\n).*/g),u&&(this.yylineno+=u.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:u?u[u.length-1].length-u[u.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+i[0].length},this.yytext+=i[0],this.match+=i[0],this.matches=i,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(i[0].length),this.matched+=i[0],d=this.performAction.call(this,this.yy,this,a,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),d)return d;if(this._backtrack){for(var o in y)this[o]=y[o];return!1}return!1},"test_match"),next:s(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var i,a,d,u;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),o=0;oa[0].length)){if(a=d,u=o,this.options.backtrack_lexer){if(i=this.test_match(d,y[o]),i!==!1)return i;if(this._backtrack){a=!1;continue}else return!1}else if(!this.options.flex)break}return a?(i=this.test_match(a,y[u]),i!==!1?i:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:s(function(){var a=this.next();return a||this.lex()},"lex"),begin:s(function(a){this.conditionStack.push(a)},"begin"),popState:s(function(){var a=this.conditionStack.length-1;return a>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:s(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:s(function(a){return a=this.conditionStack.length-1-Math.abs(a||0),a>=0?this.conditionStack[a]:"INITIAL"},"topState"),pushState:s(function(a){this.begin(a)},"pushState"),stateStackSize:s(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:s(function(a,d,u,y){switch(u){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;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]+)/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}}};return f}();p.lexer=x;function _(){this.yy={}}return s(_,"Parser"),_.prototype=p,p.Parser=_,new _}();X.parser=X;var Tt=X,at={};xt(at,{addEvent:()=>yt,addSection:()=>ht,addTask:()=>pt,addTaskOrg:()=>gt,clear:()=>ct,default:()=>It,getCommonDb:()=>ot,getSections:()=>dt,getTasks:()=>ut});var V="",lt=0,Y=[],U=[],W=[],ot=s(()=>kt,"getCommonDb"),ct=s(function(){Y.length=0,U.length=0,V="",W.length=0,vt()},"clear"),ht=s(function(n){V=n,Y.push(n)},"addSection"),dt=s(function(){return Y},"getSections"),ut=s(function(){let n=rt();const t=100;let e=0;for(;!n&&ee.id===lt-1).events.push(n)},"addEvent"),gt=s(function(n){const t={section:V,type:V,description:n,task:n,classes:[]};U.push(t)},"addTaskOrg"),rt=s(function(){const n=s(function(e){return W[e].processed},"compileTask");let t=!0;for(const[e,l]of W.entries())n(e),t=t&&l.processed;return t},"compileTasks"),It={clear:ct,getCommonDb:ot,addSection:ht,getSections:dt,getTasks:ut,addTask:pt,addTaskOrg:gt,addEvent:yt},Nt=12,Z=s(function(n,t){const e=n.append("rect");return e.attr("x",t.x),e.attr("y",t.y),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("width",t.width),e.attr("height",t.height),e.attr("rx",t.rx),e.attr("ry",t.ry),t.class!==void 0&&e.attr("class",t.class),e},"drawRect"),Lt=s(function(n,t){const l=n.append("circle").attr("cx",t.cx).attr("cy",t.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),r=n.append("g");r.append("circle").attr("cx",t.cx-15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),r.append("circle").attr("cx",t.cx+15/3).attr("cy",t.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function h(m){const p=nt().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);m.append("path").attr("class","mouth").attr("d",p).attr("transform","translate("+t.cx+","+(t.cy+2)+")")}s(h,"smile");function c(m){const p=nt().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);m.append("path").attr("class","mouth").attr("d",p).attr("transform","translate("+t.cx+","+(t.cy+7)+")")}s(c,"sad");function g(m){m.append("line").attr("class","mouth").attr("stroke",2).attr("x1",t.cx-5).attr("y1",t.cy+7).attr("x2",t.cx+5).attr("y2",t.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s(g,"ambivalent"),t.score>3?h(r):t.score<3?c(r):g(r),l},"drawFace"),Mt=s(function(n,t){const e=n.append("circle");return e.attr("cx",t.cx),e.attr("cy",t.cy),e.attr("class","actor-"+t.pos),e.attr("fill",t.fill),e.attr("stroke",t.stroke),e.attr("r",t.r),e.class!==void 0&&e.attr("class",e.class),t.title!==void 0&&e.append("title").text(t.title),e},"drawCircle"),ft=s(function(n,t){const e=t.text.replace(//gi," "),l=n.append("text");l.attr("x",t.x),l.attr("y",t.y),l.attr("class","legend"),l.style("text-anchor",t.anchor),t.class!==void 0&&l.attr("class",t.class);const r=l.append("tspan");return r.attr("x",t.x+t.textMargin*2),r.text(e),l},"drawText"),$t=s(function(n,t){function e(r,h,c,g,m){return r+","+h+" "+(r+c)+","+h+" "+(r+c)+","+(h+g-m)+" "+(r+c-m*1.2)+","+(h+g)+" "+r+","+(h+g)}s(e,"genPoints");const l=n.append("polygon");l.attr("points",e(t.x,t.y,50,20,7)),l.attr("class","labelBox"),t.y=t.y+t.labelMargin,t.x=t.x+.5*t.labelMargin,ft(n,t)},"drawLabel"),Pt=s(function(n,t,e){const l=n.append("g"),r=D();r.x=t.x,r.y=t.y,r.fill=t.fill,r.width=e.width,r.height=e.height,r.class="journey-section section-type-"+t.num,r.rx=3,r.ry=3,Z(l,r),mt(e)(t.text,l,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+t.num},e,t.colour)},"drawSection"),it=-1,At=s(function(n,t,e){const l=t.x+e.width/2,r=n.append("g");it++;const h=300+5*30;r.append("line").attr("id","task"+it).attr("x1",l).attr("y1",t.y).attr("x2",l).attr("y2",h).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Lt(r,{cx:l,cy:300+(5-t.score)*30,score:t.score});const c=D();c.x=t.x,c.y=t.y,c.fill=t.fill,c.width=e.width,c.height=e.height,c.class="task task-type-"+t.num,c.rx=3,c.ry=3,Z(r,c),mt(e)(t.task,r,c.x,c.y,c.width,c.height,{class:"task"},e,t.colour)},"drawTask"),Ct=s(function(n,t){Z(n,{x:t.startx,y:t.starty,width:t.stopx-t.startx,height:t.stopy-t.starty,fill:t.fill,class:"rect"}).lower()},"drawBackgroundRect"),Ht=s(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),D=s(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),mt=function(){function n(r,h,c,g,m,p,x,_){const f=h.append("text").attr("x",c+m/2).attr("y",g+p/2+5).style("font-color",_).style("text-anchor","middle").text(r);l(f,x)}s(n,"byText");function t(r,h,c,g,m,p,x,_,f){const{taskFontSize:i,taskFontFamily:a}=_,d=r.split(//gi);for(let u=0;u)/).reverse(),r,h=[],c=1.1,g=e.attr("y"),m=parseFloat(e.attr("dy")),p=e.text(null).append("tspan").attr("x",0).attr("y",g).attr("dy",m+"em");for(let x=0;xt||r==="
    ")&&(h.pop(),p.text(h.join(" ").trim()),r==="
    "?h=[""]:h=[r],p=e.append("tspan").attr("x",0).attr("y",g).attr("dy",c+"em").text(r))})}s(tt,"wrap");var Ft=s(function(n,t,e,l){var _;const r=e%Nt-1,h=n.append("g");t.section=r,h.attr("class",(t.class?t.class+" ":"")+"timeline-node "+("section-"+r));const c=h.append("g"),g=h.append("g"),p=g.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(tt,t.width).node().getBBox(),x=(_=l.fontSize)!=null&&_.replace?l.fontSize.replace("px",""):l.fontSize;return t.height=p.height+x*1.1*.5+t.padding,t.height=Math.max(t.height,t.maxHeight),t.width=t.width+2*t.padding,g.attr("transform","translate("+t.width/2+", "+t.padding/2+")"),Vt(c,t,r,l),t},"drawNode"),zt=s(function(n,t,e){var g;const l=n.append("g"),h=l.append("text").text(t.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(tt,t.width).node().getBBox(),c=(g=e.fontSize)!=null&&g.replace?e.fontSize.replace("px",""):e.fontSize;return l.remove(),h.height+c*1.1*.5+t.padding},"getVirtualNodeHeight"),Vt=s(function(n,t,e){n.append("path").attr("id","node-"+t.id).attr("class","node-bkg node-"+t.type).attr("d",`M0 ${t.height-5} v${-t.height+2*5} q0,-5 5,-5 h${t.width-2*5} q5,0 5,5 v${t.height-5} H0 Z`),n.append("line").attr("class","node-line-"+e).attr("x1",0).attr("y1",t.height).attr("x2",t.width).attr("y2",t.height)},"defaultBkg"),H={drawRect:Z,drawCircle:Mt,drawSection:Pt,drawText:ft,drawLabel:$t,drawTask:At,drawBackgroundRect:Ct,getTextObj:Ht,getNoteRect:D,initGraphics:Rt,drawNode:Ft,getVirtualNodeHeight:zt},Wt=s(function(n,t,e,l){var O,v;const r=_t(),h=r.leftMargin??50;T.debug("timeline",l.db);const c=r.securityLevel;let g;c==="sandbox"&&(g=q("#i"+t));const p=(c==="sandbox"?q(g.nodes()[0].contentDocument.body):q("body")).select("#"+t);p.append("g");const x=l.db.getTasks(),_=l.db.getCommonDb().getDiagramTitle();T.debug("task",x),H.initGraphics(p);const f=l.db.getSections();T.debug("sections",f);let i=0,a=0,d=0,u=0,y=50+h,o=50;u=50;let S=0,k=!0;f.forEach(function(E){const b={number:S,descr:E,section:S,width:150,padding:20,maxHeight:i},L=H.getVirtualNodeHeight(p,b,r);T.debug("sectionHeight before draw",L),i=Math.max(i,L+20)});let M=0,P=0;T.debug("tasks.length",x.length);for(const[E,b]of x.entries()){const L={number:E,descr:b,section:b.section,width:150,padding:20,maxHeight:a},A=H.getVirtualNodeHeight(p,L,r);T.debug("taskHeight before draw",A),a=Math.max(a,A+20),M=Math.max(M,b.events.length);let R=0;for(const F of b.events){const w={descr:F,section:b.section,number:b.section,width:150,padding:20,maxHeight:50};R+=H.getVirtualNodeHeight(p,w,r)}P=Math.max(P,R)}T.debug("maxSectionHeight before draw",i),T.debug("maxTaskHeight before draw",a),f&&f.length>0?f.forEach(E=>{const b=x.filter(F=>F.section===E),L={number:S,descr:E,section:S,width:200*Math.max(b.length,1)-50,padding:20,maxHeight:i};T.debug("sectionNode",L);const A=p.append("g"),R=H.drawNode(A,L,S,r);T.debug("sectionNode output",R),A.attr("transform",`translate(${y}, ${u})`),o+=i+50,b.length>0&&st(p,b,S,y,o,a,r,M,P,i,!1),y+=200*Math.max(b.length,1),o=u,S++}):(k=!1,st(p,x,S,y,o,a,r,M,P,i,!0));const B=p.node().getBBox();T.debug("bounds",B),_&&p.append("text").text(_).attr("x",B.width/2-h).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),d=k?i+a+150:a+100,p.append("g").attr("class","lineWrapper").append("line").attr("x1",h).attr("y1",d).attr("x2",B.width+3*h).attr("y2",d).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),bt(void 0,p,((O=r.timeline)==null?void 0:O.padding)??50,((v=r.timeline)==null?void 0:v.useMaxWidth)??!1)},"draw"),st=s(function(n,t,e,l,r,h,c,g,m,p,x){var _;for(const f of t){const i={descr:f.task,section:e,number:e,width:150,padding:20,maxHeight:h};T.debug("taskNode",i);const a=n.append("g").attr("class","taskWrapper"),u=H.drawNode(a,i,e,c).height;if(T.debug("taskHeight after draw",u),a.attr("transform",`translate(${l}, ${r})`),h=Math.max(h,u),f.events){const y=n.append("g").attr("class","lineWrapper");let o=h;r+=100,o=o+Bt(n,f.events,e,l,r,c),r-=100,y.append("line").attr("x1",l+190/2).attr("y1",r+h).attr("x2",l+190/2).attr("y2",r+h+(x?h:p)+m+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}l=l+200,x&&!((_=c.timeline)!=null&&_.disableMulticolor)&&e++}r=r-10},"drawTasks"),Bt=s(function(n,t,e,l,r,h){let c=0;const g=r;r=r+100;for(const m of t){const p={descr:m,section:e,number:e,width:150,padding:20,maxHeight:50};T.debug("eventNode",p);const x=n.append("g").attr("class","eventWrapper"),f=H.drawNode(x,p,e,h).height;c=c+f,x.attr("transform",`translate(${l}, ${r})`),r=r+10+f}return r=g,c},"drawEvents"),Ot={setConf:s(()=>{},"setConf"),draw:Wt},jt=s(n=>{let t="";for(let e=0;e` + .edge { + stroke-width: 3; + } + ${jt(n)} + .section-root rect, .section-root path, .section-root circle { + fill: ${n.git0}; + } + .section-root text { + fill: ${n.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`,"getStyles"),qt=Gt,Qt={db:at,renderer:Ot,parser:Tt,styles:qt};export{Qt as diagram}; diff --git a/assets/chunks/virtual_mermaid-config.DDnGl6nM.js b/assets/chunks/virtual_mermaid-config.DDnGl6nM.js new file mode 100644 index 00000000..effcb965 --- /dev/null +++ b/assets/chunks/virtual_mermaid-config.DDnGl6nM.js @@ -0,0 +1 @@ +const e={securityLevel:"loose",startOnLoad:!1};export{e as default}; diff --git a/assets/chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js b/assets/chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js new file mode 100644 index 00000000..c7e1c771 --- /dev/null +++ b/assets/chunks/xychartDiagram-6QU3TZC5.D_s22l7S.js @@ -0,0 +1,7 @@ +import{_ as a,aE as ui,l as Ft,a1 as Bt,a0 as gi,F as At,E as Xt,D as xi,i as di,r as Nt,s as pi,g as fi,q as mi,b as yi,c as bi,x as Ai,I as wi,k as Ci}from"../app.BCWCbnje.js";import{i as Si}from"./init.Gi6I4Gst.js";import{o as _i}from"./ordinal.BYWQX77i.js";import{l as Wt}from"./linear.D-_N5yV4.js";import"./framework.BDUoXecB.js";import"./theme.DQlX5-hY.js";function ki(e,t,i){e=+e,t=+t,i=(n=arguments.length)<2?(t=e,e=0,1):n<3?1:+i;for(var s=-1,n=Math.max(0,Math.ceil((t-e)/i))|0,o=new Array(n);++s"u"&&(T.yylloc={});var gt=T.yylloc;r.push(gt);var li=T.options&&T.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ci(L){g.length=g.length-2*L,A.length=A.length-L,r.length=r.length-L}a(ci,"popStack");function Mt(){var L;return L=x.pop()||T.lex()||It,typeof L!="number"&&(L instanceof Array&&(x=L,L=x.pop()),L=c.symbols_[L]||L),L}a(Mt,"lex");for(var P,O,M,xt,z={},at,V,Vt,rt;;){if(O=g[g.length-1],this.defaultActions[O]?M=this.defaultActions[O]:((P===null||typeof P>"u")&&(P=Mt()),M=Z[O]&&Z[O][P]),typeof M>"u"||!M.length||!M[0]){var dt="";rt=[];for(at in Z[O])this.terminals_[at]&&at>oi&&rt.push("'"+this.terminals_[at]+"'");T.showPosition?dt="Parse error on line "+(nt+1)+`: +`+T.showPosition()+` +Expecting `+rt.join(", ")+", got '"+(this.terminals_[P]||P)+"'":dt="Parse error on line "+(nt+1)+": Unexpected "+(P==It?"end of input":"'"+(this.terminals_[P]||P)+"'"),this.parseError(dt,{text:T.match,token:this.terminals_[P]||P,line:T.yylineno,loc:gt,expected:rt})}if(M[0]instanceof Array&&M.length>1)throw new Error("Parse Error: multiple actions possible at state: "+O+", token: "+P);switch(M[0]){case 1:g.push(P),A.push(T.yytext),r.push(T.yylloc),g.push(M[1]),P=null,Et=T.yyleng,d=T.yytext,nt=T.yylineno,gt=T.yylloc;break;case 2:if(V=this.productions_[M[1]][1],z.$=A[A.length-V],z._$={first_line:r[r.length-(V||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(V||1)].first_column,last_column:r[r.length-1].last_column},li&&(z._$.range=[r[r.length-(V||1)].range[0],r[r.length-1].range[1]]),xt=this.performAction.apply(z,[d,Et,nt,W.yy,M[1],A,r].concat(hi)),typeof xt<"u")return xt;V&&(g=g.slice(0,-1*V*2),A=A.slice(0,-1*V),r=r.slice(0,-1*V)),g.push(this.productions_[M[1]][0]),A.push(z.$),r.push(z._$),Vt=Z[g[g.length-2]][g[g.length-1]],g.push(Vt);break;case 3:return!0}}return!0},"parse")},ri=function(){var B={EOF:1,parseError:a(function(c,g){if(this.yy.parser)this.yy.parser.parseError(c,g);else throw new Error(c)},"parseError"),setInput:a(function(h,c){return this.yy=c||this.yy||{},this._input=h,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:a(function(){var h=this._input[0];this.yytext+=h,this.yyleng++,this.offset++,this.match+=h,this.matched+=h;var c=h.match(/(?:\r\n?|\n).*/g);return c?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),h},"input"),unput:a(function(h){var c=h.length,g=h.split(/(?:\r\n?|\n)/g);this._input=h+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-c),this.offset-=c;var x=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),g.length-1&&(this.yylineno-=g.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:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-c},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-c]),this.yyleng=this.yytext.length,this},"unput"),more:a(function(){return this._more=!0,this},"more"),reject:a(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return 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). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:a(function(h){this.unput(this.match.slice(h))},"less"),pastInput:a(function(){var h=this.matched.substr(0,this.matched.length-this.match.length);return(h.length>20?"...":"")+h.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:a(function(){var h=this.match;return h.length<20&&(h+=this._input.substr(0,20-h.length)),(h.substr(0,20)+(h.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:a(function(){var h=this.pastInput(),c=new Array(h.length+1).join("-");return h+this.upcomingInput()+` +`+c+"^"},"showPosition"),test_match:a(function(h,c){var g,x,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))),x=h[0].match(/(?:\r\n?|\n).*/g),x&&(this.yylineno+=x.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:x?x[x.length-1].length-x[x.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+h[0].length},this.yytext+=h[0],this.match+=h[0],this.matches=h,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(h[0].length),this.matched+=h[0],g=this.performAction.call(this,this.yy,this,c,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var r in A)this[r]=A[r];return!1}return!1},"test_match"),next:a(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var h,c,g,x;this._more||(this.yytext="",this.match="");for(var A=this._currentRules(),r=0;rc[0].length)){if(c=g,x=r,this.options.backtrack_lexer){if(h=this.test_match(g,A[r]),h!==!1)return h;if(this._backtrack){c=!1;continue}else return!1}else if(!this.options.flex)break}return c?(h=this.test_match(c,A[x]),h!==!1?h:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:a(function(){var c=this.next();return c||this.lex()},"lex"),begin:a(function(c){this.conditionStack.push(c)},"begin"),popState:a(function(){var c=this.conditionStack.length-1;return c>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:a(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:a(function(c){return c=this.conditionStack.length-1-Math.abs(c||0),c>=0?this.conditionStack[c]:"INITIAL"},"topState"),pushState:a(function(c){this.begin(c)},"pushState"),stateStackSize:a(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:a(function(c,g,x,A){switch(x){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;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: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 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();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 43:break;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}}};return B}();ct.lexer=ri;function st(){this.yy={}}return a(st,"Parser"),st.prototype=ct,ct.Parser=st,new st}();ft.parser=ft;var Ri=ft;function mt(e){return e.type==="bar"}a(mt,"isBarPlot");function wt(e){return e.type==="band"}a(wt,"isBandAxisData");function F(e){return e.type==="linear"}a(F,"isLinearAxisData");var X,Yt=(X=class{constructor(t){this.parentGroup=t}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce((o,u)=>Math.max(u.length,o),0)*i,height:i};const s={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const o of t){const u=ui(n,1,o),f=u?u.width:o.length*i,p=u?u.height:i;s.width=Math.max(s.width,f),s.height=Math.max(s.height,p)}return n.remove(),s}},a(X,"TextDimensionCalculatorWithFont"),X),Ot=.7,zt=.2,N,Ht=(N=class{constructor(t,i,s,n){this.axisConfig=t,this.title=i,this.textDimensionCalculator=s,this.axisThemeConfig=n,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"}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?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(){Ot*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(Ot*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 s=this.getLabelDimension(),n=zt*t.width;this.outerPadding=Math.min(s.width/2,n);const o=s.height+this.axisConfig.labelPadding*2;this.labelTextHeight=s.height,o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,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 s=this.getLabelDimension(),n=zt*t.height;this.outerPadding=Math.min(s.height/2,n);const o=s.width+this.axisConfig.labelPadding*2;o<=i&&(i-=o,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const s=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=s.height+this.axisConfig.titlePadding*2;this.titleTextHeight=s.height,n<=i&&(i-=n,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?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(i=>({text:i.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(i),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(s=>({path:`M ${i},${this.getScaleValue(s)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(s)}`,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(i=>({text:i.toString(),x:this.getScaleValue(i),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(s=>({path:`M ${this.getScaleValue(s)},${i} L ${this.getScaleValue(s)},${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(i=>({text:i.toString(),x:this.getScaleValue(i),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2: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(s=>({path:`M ${this.getScaleValue(s)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(s)},${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(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}},a(N,"BaseAxis"),N),Y,Ti=(Y=class extends Ht{constructor(t,i,s,n,o){super(t,n,o,i),this.categories=s,this.scale=pt().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=pt().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Ft.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},a(Y,"BandAxis"),Y),H,Di=(H=class extends Ht{constructor(t,i,s,n,o){super(t,n,o,i),this.domain=s,this.scale=Wt().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=Wt().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}},a(H,"LinearAxis"),H);function yt(e,t,i,s){const n=new Yt(s);return wt(e)?new Ti(t,i,e.categories,e.title,n):new Di(t,i,[e.min,e.max],e.title,n)}a(yt,"getAxis");var U,vi=(U=class{constructor(t,i,s,n){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=s,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}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),s=Math.max(i.width,t.width),n=i.height+2*this.chartConfig.titlePadding;return i.width<=s&&i.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=s,this.boundingRect.height=n,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}},a(U,"ChartTitle"),U);function Ut(e,t,i,s){const n=new Yt(s);return new vi(n,e,t,i)}a(Ut,"getChartTitleComponent");var $,Pi=($=class{constructor(t,i,s,n,o){this.plotData=t,this.xAxis=i,this.yAxis=s,this.orientation=n,this.plotIndex=o}getDrawableElement(){const t=this.plotData.data.map(s=>[this.xAxis.getScaleValue(s[0]),this.yAxis.getScaleValue(s[1])]);let i;return this.orientation==="horizontal"?i=Bt().y(s=>s[0]).x(s=>s[1])(t):i=Bt().x(s=>s[0]).y(s=>s[1])(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},a($,"LinePlot"),$),q,Li=(q=class{constructor(t,i,s,n,o,u){this.barData=t,this.boundingRect=i,this.xAxis=s,this.yAxis=n,this.orientation=o,this.plotIndex=u}getDrawableElement(){const t=this.barData.data.map(o=>[this.xAxis.getScaleValue(o[0]),this.yAxis.getScaleValue(o[1])]),s=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=s/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(o=>({x:this.boundingRect.x,y:o[0]-n,height:s,width:o[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(o=>({x:o[0]-n,y:o[1],width:s,height:this.boundingRect.y+this.boundingRect.height-o[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},a(q,"BarPlot"),q),G,Ei=(G=class{constructor(t,i,s){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0}}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,s]of this.chartData.plots.entries())switch(s.type){case"line":{const n=new Pi(s,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break;case"bar":{const n=new Li(s,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...n.getDrawableElement())}break}return t}},a(G,"BasePlot"),G);function $t(e,t,i){return new Ei(e,t,i)}a($t,"getPlotComponent");var j,Ii=(j=class{constructor(t,i,s,n){this.chartConfig=t,this.chartData=i,this.componentStore={title:Ut(t,i,s,n),plot:$t(t,i,s),xAxis:yt(i.xAxis,t.xAxis,{titleColor:s.xAxisTitleColor,labelColor:s.xAxisLabelColor,tickColor:s.xAxisTickColor,axisLineColor:s.xAxisLineColor},n),yAxis:yt(i.yAxis,t.yAxis,{titleColor:s.yAxisTitleColor,labelColor:s.yAxisLabelColor,tickColor:s.yAxisTickColor,axisLineColor:s.yAxisLineColor},n)}}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),u=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),f=this.componentStore.plot.calculateSpace({width:o,height:u});t-=f.width,i-=f.height,f=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),n=f.height,i-=f.height,this.componentStore.xAxis.setAxisPosition("bottom"),f=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=f.height,this.componentStore.yAxis.setAxisPosition("left"),f=this.componentStore.yAxis.calculateSpace({width:t,height:i}),s=f.width,t-=f.width,t>0&&(o+=t,t=0),i>0&&(u+=i,i=0),this.componentStore.plot.calculateSpace({width:o,height:u}),this.componentStore.plot.setBoundingBoxXY({x:s,y:n}),this.componentStore.xAxis.setRange([s,s+o]),this.componentStore.xAxis.setBoundingBoxXY({x:s,y:n+u}),this.componentStore.yAxis.setRange([n,n+u]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(p=>mt(p))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,s=0,n=0,o=0,u=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),f=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),p=this.componentStore.plot.calculateSpace({width:u,height:f});t-=p.width,i-=p.height,p=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=p.height,i-=p.height,this.componentStore.xAxis.setAxisPosition("left"),p=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=p.width,n=p.width,this.componentStore.yAxis.setAxisPosition("top"),p=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=p.height,o=s+p.height,t>0&&(u+=t,t=0),i>0&&(f+=i,i=0),this.componentStore.plot.calculateSpace({width:u,height:f}),this.componentStore.plot.setBoundingBoxXY({x:n,y:o}),this.componentStore.yAxis.setRange([n,n+u]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:s}),this.componentStore.xAxis.setRange([o,o+f]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:o}),this.chartData.plots.some(k=>mt(k))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?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}},a(j,"Orchestrator"),j),Q,Mi=(Q=class{static build(t,i,s,n){return new Ii(t,i,s,n).getDrawableElement()}},a(Q,"XYChartBuilder"),Q),J=0,qt,tt=_t(),it=St(),b=kt(),bt=it.plotColorPalette.split(",").map(e=>e.trim()),ot=!1,Ct=!1;function St(){const e=gi(),t=At();return Xt(e.xyChart,t.themeVariables.xyChart)}a(St,"getChartDefaultThemeConfig");function _t(){const e=At();return Xt(xi.xyChart,e.xyChart)}a(_t,"getChartDefaultConfig");function kt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}a(kt,"getChartDefaultData");function ht(e){const t=At();return di(e.trim(),t)}a(ht,"textSanitizer");function Gt(e){qt=e}a(Gt,"setTmpSVGG");function jt(e){e==="horizontal"?tt.chartOrientation="horizontal":tt.chartOrientation="vertical"}a(jt,"setOrientation");function Qt(e){b.xAxis.title=ht(e.text)}a(Qt,"setXAxisTitle");function Rt(e,t){b.xAxis={type:"linear",title:b.xAxis.title,min:e,max:t},ot=!0}a(Rt,"setXAxisRangeData");function Kt(e){b.xAxis={type:"band",title:b.xAxis.title,categories:e.map(t=>ht(t.text))},ot=!0}a(Kt,"setXAxisBand");function Zt(e){b.yAxis.title=ht(e.text)}a(Zt,"setYAxisTitle");function Jt(e,t){b.yAxis={type:"linear",title:b.yAxis.title,min:e,max:t},Ct=!0}a(Jt,"setYAxisRangeData");function ti(e){const t=Math.min(...e),i=Math.max(...e),s=F(b.yAxis)?b.yAxis.min:1/0,n=F(b.yAxis)?b.yAxis.max:-1/0;b.yAxis={type:"linear",title:b.yAxis.title,min:Math.min(s,t),max:Math.max(n,i)}}a(ti,"setYAxisRangeFromPlotData");function Tt(e){let t=[];if(e.length===0)return t;if(!ot){const i=F(b.xAxis)?b.xAxis.min:1/0,s=F(b.xAxis)?b.xAxis.max:-1/0;Rt(Math.min(i,1),Math.max(s,e.length))}if(Ct||ti(e),wt(b.xAxis)&&(t=b.xAxis.categories.map((i,s)=>[i,e[s]])),F(b.xAxis)){const i=b.xAxis.min,s=b.xAxis.max,n=(s-i)/(e.length-1),o=[];for(let u=i;u<=s;u+=n)o.push(`${u}`);t=o.map((u,f)=>[u,e[f]])}return t}a(Tt,"transformDataWithoutCategory");function Dt(e){return bt[e===0?0:e%bt.length]}a(Dt,"getPlotColorFromPalette");function ii(e,t){const i=Tt(t);b.plots.push({type:"line",strokeFill:Dt(J),strokeWidth:2,data:i}),J++}a(ii,"setLineData");function ei(e,t){const i=Tt(t);b.plots.push({type:"bar",fill:Dt(J),data:i}),J++}a(ei,"setBarData");function si(){if(b.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return b.title=Nt(),Mi.build(tt,b,it,qt)}a(si,"getDrawableElem");function ni(){return it}a(ni,"getChartThemeConfig");function ai(){return tt}a(ai,"getChartConfig");var Vi=a(function(){Ai(),J=0,tt=_t(),b=kt(),it=St(),bt=it.plotColorPalette.split(",").map(e=>e.trim()),ot=!1,Ct=!1},"clear"),Bi={getDrawableElem:si,clear:Vi,setAccTitle:pi,getAccTitle:fi,setDiagramTitle:mi,getDiagramTitle:Nt,getAccDescription:yi,setAccDescription:bi,setOrientation:jt,setXAxisTitle:Qt,setXAxisRangeData:Rt,setXAxisBand:Kt,setYAxisTitle:Zt,setYAxisRangeData:Jt,setLineData:ii,setBarData:ei,setTmpSVGG:Gt,getChartThemeConfig:ni,getChartConfig:ai},Wi=a((e,t,i,s)=>{const n=s.db,o=n.getChartThemeConfig(),u=n.getChartConfig();function f(m){return m==="top"?"text-before-edge":"middle"}a(f,"getDominantBaseLine");function p(m){return m==="left"?"start":m==="right"?"end":"middle"}a(p,"getTextAnchor");function k(m){return`translate(${m.x}, ${m.y}) rotate(${m.rotation||0})`}a(k,"getTextTransformation"),Ft.debug(`Rendering xychart chart +`+e);const R=wi(t),w=R.append("g").attr("class","main"),y=w.append("rect").attr("width",u.width).attr("height",u.height).attr("class","background");Ci(R,u.height,u.width,!0),R.attr("viewBox",`0 0 ${u.width} ${u.height}`),y.attr("fill",o.backgroundColor),n.setTmpSVGG(R.append("g").attr("class","mermaid-tmp-group"));const D=n.getDrawableElem(),S={};function v(m){let _=w,l="";for(const[E]of m.entries()){let K=w;E>0&&S[l]&&(K=S[l]),l+=m[E],_=S[l],_||(_=S[l]=K.append("g").attr("class",m[E]))}return _}a(v,"getGroup");for(const m of D){if(m.data.length===0)continue;const _=v(m.groupTexts);switch(m.type){case"rect":_.selectAll("rect").data(m.data).enter().append("rect").attr("x",l=>l.x).attr("y",l=>l.y).attr("width",l=>l.width).attr("height",l=>l.height).attr("fill",l=>l.fill).attr("stroke",l=>l.strokeFill).attr("stroke-width",l=>l.strokeWidth);break;case"text":_.selectAll("text").data(m.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",l=>l.fill).attr("font-size",l=>l.fontSize).attr("dominant-baseline",l=>f(l.verticalPos)).attr("text-anchor",l=>p(l.horizontalPos)).attr("transform",l=>k(l)).text(l=>l.text);break;case"path":_.selectAll("path").data(m.data).enter().append("path").attr("d",l=>l.path).attr("fill",l=>l.fill?l.fill:"none").attr("stroke",l=>l.strokeFill).attr("stroke-width",l=>l.strokeWidth);break}}},"draw"),Oi={draw:Wi},Ui={parser:Ri,db:Bi,renderer:Oi};export{Ui as diagram}; diff --git a/assets/create_new_tag.vcx7NIW6.png b/assets/create_new_tag.vcx7NIW6.png new file mode 100644 index 0000000000000000000000000000000000000000..42b46c5daacee16fd9fb785999c93f24b20a1c0e GIT binary patch literal 41188 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¨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 literal 0 HcmV?d00001 diff --git "a/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.js" "b/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.js" new file mode 100644 index 00000000..b69bd0fb --- /dev/null +++ "b/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.js" @@ -0,0 +1,176 @@ +import{_ as n,c as e,G as i,a3 as l,B as t,o as p}from"./chunks/framework.BDUoXecB.js";const g=JSON.parse('{"title":"AWSインフラ命名規約","description":"","frontmatter":{"sidebarDepth":4,"title":"AWSインフラ命名規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"AWS,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forAWSResource/AWSインフラリソース命名規約.md","filePath":"documents/forAWSResource/AWSインフラリソース命名規約.md"}'),r={name:"documents/forAWSResource/AWSインフラリソース命名規約.md"};function d(h,s,c,o,u,b){const a=t("page-title");return p(),e("div",null,[i(a),s[0]||(s[0]=l(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。 ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。 また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    前提条件

    • 開発チームが 3 ~ 30 名程度で構築する規模での利用を想定している
    • 本規約をそのままプロジェクトに導入することを推奨する
      • そのままの導入ができない場合は、一部を抜粋、拡張して用いられることを想定している
    • AWS の構成はマネージドサービスを活用するベストプラクティスに従うものとする
      • 例えば、1 台の EC2 上で DB とアプリのように複数のサービスを稼働させるといった構成は考慮しない
    • 一部のリージョンでのみ利用可能な機能は想定していない

    名前の構成要素

    各リソースの名前に用いる要素を次の一覧に示す。

    CategoryItemNameUsage
    Common{env}環境環境の区別
    {product}製品名構築する製品名またはシステム名。稼働するマイクロサービス名もこれに当たる
    {role}役割役割を示す。場合によっては具体的な製品名 postgres, jenkins などを指定する
    {usage}用途利用目的やリソースの動作 (action) を示す。user_master, fileupload など識別したい値を指定する
    {target}対象操作の対象。usage が複数の対象があり区別したいときに利用する。
    Network{region}リージョンリージョンコード の略称を用いる
    {az}アベイラビリティーゾーンマルチ AZ 構成などで、明示的に AZ を意識する場合に用いる
    {access}アクセス修飾子access modifier. ネットワークでの public, private を区別したいときに利用する
    {permission}権限allow または deny を指定する。Security Group での利用を想定
    Organization{company}会社名会社の特定に利用。複数の会社による構築や、運用に複数社関わる場合などに必要となる
    {project}プロジェクトプロジェクト制でプロダクトを開発する際のプロジェクト名または、プロジェクトコード

    環境 ({env})

    ソフトウェア開発では複数の環境を用意し、dev, stg, prod などの名前をつけて互いに完全に分離・区別する運用を行うことが多い。そういった環境分離のために AWS インフラは次のいずれか、もしくは組み合わせで設計される。

    1. 環境単位で AWS アカウントを作成する
    2. 環境単位で AWS リージョンを分ける
    3. 命名で分ける

    いずれの方法でも、 各リソース名に環境名を付与することを推奨 する。冗長な命名となる場合もあるが、以下が理由である。

    • 同一 AWS アカウントかつ同一リージョン内には、同じ名前のリソースを作成できない
    • AWS リソース名のみで環境を特定できるようにする事で、誤った環境のリソースを操作してしまうミスを低減する
    • メンバー間の認識齟齬を無くし生産性を高める
      • チームメンバーなどの問い合わせやトラブルシュートの際に、リソース名のみでどの環境にあるか素早く判断できるようにする
      • メンバーの役割によっては AWS アカウント構成を完全には理解できていない可能性がある

    環境識別子

    主要な環境名と識別子 (Identifier) は以下である。AWS リソースの命名には識別子を用いる。

    NameIdentifierMemo
    Productionprodエンドユーザーが使う環境、本番運用環境
    Stagingstg本番と同じ構成でテストするための環境
    User Acceptance Testuatユーザーがシステムのレビュー、または操作を学習するための環境
    Performance Testperf性能検証を行うための環境
    Developmentdev開発チームが開発するための環境
    Locallocalローカル環境

    prod についてはよく用いる dev, stg と見間違えを防ぐため 4 文字にしている。

    デプロイメント環境 の考え方では、User Acceptance Test 環境を単にテスト環境 (Test) 呼ぶが、テストという単語は汎用的であるため複数の環境にあてはまる。したがって容易に認識齟齬が生じるため本規約では非推奨とする。

    名前には必ず識別子を用いる。環境名をそのまま利用しない (例: production-example-s3bucket とは命名しない)。

    理由:

    • AWS リソースによっては名前の文字数の制限が厳しい (例: ELB は最大 32 文字である)
    • AWS コンソールや設計ドキュメントなどで一覧化した場合に見切れる可能性を減らして可読性を高める
    • 識別子に採用した単語は一般的に用いられている略称である
    • その他の環境についても、環境識別子の数は通常そこまで多くならないず、またよく用いられるため、利用者にとっての認識負荷は少なく覚えるコストも低い

    同一目的の複数環境

    同一目的の環境が複数必要な場合は、識別子の末尾に連番をつける。

    例:

    • dev1, dev2, dev3
    • stg1, stg2

    役割 ({role})

    アプリケーションを構成する要素には役割がある。それを AWS リソース名に含めることで、開発者の理解を助け、操作ミスを低減する。

    主要なロール名と識別子は以下である。

    NameIdentifierMemo
    Web Serverwebapache や nginx などの Web サーバとしての役割
    Web ApplicationappWeb アプリケーションとしての役割
    Web APIapiHTTP(s) API を提供する
    Jobjob時間やある特定のイベントをもとにバックグラウンドの処理(バッチ処理など)を行う
    I/Fifファイル入出力を行う
    DBdbデータベース
    Cachecacheキャッシュ
    CI/CDciCI/CD サーバ

    名前を一般化せず、プロダクト名をそのまま利用しても問題ない。例えば、Web アプリサーバに tomcat、CI/CD サーバに jenkins といった名称を使っても良い。

    用途 ({usage})

    利用目的やリソースの動作 (action) を示す。user_master, fileupload といった形式や、認証(auth)や BFF(Backend For Frontend)など。

    役割 ({role}) と合わせてリソースが一意に特定できる名称を設定する。

    リージョン ({region})

    マルチリージョン構成を取り、リージョンを意識する必要のある場合に利用する。リージョンコード そのものではなく略称を識別子として用いる。

    NameRegion CodeIdentifier
    米国東部 (バージニア北部)us-east-1ue1
    米国東部 (オハイオ)us-east-2ue2
    米国西部 (北カリフォルニア)us-west-1uw1
    米国西部 (オレゴン)us-west-2uw2
    アジアパシフィック (東京)ap-northeast-1an1
    アジアパシフィック (ソウル)ap-northeast-2an2
    アジアパシフィック (大阪)ap-northeast-3an3
    アジアパシフィック (シンガポール)ap-southeast-1as1

    シングルリージョン構成または、リージョン間のリソースの関係が疎である場合はリージョン識別子を付与しない。

    アベイラビリティゾーン ({az})

    AZ 名にはリージョンコードを含めず、末尾のアルファベットだけとする。

    AZ IDIdentifier
    ap-northeast-1aa
    ap-northeast-1cc
    ap-northeast-1dd
    • 利用可能な文字: [a-d]{1}

    アクセス修飾子 ({access})

    VPC のサブネットは、パブリックサブネットの場合インターネットに直接アクセスできる。パブリックサブネットを区別したい場合はリソース名にアクセス修飾子を付与する。

    NameIdentifier
    パブリックサブネットpublic
    プライベートサブネットprivate

    全体ポリシー

    命名規約

    次のように各要素を使ってケバブケース (kebab-case) で命名する。パスカルケース (PascalCase) やスネークケース (snake_case) は利用しない。なお、サービス名自体にパスカルケースを用いることは許容する

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}-{usage}

    理由:

    • ほぼ全ての AWS サービスではリソース名にハイフンを許容する。一方で、アンダースコアを許容しない WebACL のようなサービスがある
    • 環境名、サービス名などの単位で区切りを明確にできる

    利用可能な文字

    利用する文字は、半角英数字とハイフンに限定する。また、 小文字を推奨 する。

    • 推奨: [a-z0-9\\-]+

    また、先頭文字には半角英字を用い (ハイフン、数値を先頭にしない)、ハイフンは 2 文字以上連続させないこととする。

    AWS サービス名を含めない

    リソース名に AWS サービス名を含めない。

    良い例:

    properties
    stg-fuga-web-fileupload
    +stg-fuga-web-fileupload

    悪い例:

    properties
    stg-fuga-web-fileupload-s3
    +stg-fuga-web-fileupload-bucket

    理由:

    • AWS コンソールで見たときにどの AWS サービスのリソースを見ているか自明である
    • Terraform の命名規則 にリソース名を繰り返さないという記載があり、整合性を持たせるため

    Resource and data source arguments Do not repeat resource type in resource name (not partially, nor completely):

    ただし、VPC エンドポイントやセキュリティグループのように、どの AWS サービスの何で利用されているかを示す場合には利用することがある。

    プロジェクト名を含めない

    プロジェクト制を取っている場合、その開発チームの持ち物であることを示すためプロジェクト名をリソース名に含めたくなるが非推奨である。

    理由:

    • 必ずしも開発しているプロダクトと、プロジェクトの粒度・ライフサイクルは一致しない
    • プロジェクトが解散すると管理主管が曖昧になる

    プロジェクト名の替わりにプロダクト名を含めることとする。

    マルチクラウドを考慮し、aws 識別子を追加するかどうか

    AWS だけではなく、Azure や GCP などを組み合わせたマルチクラウド運用を行っている、あるいは行う予定がある場合を考慮し、リソース名に aws といったプレフィックス/サフィックスを付与する考えもある。

    本規約では、aws キーワードをリソース名に含めることは非推奨とする。

    理由:

    • 同一 product を異なるクラウドサービスで運用することは稀
    • 一部のサービス (例えば DWH のみ Google BigQuery を利用するようなケース) だけの使用であれば、{usage} で区別すれば十分である

    サービス別の命名規約

    サービスによって異なる命名規約と例を記載する。

    以下ではプロダクト名を fuga とした場合の例をあげる。

    VPC

    VPC に関わるリソースの命名について記載する。

    Resource NameNaming ConventionExampleNote
    VPC{env}-{product}stg-fuga
    Subnet{env}-{product}-{access}-{az}stg-fuga-public-aAZ: どこのゾーンかを識別するため
    EIP{env}-{product}-{usage}stg-fuga-nat
    Route Table{env}-{product}-{access}stg-fuga-public
    Internet Gateway{env}-{product}stg-fuga
    NAT Gateway{env}-{product}stg-fuga
    Endpoint{env}-{product}-{aws_service}stg-fuga-s3様々なサービスが利用するため AWS サービス名を含めている
    Security Group{env}-{product}-{aws_service}-{usage}stg-fuga-ec2-bastion様々なサービスが利用するため AWS サービス名を含めている

    API Gateway

    AWS上の命名制約
    • ドキュメントは確認できなかったら、リソース名は 1024 文字まで指定可能。システム上は一意である必要はない

    API Gateway は 全体ポリシーの命名規約 に則る。管理上、一意となるように命名する

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}-{usage}-{access}
    +
    +# 例
    +stg-fuga-web-portal-private
    +stg-fuga-web-fileupload-public
    • API Gateway には複数の機能種別 (REST, HTTP) が存在するが、命名には含めない
    • private/public を名前に含めることで、public は認証が入っているかなどをチェックできる

    EC2

    インスタンス名の制限=タグの制限のため、名前は Amazon EC2 リソースのタグ付け に従う必要がある。

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}
    +
    +# 例
    +stg-fuga-web

    オートスケーリング、オートヒーリング構成をする場合にどこの AZ に配置するかを意識させないため、リソース名に AZ は基本的に含めない。そのような構成をしないという方針は、アンチパターンのため構成を見直すべきと考える。

    LB

    AWS上の命名制約

    LB には ALB/NLB/CLB などの種類があるが、いずれも以下の命名規約に従う。また、Internal LB に関しては、{usage} 部に含める。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-{access}
    +
    +# 例
    +stg-fuga-web-api-public

    ターゲットグループ名は、基本的には LB と同じである。

    ただし、Blue/Green デプロイを行う場合は、ターゲットグループ名をユニークにし、どちら (Blue/Green) に所属しているかをわかるようにする。

    properties
    # Target group name (Blue/Green) の命名規約
    +{env}-{product}-{role}-{usage}-{access}-blue
    +
    +# 例
    +stg-fuga-web-public-blue

    ECS

    AWS上の命名制約
    • クラスター
      • 最大文字数: 255
      • 利用可能文字種: A-z, 0-9, -, _
      • その他制約: 先頭の文字は A-z のみ利用可能
    • サービス、タスク定義
      • 最大文字数: 255
      • 利用可能文字種: A-z, 0-9, -, _

    ECS の命名規約は以下のとおりである

    properties
    # クラスターの命名規約
    +{env}-{product}
    +
    +# 例
    +stg-fuga
    +
    +# サービスの命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-api-auth
    +stg-fuga-web-frontend
    +
    +# タスク定義の命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-batch-import-address

    Lambda

    Lambda Function

    AWS上の命名制約

    CreateFunction によると以下の制約である。

    • 1 ~ 64 文字
    • 利用可能文字: [a-zA-Z0-9-_]+

    Lambda は運用を経てリソース数が増えやすいサービスの一つである。そのため個別の機能名の前に {role} を含めてグルーピングしやすい名前にする。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-import-userprofile
    +stg-fuga-job-checkconsistency
    +stg-fuga-report-successrate

    もし、Scatter-Gather パターンを用いる場合は次のようにサフィックスに追加して区別する。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-scatter
    +{env}-{product}-{role}-{usage}-segment
    +{env}-{product}-{role}-{usage}-gather

    Lambda Layer

    AWS上の命名制約
    • 1 ~ 64 文字
    • 利用可能文字: [a-zA-Z0-9-_]+

    Lambda Layers は実行環境が重要であるため、 {runtime} で言語バージョンを指定する。

    properties
    # 命名規約
    +{env}-{product}-{runtime}-{usage}
    +
    +# 例
    +stg-fuga-python310-auth
    +stg-fuga-nodejs18-frontend

    RDS/Aurora

    AWS上の命名制約

    Amazon RDS の命名に関する制約 によると以下の制約である。

    • 1 ~ 63 個の英数字またはハイフンを使用する必要があります
    • 1 字目は文字である必要があります
    • 文字列の最後にハイフンを使用したり、ハイフンを 2 つ続けて使用したりすることはできません
    • 1 つの AWS アカウント、1 つの AWS リージョンにつき、すべての DB インスタンスにおいて一意である必要があります
    properties
    # クラスターの命名規約
    +{env}-{product}-{role}
    +
    +# 例
    +stg-fuga-auth
    +
    +# インスタンスの命名規約
    +{env}-{product}-{role}-{serial}
    +
    +# 例
    +stg-fuga-auth-01
    +
    +# DBパラメータグループの命名規約
    +{env}-{product}-{role}
    +{env}-{product}
    +
    +# 手動スナップショットの命名規約
    +{env}-{product}-{role}-{yyyy}-{mm}-{dd}

    AZ は含めない。

    理由:

    • RDS はマルチ AZ 構成をとることが推奨のため
    • Aurora は自動でマルチ AZ 構成をとっているため

    DB パラメータグループは、role 単位での設定を推奨する。product を跨いでの設定は行わない。

    • 設定値の変更はパラメータグループを適用している全ての DB に変更が反映される。同じパラメータグループを複数の DB で共有し過ぎることにより意図しない DB にまで設定変更が反映されるリスクを避けるため

    クラスター/インスタンスに適用する IAM ロール

    DB サブネット

    • VPC のサブネットを参照

    DynamoDB

    AWS上の命名制約

    Amazon DynamoDB でサポートされるデータ型と命名規則 によると以下の制約である。

    • すべての名前は UTF-8 を使用してエンコードする必要があり、大文字と小文字が区別される
    • 3 ~ 255 文字
    • 利用可能な文字: [a-zA-Z0-9_.-]+

    DynamoDB のテーブル名には、環境、プロダクト名、用途を用いる。データは長く残り、かつ変更しにくいため会社名などの変化しやすい項目は含めない。

    properties
    # DynamoDB の命名規約
    +{env}-{product}-{usage}
    +
    +# 例
    +stg-fuga-user
    +stg-fuga-user-accesslog

    なお、インデックス名は idx-1, idx-2 のような連番での管理を推奨する。RDB とは異なりアカウント単位での一意性は不要なため、テーブル名は含めなくても良いため、 idx_{テーブル名}_{連番} としなくても良い。DynamoDB は 最大で 20 のグローバルセカンダリインデックス を持つことができるが、インデックスの数は最小限に抑えることが鉄則であるため、0 埋めしない。ただし、要件上どうしても多用が避けられないことが判明している場合は idx-01, idx-02 と 0 埋めする。

    S3 Bucket

    AWS上の命名制約

    Amazon S3 バケットの命名要件 によると以下の制約である。

    • 1 ~ 63 文字
    • 半角英数字、ピリオド、ダッシュのみを使用可能
    • バケット名の各ラベルは、小文字または数字で始まっている必要がある
    • バケット名では、アンダースコア、末尾のダッシュ、連続するピリオド、隣接するピリオドとダッシュは使用できない
    • バケット名を IP アドレス (198.51.100.24) として書式設定することはできない

    S3 は非常に多くの用途で用いることがあるため、利用形態に応じて規則を変えて対応する。

    properties
    # 通常の命名規約
    +{env}-{product}-{use}
    +
    +# 例
    +stg-fuga-fileupload
    +
    +# ログを保管するバケットの命名規約
    +{env}-{product}-{service}-logs
    +
    +# 例
    +stg-fuga-alb-logs
    +
    +# データ授受で利用する場合の命名規約
    +{env}-{product}-{use}-{dest}-if
    +
    +# 例
    +stg-fuga-userinfo-fis-if

    Kinesis Data Streams

    AWS上の命名制約

    CreateStream によると以下の制約である。

    • 異なる AWS アカウントであれば同名が許容
    • 異なるリージョンであれば同名が許容
    • 1 ~ 128 文字
    • [a-zA-Z0-9_.-]+

    IoT のセンシングを始めとしたイベントデータの場合は、次の命名規約を用いる。{role} には import や export など、どのような処理を行うかを規定する。

    設計によっては、データ種別 (スキーマ) 毎に分離することもあるため、デバイス名やセンサー名などの発生源の名前を持たせる。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-{schema}
    +
    +# 例
    +stg-fuga-import-iotsensor-devicetype
    +stg-fuga-import-iotsensor-toggle

    ジョブキューとして用いる場合は、どのジョブを利用するかが重要であるため、呼び出し用であることが明確になるように命名する。

    properties
    # 命名規約
    +{env}-{product}-call-{呼び出したいジョブ名}
    +
    +# 例
    +stg-fuga-call-job-arrival-check

    SQS

    AWS上の命名制約

    Amazon SQS キューとメッセージの識別子 によると以下の制約である。

    • 最大 80 文字
    • [a-zA-Z0-9_-]
    • FIFO キューの場合には .fifo のサフィックスで終わる必要がある
    • 1 つの AWS アカウント、1 つの AWS リージョンにつき一意である必要がある

    1 つのキューに対し、複数のプロデューサー、コンシューマーを取りうるため、プロデューサー、コンシューマーを名前に含めることは推奨しない。

    properties
    # 標準キューの命名規約
    +{env}-{company}-{product}-{usage}
    +
    +# 例
    +stg-future-fuga-processresult
    +
    +# FIFOキューの命名規約
    +{env}-{company}-{product}-{usage}.fifo
    +
    +# 例
    +stg-future-fuga-processresult.fifo

    Event Bridge Rule

    AWS上の命名制約
    • 最大 64 文字
    • 数字、小文字/大文字、 . (ピリオド)、 - (ハイフン)、 _ (アンダーバー) が使用可能
    • 同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることは不可
    properties
    # 命名規約
    +{env}-{product}-{usage}-{source}-{target}
    +
    +# 例
    +stg-fuga-deploy-s3-codepipeline
    +stg-fuga-archive-auth0-s3
    +stg-fuga-polling-schedule-lambda

    ※スケジュールタイプのルールの場合は {source}schedule と記載する。

    IAM

    IAM に関わるリソースの命名について記載する。IAM グループ、IAM ユーザー、IAM ロール、IAM ポリシーの 4 点について述べる。

    IAM ユーザー

    IAM ユーザーについては、誰 (人またはシステム) が利用するのかを識別することを目的とする。同じユーザーを複数の人やシステムで使いまわすと、誰が操作したのかといった証跡を追えなくなってしまうため、個別に発行することを推奨する。 また、役割や権限といった情報は名前に含めない。そのような名前はユーザーに紐づけるロールが増えた際などに名前と役割や権限の実態が乖離してしまうためである。

    IAM ユーザー名については全体ポリシーから外れ、アンダースコア区切りを推奨する。

    理由:

    • 多くのサービスでユーザー名には慣習的にアンダースコアを用いることが多いため

    人が利用する IAM ユーザー:

    properties
    # 命名規約
    +{company}_{username}
    +
    +# 例
    +future_taro_mirai

    ※AWS アカウントに関与する人が単一の会社に属する人だけである場合は {company}_ を省略しても良い。

    システムが利用する IAM ユーザー:

    properties
    # 命名規約
    +{product}_{usage}
    +
    +# 例
    +fuga_api
    +fuga_auth0

    AWS サービスに権限付与する場合は IAM ロールで付与することを想定している。システムが利用する IAM ユーザーは、別のクラウドや SaaS 等への権限付与に使うことを想定している。

    全体ポリシーの命名規約 とは異なり、環境名 {env} を Prefix につけない理由は次である。

    • ある AWS アカウントに対して、Switch Role などで別の環境にアクセスする際に混乱が生じる
    • ブラウザのパスワード管理などのために ID 名を分けたいという考えもあるかもしれないが、パスワード管理アプリなどの利用を推奨する

    IAM グループ

    IAM グループに IAM ユーザーを追加することで複数ユーザーの権限を一括管理できる。IAM ユーザーは複数の IAM グループに追加可能だが、所属可能なグループ数は最大で 10 という制約があるため注意が必要である。

    この制約を踏まえ、各役職ごとに基本となるグループを作成し、基本グループで対応できない例外的な権限の付与を個別のグループで対応することを想定した命名としている。

    また、グループ数をむやみに増やさないためにグループ名に環境名 {env} はつけない。仮に future-developer というグループが dev 環境のみにアクセスできるといったような制御をする場合でも、グループ名には dev をつけず、dev 環境にアクセス可能なポリシーをグループにアタッチする方針としている。

    基本となるグループ:

    properties
    # 命名規約
    +{company}-{role}
    +
    +# 例
    +future-developer
    +future-maintainer

    ここでの {role} はユーザーが担う役割を表す。

    個別のグループ:

    properties
    # 命名規約
    +{target}-{usage}
    +
    +# 例
    +bastion-access

    個別のグループは Session Manager で EC2 にアクセスするグループといった使い方を想定している。

    例外的に特定のユーザーにのみ権限を付与する、会社を超えて共通のグループを付与するといったユースケースも考えられる。

    IAM ロール

    IAM ロールは、AWS サービスに権限を付与する目的で利用する。IAM ロールに複数の IAM ポリシーをアタッチできるため、IAM ロールの命名では細かい権限を表現することは避け、IAM ロールを誰が使うのかを明確にすることを主目的とする。

    properties
    # 命名規約
    +{env}-{product}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-ec2-bastion
    +stg-fuga-lambda-api

    ※場合によっては {usage} 部に詳細情報を追加しても良い

    IAM ポリシー

    IAM ポリシーの命名に入る前に、ポリシーの設計方針について記載する。 ここでは、ポリシー設計方針の代表例として、以下の 2 パターンについて説明する。

    • 細かく設定し再利用するパターン
    • 特定のリソースに付与するポリシーを書き出すパターン

    それぞれの設計方針にはメリット・デメリットがあり開発規模などで使い分けが想定されるため、それぞれの場合の命名方法について記載する。

    細かく設定する場合:

    json
    {
    +  "Version": "2012-10-17",
    +  "Statement": [
    +    {
    +      "Action": "s3:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    }
    +  ]
    +}
    properties
    # 命名規約
    +{env}-{product}-{permission}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-allow-s3-full
    +stg-fuga-allow-ses-send

    特定のリソースに付与するポリシーを書き出す場合:

    json
    {
    +  "Version": "2012-10-17",
    +  "Statement": [
    +    {
    +      "Action": "s3:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    },
    +    {
    +      "Action": ["ses:SendEmail", "ses:SendRawEmail"],
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    },
    +    {
    +      "Action": "sqs:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    }
    +  ]
    +}
    properties
    # 命名規約
    +{env}-{product}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-ec2-bastion
    +stg-fuga-iam-group-future-develop

    IAM グループ用のポリシーを作成する例では、company を含めた future-develop といった名前を {usage} としている。

    この場合は命名粒度が IAM ロールと等しくなるため、命名規約も同じ方針にしている。

    予め用意されているポリシーの名前は PascalCase 形式であるが (例: AmazonS3FullAccess)、ユーザーが作成したことを明確にするため snake_case で命名する。

    タグの命名

    AWS上の命名制約

    Tag naming and usage conventions によれば以下の制約である。

    • 最大 50 個のタグを設定できる
    • タグキーは一意でなければならない
    • タグキーは最長 128 Unicode 文字、タグ値は最長 256 Unicode 文字
    • 使用可能文字
      • UTF-8 で表現できる文字、数字、スペース、. : + = @ _ / -
    • タグのキーと値では大文字と小文字が区別されます
    • タグに aws: プレフィックスは禁止

    AWS リソースのタグ付け によれば、タグ付けのベストプラクティスは以下である。

    • 個人情報 (PII) などの機密情報や秘匿性の高い情報をタグに設定しない
    • すべてのリソースタイプに一貫して適用する
    • リソースアクセスコントロールの管理、コスト追跡、オートメーション、整理など、複数の目的に対応したタグガイドラインを考慮する
    • 自動化ツールを使用してリソースタグを管理する
    • タグは、多めに使用する
    • 将来の変更の影響を考慮する
    • AWS Organizations のタグポリシーを利用することで、組織が採用するタグ付け標準を自動的に適用する

    より詳しいタグ付けのベストプラクティスも存在するが、本紙の範囲を超えるため紹介のみに留める。 https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html

    タグキー

    • 使用する文字は英数字に限定する。基本的には パスカルケース (PascalCase) 形式を推奨する
      • リソース作成時に自動生成される Name タグと平仄を合わせるため
    • 以下の観点でタグを使い分ける
      • リソース整理
      • コスト管理
        • AWS Billing にてコスト配分タグの設定が必要
      • オートメーション
        • EC2 の自動起動停止の管理など
      • アクセス制御
        • タグ値を利用した IAM ポリシーのアクセス制御など

    主要なタグ項目

    CategoryTag KeyRequiredNote
    CommonEnv環境識別子
    Systemシステム名
    Nameリソースの識別子として機能名などを設定
    費用按分Ownerリソースの管理主管部署。費用の負担先を想定
    Project開発担当チーム。どのチームがどれくらい利用したかをトレースするために設定
    ツールで利用StartAt起動時刻。自動化ツールなどで必要があれば設定
    EndAt停止時刻

    タグ値

    • 各タグキーごとに原則、タグ値の元となる命名規約に従う
    • 元となる命名規約がない場合、以下を推奨する
      • リソースの命名規約に従う
      • 頭文字のみの略語の場合は大文字のみ
    • 値の取りうるパターンが決まっている場合には、タグポリシーで値を設定する

    タグポリシー

    AWS Organizations を利用している場合、タグの標準化を促進するタグポリシーの設定が可能となる。 タグポリシーにより実現できることは以下。

    • タグキーの大文字小文字の組み合わせを強制する
      • 例: Name を指定した場合、 name, NAME, nAME などはタグキーとして設定できなくなる
    • 任意のタグキーに対して、設定可能なタグ値を指定する
      • Env など、予め取りうるタグ値のパターンが決まっている場合に利用
    • タグポリシーを適用するリソースタイプを指定

    License

    CC-By-4.0

    `,207))])}const m=n(r,[["render",d]]);export{g as __pageData,m as default}; diff --git "a/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.lean.js" "b/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.lean.js" new file mode 100644 index 00000000..b69bd0fb --- /dev/null +++ "b/assets/documents_forAWSResource_AWS\343\202\244\343\203\263\343\203\225\343\203\251\343\203\252\343\202\275\343\203\274\343\202\271\345\221\275\345\220\215\350\246\217\347\264\204.md.BGKIHPyQ.lean.js" @@ -0,0 +1,176 @@ +import{_ as n,c as e,G as i,a3 as l,B as t,o as p}from"./chunks/framework.BDUoXecB.js";const g=JSON.parse('{"title":"AWSインフラ命名規約","description":"","frontmatter":{"sidebarDepth":4,"title":"AWSインフラ命名規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"AWS,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forAWSResource/AWSインフラリソース命名規約.md","filePath":"documents/forAWSResource/AWSインフラリソース命名規約.md"}'),r={name:"documents/forAWSResource/AWSインフラリソース命名規約.md"};function d(h,s,c,o,u,b){const a=t("page-title");return p(),e("div",null,[i(a),s[0]||(s[0]=l(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。 ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。 また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    前提条件

    • 開発チームが 3 ~ 30 名程度で構築する規模での利用を想定している
    • 本規約をそのままプロジェクトに導入することを推奨する
      • そのままの導入ができない場合は、一部を抜粋、拡張して用いられることを想定している
    • AWS の構成はマネージドサービスを活用するベストプラクティスに従うものとする
      • 例えば、1 台の EC2 上で DB とアプリのように複数のサービスを稼働させるといった構成は考慮しない
    • 一部のリージョンでのみ利用可能な機能は想定していない

    名前の構成要素

    各リソースの名前に用いる要素を次の一覧に示す。

    CategoryItemNameUsage
    Common{env}環境環境の区別
    {product}製品名構築する製品名またはシステム名。稼働するマイクロサービス名もこれに当たる
    {role}役割役割を示す。場合によっては具体的な製品名 postgres, jenkins などを指定する
    {usage}用途利用目的やリソースの動作 (action) を示す。user_master, fileupload など識別したい値を指定する
    {target}対象操作の対象。usage が複数の対象があり区別したいときに利用する。
    Network{region}リージョンリージョンコード の略称を用いる
    {az}アベイラビリティーゾーンマルチ AZ 構成などで、明示的に AZ を意識する場合に用いる
    {access}アクセス修飾子access modifier. ネットワークでの public, private を区別したいときに利用する
    {permission}権限allow または deny を指定する。Security Group での利用を想定
    Organization{company}会社名会社の特定に利用。複数の会社による構築や、運用に複数社関わる場合などに必要となる
    {project}プロジェクトプロジェクト制でプロダクトを開発する際のプロジェクト名または、プロジェクトコード

    環境 ({env})

    ソフトウェア開発では複数の環境を用意し、dev, stg, prod などの名前をつけて互いに完全に分離・区別する運用を行うことが多い。そういった環境分離のために AWS インフラは次のいずれか、もしくは組み合わせで設計される。

    1. 環境単位で AWS アカウントを作成する
    2. 環境単位で AWS リージョンを分ける
    3. 命名で分ける

    いずれの方法でも、 各リソース名に環境名を付与することを推奨 する。冗長な命名となる場合もあるが、以下が理由である。

    • 同一 AWS アカウントかつ同一リージョン内には、同じ名前のリソースを作成できない
    • AWS リソース名のみで環境を特定できるようにする事で、誤った環境のリソースを操作してしまうミスを低減する
    • メンバー間の認識齟齬を無くし生産性を高める
      • チームメンバーなどの問い合わせやトラブルシュートの際に、リソース名のみでどの環境にあるか素早く判断できるようにする
      • メンバーの役割によっては AWS アカウント構成を完全には理解できていない可能性がある

    環境識別子

    主要な環境名と識別子 (Identifier) は以下である。AWS リソースの命名には識別子を用いる。

    NameIdentifierMemo
    Productionprodエンドユーザーが使う環境、本番運用環境
    Stagingstg本番と同じ構成でテストするための環境
    User Acceptance Testuatユーザーがシステムのレビュー、または操作を学習するための環境
    Performance Testperf性能検証を行うための環境
    Developmentdev開発チームが開発するための環境
    Locallocalローカル環境

    prod についてはよく用いる dev, stg と見間違えを防ぐため 4 文字にしている。

    デプロイメント環境 の考え方では、User Acceptance Test 環境を単にテスト環境 (Test) 呼ぶが、テストという単語は汎用的であるため複数の環境にあてはまる。したがって容易に認識齟齬が生じるため本規約では非推奨とする。

    名前には必ず識別子を用いる。環境名をそのまま利用しない (例: production-example-s3bucket とは命名しない)。

    理由:

    • AWS リソースによっては名前の文字数の制限が厳しい (例: ELB は最大 32 文字である)
    • AWS コンソールや設計ドキュメントなどで一覧化した場合に見切れる可能性を減らして可読性を高める
    • 識別子に採用した単語は一般的に用いられている略称である
    • その他の環境についても、環境識別子の数は通常そこまで多くならないず、またよく用いられるため、利用者にとっての認識負荷は少なく覚えるコストも低い

    同一目的の複数環境

    同一目的の環境が複数必要な場合は、識別子の末尾に連番をつける。

    例:

    • dev1, dev2, dev3
    • stg1, stg2

    役割 ({role})

    アプリケーションを構成する要素には役割がある。それを AWS リソース名に含めることで、開発者の理解を助け、操作ミスを低減する。

    主要なロール名と識別子は以下である。

    NameIdentifierMemo
    Web Serverwebapache や nginx などの Web サーバとしての役割
    Web ApplicationappWeb アプリケーションとしての役割
    Web APIapiHTTP(s) API を提供する
    Jobjob時間やある特定のイベントをもとにバックグラウンドの処理(バッチ処理など)を行う
    I/Fifファイル入出力を行う
    DBdbデータベース
    Cachecacheキャッシュ
    CI/CDciCI/CD サーバ

    名前を一般化せず、プロダクト名をそのまま利用しても問題ない。例えば、Web アプリサーバに tomcat、CI/CD サーバに jenkins といった名称を使っても良い。

    用途 ({usage})

    利用目的やリソースの動作 (action) を示す。user_master, fileupload といった形式や、認証(auth)や BFF(Backend For Frontend)など。

    役割 ({role}) と合わせてリソースが一意に特定できる名称を設定する。

    リージョン ({region})

    マルチリージョン構成を取り、リージョンを意識する必要のある場合に利用する。リージョンコード そのものではなく略称を識別子として用いる。

    NameRegion CodeIdentifier
    米国東部 (バージニア北部)us-east-1ue1
    米国東部 (オハイオ)us-east-2ue2
    米国西部 (北カリフォルニア)us-west-1uw1
    米国西部 (オレゴン)us-west-2uw2
    アジアパシフィック (東京)ap-northeast-1an1
    アジアパシフィック (ソウル)ap-northeast-2an2
    アジアパシフィック (大阪)ap-northeast-3an3
    アジアパシフィック (シンガポール)ap-southeast-1as1

    シングルリージョン構成または、リージョン間のリソースの関係が疎である場合はリージョン識別子を付与しない。

    アベイラビリティゾーン ({az})

    AZ 名にはリージョンコードを含めず、末尾のアルファベットだけとする。

    AZ IDIdentifier
    ap-northeast-1aa
    ap-northeast-1cc
    ap-northeast-1dd
    • 利用可能な文字: [a-d]{1}

    アクセス修飾子 ({access})

    VPC のサブネットは、パブリックサブネットの場合インターネットに直接アクセスできる。パブリックサブネットを区別したい場合はリソース名にアクセス修飾子を付与する。

    NameIdentifier
    パブリックサブネットpublic
    プライベートサブネットprivate

    全体ポリシー

    命名規約

    次のように各要素を使ってケバブケース (kebab-case) で命名する。パスカルケース (PascalCase) やスネークケース (snake_case) は利用しない。なお、サービス名自体にパスカルケースを用いることは許容する

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}-{usage}

    理由:

    • ほぼ全ての AWS サービスではリソース名にハイフンを許容する。一方で、アンダースコアを許容しない WebACL のようなサービスがある
    • 環境名、サービス名などの単位で区切りを明確にできる

    利用可能な文字

    利用する文字は、半角英数字とハイフンに限定する。また、 小文字を推奨 する。

    • 推奨: [a-z0-9\\-]+

    また、先頭文字には半角英字を用い (ハイフン、数値を先頭にしない)、ハイフンは 2 文字以上連続させないこととする。

    AWS サービス名を含めない

    リソース名に AWS サービス名を含めない。

    良い例:

    properties
    stg-fuga-web-fileupload
    +stg-fuga-web-fileupload

    悪い例:

    properties
    stg-fuga-web-fileupload-s3
    +stg-fuga-web-fileupload-bucket

    理由:

    • AWS コンソールで見たときにどの AWS サービスのリソースを見ているか自明である
    • Terraform の命名規則 にリソース名を繰り返さないという記載があり、整合性を持たせるため

    Resource and data source arguments Do not repeat resource type in resource name (not partially, nor completely):

    ただし、VPC エンドポイントやセキュリティグループのように、どの AWS サービスの何で利用されているかを示す場合には利用することがある。

    プロジェクト名を含めない

    プロジェクト制を取っている場合、その開発チームの持ち物であることを示すためプロジェクト名をリソース名に含めたくなるが非推奨である。

    理由:

    • 必ずしも開発しているプロダクトと、プロジェクトの粒度・ライフサイクルは一致しない
    • プロジェクトが解散すると管理主管が曖昧になる

    プロジェクト名の替わりにプロダクト名を含めることとする。

    マルチクラウドを考慮し、aws 識別子を追加するかどうか

    AWS だけではなく、Azure や GCP などを組み合わせたマルチクラウド運用を行っている、あるいは行う予定がある場合を考慮し、リソース名に aws といったプレフィックス/サフィックスを付与する考えもある。

    本規約では、aws キーワードをリソース名に含めることは非推奨とする。

    理由:

    • 同一 product を異なるクラウドサービスで運用することは稀
    • 一部のサービス (例えば DWH のみ Google BigQuery を利用するようなケース) だけの使用であれば、{usage} で区別すれば十分である

    サービス別の命名規約

    サービスによって異なる命名規約と例を記載する。

    以下ではプロダクト名を fuga とした場合の例をあげる。

    VPC

    VPC に関わるリソースの命名について記載する。

    Resource NameNaming ConventionExampleNote
    VPC{env}-{product}stg-fuga
    Subnet{env}-{product}-{access}-{az}stg-fuga-public-aAZ: どこのゾーンかを識別するため
    EIP{env}-{product}-{usage}stg-fuga-nat
    Route Table{env}-{product}-{access}stg-fuga-public
    Internet Gateway{env}-{product}stg-fuga
    NAT Gateway{env}-{product}stg-fuga
    Endpoint{env}-{product}-{aws_service}stg-fuga-s3様々なサービスが利用するため AWS サービス名を含めている
    Security Group{env}-{product}-{aws_service}-{usage}stg-fuga-ec2-bastion様々なサービスが利用するため AWS サービス名を含めている

    API Gateway

    AWS上の命名制約
    • ドキュメントは確認できなかったら、リソース名は 1024 文字まで指定可能。システム上は一意である必要はない

    API Gateway は 全体ポリシーの命名規約 に則る。管理上、一意となるように命名する

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}-{usage}-{access}
    +
    +# 例
    +stg-fuga-web-portal-private
    +stg-fuga-web-fileupload-public
    • API Gateway には複数の機能種別 (REST, HTTP) が存在するが、命名には含めない
    • private/public を名前に含めることで、public は認証が入っているかなどをチェックできる

    EC2

    インスタンス名の制限=タグの制限のため、名前は Amazon EC2 リソースのタグ付け に従う必要がある。

    properties
    # 命名規約の基本形
    +{env}-{product}-{role}
    +
    +# 例
    +stg-fuga-web

    オートスケーリング、オートヒーリング構成をする場合にどこの AZ に配置するかを意識させないため、リソース名に AZ は基本的に含めない。そのような構成をしないという方針は、アンチパターンのため構成を見直すべきと考える。

    LB

    AWS上の命名制約

    LB には ALB/NLB/CLB などの種類があるが、いずれも以下の命名規約に従う。また、Internal LB に関しては、{usage} 部に含める。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-{access}
    +
    +# 例
    +stg-fuga-web-api-public

    ターゲットグループ名は、基本的には LB と同じである。

    ただし、Blue/Green デプロイを行う場合は、ターゲットグループ名をユニークにし、どちら (Blue/Green) に所属しているかをわかるようにする。

    properties
    # Target group name (Blue/Green) の命名規約
    +{env}-{product}-{role}-{usage}-{access}-blue
    +
    +# 例
    +stg-fuga-web-public-blue

    ECS

    AWS上の命名制約
    • クラスター
      • 最大文字数: 255
      • 利用可能文字種: A-z, 0-9, -, _
      • その他制約: 先頭の文字は A-z のみ利用可能
    • サービス、タスク定義
      • 最大文字数: 255
      • 利用可能文字種: A-z, 0-9, -, _

    ECS の命名規約は以下のとおりである

    properties
    # クラスターの命名規約
    +{env}-{product}
    +
    +# 例
    +stg-fuga
    +
    +# サービスの命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-api-auth
    +stg-fuga-web-frontend
    +
    +# タスク定義の命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-batch-import-address

    Lambda

    Lambda Function

    AWS上の命名制約

    CreateFunction によると以下の制約である。

    • 1 ~ 64 文字
    • 利用可能文字: [a-zA-Z0-9-_]+

    Lambda は運用を経てリソース数が増えやすいサービスの一つである。そのため個別の機能名の前に {role} を含めてグルーピングしやすい名前にする。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}
    +
    +# 例
    +stg-fuga-import-userprofile
    +stg-fuga-job-checkconsistency
    +stg-fuga-report-successrate

    もし、Scatter-Gather パターンを用いる場合は次のようにサフィックスに追加して区別する。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-scatter
    +{env}-{product}-{role}-{usage}-segment
    +{env}-{product}-{role}-{usage}-gather

    Lambda Layer

    AWS上の命名制約
    • 1 ~ 64 文字
    • 利用可能文字: [a-zA-Z0-9-_]+

    Lambda Layers は実行環境が重要であるため、 {runtime} で言語バージョンを指定する。

    properties
    # 命名規約
    +{env}-{product}-{runtime}-{usage}
    +
    +# 例
    +stg-fuga-python310-auth
    +stg-fuga-nodejs18-frontend

    RDS/Aurora

    AWS上の命名制約

    Amazon RDS の命名に関する制約 によると以下の制約である。

    • 1 ~ 63 個の英数字またはハイフンを使用する必要があります
    • 1 字目は文字である必要があります
    • 文字列の最後にハイフンを使用したり、ハイフンを 2 つ続けて使用したりすることはできません
    • 1 つの AWS アカウント、1 つの AWS リージョンにつき、すべての DB インスタンスにおいて一意である必要があります
    properties
    # クラスターの命名規約
    +{env}-{product}-{role}
    +
    +# 例
    +stg-fuga-auth
    +
    +# インスタンスの命名規約
    +{env}-{product}-{role}-{serial}
    +
    +# 例
    +stg-fuga-auth-01
    +
    +# DBパラメータグループの命名規約
    +{env}-{product}-{role}
    +{env}-{product}
    +
    +# 手動スナップショットの命名規約
    +{env}-{product}-{role}-{yyyy}-{mm}-{dd}

    AZ は含めない。

    理由:

    • RDS はマルチ AZ 構成をとることが推奨のため
    • Aurora は自動でマルチ AZ 構成をとっているため

    DB パラメータグループは、role 単位での設定を推奨する。product を跨いでの設定は行わない。

    • 設定値の変更はパラメータグループを適用している全ての DB に変更が反映される。同じパラメータグループを複数の DB で共有し過ぎることにより意図しない DB にまで設定変更が反映されるリスクを避けるため

    クラスター/インスタンスに適用する IAM ロール

    DB サブネット

    • VPC のサブネットを参照

    DynamoDB

    AWS上の命名制約

    Amazon DynamoDB でサポートされるデータ型と命名規則 によると以下の制約である。

    • すべての名前は UTF-8 を使用してエンコードする必要があり、大文字と小文字が区別される
    • 3 ~ 255 文字
    • 利用可能な文字: [a-zA-Z0-9_.-]+

    DynamoDB のテーブル名には、環境、プロダクト名、用途を用いる。データは長く残り、かつ変更しにくいため会社名などの変化しやすい項目は含めない。

    properties
    # DynamoDB の命名規約
    +{env}-{product}-{usage}
    +
    +# 例
    +stg-fuga-user
    +stg-fuga-user-accesslog

    なお、インデックス名は idx-1, idx-2 のような連番での管理を推奨する。RDB とは異なりアカウント単位での一意性は不要なため、テーブル名は含めなくても良いため、 idx_{テーブル名}_{連番} としなくても良い。DynamoDB は 最大で 20 のグローバルセカンダリインデックス を持つことができるが、インデックスの数は最小限に抑えることが鉄則であるため、0 埋めしない。ただし、要件上どうしても多用が避けられないことが判明している場合は idx-01, idx-02 と 0 埋めする。

    S3 Bucket

    AWS上の命名制約

    Amazon S3 バケットの命名要件 によると以下の制約である。

    • 1 ~ 63 文字
    • 半角英数字、ピリオド、ダッシュのみを使用可能
    • バケット名の各ラベルは、小文字または数字で始まっている必要がある
    • バケット名では、アンダースコア、末尾のダッシュ、連続するピリオド、隣接するピリオドとダッシュは使用できない
    • バケット名を IP アドレス (198.51.100.24) として書式設定することはできない

    S3 は非常に多くの用途で用いることがあるため、利用形態に応じて規則を変えて対応する。

    properties
    # 通常の命名規約
    +{env}-{product}-{use}
    +
    +# 例
    +stg-fuga-fileupload
    +
    +# ログを保管するバケットの命名規約
    +{env}-{product}-{service}-logs
    +
    +# 例
    +stg-fuga-alb-logs
    +
    +# データ授受で利用する場合の命名規約
    +{env}-{product}-{use}-{dest}-if
    +
    +# 例
    +stg-fuga-userinfo-fis-if

    Kinesis Data Streams

    AWS上の命名制約

    CreateStream によると以下の制約である。

    • 異なる AWS アカウントであれば同名が許容
    • 異なるリージョンであれば同名が許容
    • 1 ~ 128 文字
    • [a-zA-Z0-9_.-]+

    IoT のセンシングを始めとしたイベントデータの場合は、次の命名規約を用いる。{role} には import や export など、どのような処理を行うかを規定する。

    設計によっては、データ種別 (スキーマ) 毎に分離することもあるため、デバイス名やセンサー名などの発生源の名前を持たせる。

    properties
    # 命名規約
    +{env}-{product}-{role}-{usage}-{schema}
    +
    +# 例
    +stg-fuga-import-iotsensor-devicetype
    +stg-fuga-import-iotsensor-toggle

    ジョブキューとして用いる場合は、どのジョブを利用するかが重要であるため、呼び出し用であることが明確になるように命名する。

    properties
    # 命名規約
    +{env}-{product}-call-{呼び出したいジョブ名}
    +
    +# 例
    +stg-fuga-call-job-arrival-check

    SQS

    AWS上の命名制約

    Amazon SQS キューとメッセージの識別子 によると以下の制約である。

    • 最大 80 文字
    • [a-zA-Z0-9_-]
    • FIFO キューの場合には .fifo のサフィックスで終わる必要がある
    • 1 つの AWS アカウント、1 つの AWS リージョンにつき一意である必要がある

    1 つのキューに対し、複数のプロデューサー、コンシューマーを取りうるため、プロデューサー、コンシューマーを名前に含めることは推奨しない。

    properties
    # 標準キューの命名規約
    +{env}-{company}-{product}-{usage}
    +
    +# 例
    +stg-future-fuga-processresult
    +
    +# FIFOキューの命名規約
    +{env}-{company}-{product}-{usage}.fifo
    +
    +# 例
    +stg-future-fuga-processresult.fifo

    Event Bridge Rule

    AWS上の命名制約
    • 最大 64 文字
    • 数字、小文字/大文字、 . (ピリオド)、 - (ハイフン)、 _ (アンダーバー) が使用可能
    • 同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることは不可
    properties
    # 命名規約
    +{env}-{product}-{usage}-{source}-{target}
    +
    +# 例
    +stg-fuga-deploy-s3-codepipeline
    +stg-fuga-archive-auth0-s3
    +stg-fuga-polling-schedule-lambda

    ※スケジュールタイプのルールの場合は {source}schedule と記載する。

    IAM

    IAM に関わるリソースの命名について記載する。IAM グループ、IAM ユーザー、IAM ロール、IAM ポリシーの 4 点について述べる。

    IAM ユーザー

    IAM ユーザーについては、誰 (人またはシステム) が利用するのかを識別することを目的とする。同じユーザーを複数の人やシステムで使いまわすと、誰が操作したのかといった証跡を追えなくなってしまうため、個別に発行することを推奨する。 また、役割や権限といった情報は名前に含めない。そのような名前はユーザーに紐づけるロールが増えた際などに名前と役割や権限の実態が乖離してしまうためである。

    IAM ユーザー名については全体ポリシーから外れ、アンダースコア区切りを推奨する。

    理由:

    • 多くのサービスでユーザー名には慣習的にアンダースコアを用いることが多いため

    人が利用する IAM ユーザー:

    properties
    # 命名規約
    +{company}_{username}
    +
    +# 例
    +future_taro_mirai

    ※AWS アカウントに関与する人が単一の会社に属する人だけである場合は {company}_ を省略しても良い。

    システムが利用する IAM ユーザー:

    properties
    # 命名規約
    +{product}_{usage}
    +
    +# 例
    +fuga_api
    +fuga_auth0

    AWS サービスに権限付与する場合は IAM ロールで付与することを想定している。システムが利用する IAM ユーザーは、別のクラウドや SaaS 等への権限付与に使うことを想定している。

    全体ポリシーの命名規約 とは異なり、環境名 {env} を Prefix につけない理由は次である。

    • ある AWS アカウントに対して、Switch Role などで別の環境にアクセスする際に混乱が生じる
    • ブラウザのパスワード管理などのために ID 名を分けたいという考えもあるかもしれないが、パスワード管理アプリなどの利用を推奨する

    IAM グループ

    IAM グループに IAM ユーザーを追加することで複数ユーザーの権限を一括管理できる。IAM ユーザーは複数の IAM グループに追加可能だが、所属可能なグループ数は最大で 10 という制約があるため注意が必要である。

    この制約を踏まえ、各役職ごとに基本となるグループを作成し、基本グループで対応できない例外的な権限の付与を個別のグループで対応することを想定した命名としている。

    また、グループ数をむやみに増やさないためにグループ名に環境名 {env} はつけない。仮に future-developer というグループが dev 環境のみにアクセスできるといったような制御をする場合でも、グループ名には dev をつけず、dev 環境にアクセス可能なポリシーをグループにアタッチする方針としている。

    基本となるグループ:

    properties
    # 命名規約
    +{company}-{role}
    +
    +# 例
    +future-developer
    +future-maintainer

    ここでの {role} はユーザーが担う役割を表す。

    個別のグループ:

    properties
    # 命名規約
    +{target}-{usage}
    +
    +# 例
    +bastion-access

    個別のグループは Session Manager で EC2 にアクセスするグループといった使い方を想定している。

    例外的に特定のユーザーにのみ権限を付与する、会社を超えて共通のグループを付与するといったユースケースも考えられる。

    IAM ロール

    IAM ロールは、AWS サービスに権限を付与する目的で利用する。IAM ロールに複数の IAM ポリシーをアタッチできるため、IAM ロールの命名では細かい権限を表現することは避け、IAM ロールを誰が使うのかを明確にすることを主目的とする。

    properties
    # 命名規約
    +{env}-{product}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-ec2-bastion
    +stg-fuga-lambda-api

    ※場合によっては {usage} 部に詳細情報を追加しても良い

    IAM ポリシー

    IAM ポリシーの命名に入る前に、ポリシーの設計方針について記載する。 ここでは、ポリシー設計方針の代表例として、以下の 2 パターンについて説明する。

    • 細かく設定し再利用するパターン
    • 特定のリソースに付与するポリシーを書き出すパターン

    それぞれの設計方針にはメリット・デメリットがあり開発規模などで使い分けが想定されるため、それぞれの場合の命名方法について記載する。

    細かく設定する場合:

    json
    {
    +  "Version": "2012-10-17",
    +  "Statement": [
    +    {
    +      "Action": "s3:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    }
    +  ]
    +}
    properties
    # 命名規約
    +{env}-{product}-{permission}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-allow-s3-full
    +stg-fuga-allow-ses-send

    特定のリソースに付与するポリシーを書き出す場合:

    json
    {
    +  "Version": "2012-10-17",
    +  "Statement": [
    +    {
    +      "Action": "s3:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    },
    +    {
    +      "Action": ["ses:SendEmail", "ses:SendRawEmail"],
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    },
    +    {
    +      "Action": "sqs:*",
    +      "Effect": "Allow",
    +      "Resource": "*"
    +    }
    +  ]
    +}
    properties
    # 命名規約
    +{env}-{product}-{aws_service}-{usage}
    +
    +# 例
    +stg-fuga-ec2-bastion
    +stg-fuga-iam-group-future-develop

    IAM グループ用のポリシーを作成する例では、company を含めた future-develop といった名前を {usage} としている。

    この場合は命名粒度が IAM ロールと等しくなるため、命名規約も同じ方針にしている。

    予め用意されているポリシーの名前は PascalCase 形式であるが (例: AmazonS3FullAccess)、ユーザーが作成したことを明確にするため snake_case で命名する。

    タグの命名

    AWS上の命名制約

    Tag naming and usage conventions によれば以下の制約である。

    • 最大 50 個のタグを設定できる
    • タグキーは一意でなければならない
    • タグキーは最長 128 Unicode 文字、タグ値は最長 256 Unicode 文字
    • 使用可能文字
      • UTF-8 で表現できる文字、数字、スペース、. : + = @ _ / -
    • タグのキーと値では大文字と小文字が区別されます
    • タグに aws: プレフィックスは禁止

    AWS リソースのタグ付け によれば、タグ付けのベストプラクティスは以下である。

    • 個人情報 (PII) などの機密情報や秘匿性の高い情報をタグに設定しない
    • すべてのリソースタイプに一貫して適用する
    • リソースアクセスコントロールの管理、コスト追跡、オートメーション、整理など、複数の目的に対応したタグガイドラインを考慮する
    • 自動化ツールを使用してリソースタグを管理する
    • タグは、多めに使用する
    • 将来の変更の影響を考慮する
    • AWS Organizations のタグポリシーを利用することで、組織が採用するタグ付け標準を自動的に適用する

    より詳しいタグ付けのベストプラクティスも存在するが、本紙の範囲を超えるため紹介のみに留める。 https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html

    タグキー

    • 使用する文字は英数字に限定する。基本的には パスカルケース (PascalCase) 形式を推奨する
      • リソース作成時に自動生成される Name タグと平仄を合わせるため
    • 以下の観点でタグを使い分ける
      • リソース整理
      • コスト管理
        • AWS Billing にてコスト配分タグの設定が必要
      • オートメーション
        • EC2 の自動起動停止の管理など
      • アクセス制御
        • タグ値を利用した IAM ポリシーのアクセス制御など

    主要なタグ項目

    CategoryTag KeyRequiredNote
    CommonEnv環境識別子
    Systemシステム名
    Nameリソースの識別子として機能名などを設定
    費用按分Ownerリソースの管理主管部署。費用の負担先を想定
    Project開発担当チーム。どのチームがどれくらい利用したかをトレースするために設定
    ツールで利用StartAt起動時刻。自動化ツールなどで必要があれば設定
    EndAt停止時刻

    タグ値

    • 各タグキーごとに原則、タグ値の元となる命名規約に従う
    • 元となる命名規約がない場合、以下を推奨する
      • リソースの命名規約に従う
      • 頭文字のみの略語の場合は大文字のみ
    • 値の取りうるパターンが決まっている場合には、タグポリシーで値を設定する

    タグポリシー

    AWS Organizations を利用している場合、タグの標準化を促進するタグポリシーの設定が可能となる。 タグポリシーにより実現できることは以下。

    • タグキーの大文字小文字の組み合わせを強制する
      • 例: Name を指定した場合、 name, NAME, nAME などはタグキーとして設定できなくなる
    • 任意のタグキーに対して、設定可能なタグ値を指定する
      • Env など、予め取りうるタグ値のパターンが決まっている場合に利用
    • タグポリシーを適用するリソースタイプを指定

    License

    CC-By-4.0

    `,207))])}const m=n(r,[["render",d]]);export{g as __pageData,m as default}; diff --git a/assets/documents_forAWSResource_index.md.BSBOfObX.js b/assets/documents_forAWSResource_index.md.BSBOfObX.js new file mode 100644 index 00000000..10df26ff --- /dev/null +++ b/assets/documents_forAWSResource_index.md.BSBOfObX.js @@ -0,0 +1 @@ +import{_ as r,c as t,a3 as a,o}from"./chunks/framework.BDUoXecB.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"AWSインフラ命名規約","tagline":"Future Enterprise Naming Convention Standards for AWS infrastructure resource","actions":[{"theme":"brand","text":"AWSインフラ命名規約","link":"./AWSインフラリソース命名規約.md"}]}},"headers":[],"relativePath":"documents/forAWSResource/index.md","filePath":"documents/forAWSResource/index.md"}'),s={name:"documents/forAWSResource/index.md"};function n(c,e,E,i,d,u){return o(),t("div",null,e[0]||(e[0]=[a('

    可読性や保守性、拡張性を考慮した AWS インフラ命名規則です。

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。

    ファイルはPandocを利用して作成しています。

    ',5)]))}const A=r(s,[["render",n]]);export{h as __pageData,A as default}; diff --git a/assets/documents_forAWSResource_index.md.BSBOfObX.lean.js b/assets/documents_forAWSResource_index.md.BSBOfObX.lean.js new file mode 100644 index 00000000..10df26ff --- /dev/null +++ b/assets/documents_forAWSResource_index.md.BSBOfObX.lean.js @@ -0,0 +1 @@ +import{_ as r,c as t,a3 as a,o}from"./chunks/framework.BDUoXecB.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"AWSインフラ命名規約","tagline":"Future Enterprise Naming Convention Standards for AWS infrastructure resource","actions":[{"theme":"brand","text":"AWSインフラ命名規約","link":"./AWSインフラリソース命名規約.md"}]}},"headers":[],"relativePath":"documents/forAWSResource/index.md","filePath":"documents/forAWSResource/index.md"}'),s={name:"documents/forAWSResource/index.md"};function n(c,e,E,i,d,u){return o(),t("div",null,e[0]||(e[0]=[a('

    可読性や保守性、拡張性を考慮した AWS インフラ命名規則です。

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。

    ファイルはPandocを利用して作成しています。

    ',5)]))}const A=r(s,[["render",n]]);export{h as __pageData,A as default}; diff --git a/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.js b/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.js new file mode 100644 index 00000000..8d97704e --- /dev/null +++ b/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.js @@ -0,0 +1,86 @@ +import{_ as t,c as e,G as i,a3 as l,B as n,o as d}from"./chunks/framework.BDUoXecB.js";const r="/coding-standards/assets/branch_strategy_feature.drawio.Dx3_5kFX.png",p="/coding-standards/assets/branch_strategy_develop.drawio.BB9doEUP.png",o="/coding-standards/assets/branch_strategy_release.drawio.DosnswvU.png",h="/coding-standards/assets/branch_strategy_hotfix.drawio.RF4mmQSP.png",c="/coding-standards/assets/branch_strategy_topic.drawio._OMQxJxK.png",u="/coding-standards/assets/branch_strategy_multi_develop.drawio.BUj3y2B6.png",g="/coding-standards/assets/branch_strategy_release_multi_develop.drawio.D7tvE9S0.png",k="/coding-standards/assets/branch_strategy_multi_version.drawio.BALCIJus.png",b="/coding-standards/assets/merge_strategy_develop_to_feature_merge.drawio.Chi_3Oep.png",m="/coding-standards/assets/merge_strategy_develop_to_feature_rebase.drawio.Db0KPnu1.png",F="/coding-standards/assets/merge_strategy_feature_to_develop_merge_commit.drawio.ClfglnSw.png",f="/coding-standards/assets/merge_strategy_feature_to_develop_rebase_and_merge.drawio.C4YTK8Ke.png",y="/coding-standards/assets/merge_strategy_feature_to_develop_squash_and_merge.drawio.DNfqg4i8.png",C="/coding-standards/assets/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.DUmvz-tJ.png",v="/coding-standards/assets/release_overtaking.drawio.DPjD4_z3.png",_="/coding-standards/assets/release_overtaking_hotfix.drawio.BcV3VqPO.png",q="/coding-standards/assets/create_new_tag.vcx7NIW6.png",B="/coding-standards/assets/create_new_tag_title.DvuteGpB.png",E="/coding-standards/assets/vscode_git_clone1.qDoYJxim.png",x="/coding-standards/assets/vscode_git_clone2.CEP9JvgJ.png",G="/coding-standards/assets/vscode_git_graph1.B-QqvDRT.png",P="/coding-standards/assets/vscode_git_graph2.004hjEVr.png",w="/coding-standards/assets/vscode_git_fetch1.DRikG15J.png",A="/coding-standards/assets/vscode_git_fetch2.DAVY-Tc0.png",D="/coding-standards/assets/vscode_git_branch1.l8tVcgzj.png",R="/coding-standards/assets/vscode_git_branch2.Cwy7x_5O.png",L="/coding-standards/assets/vscode_git_stage.BcG6O3Ku.png",S="/coding-standards/assets/vscode_git_commit.BYQAFQn8.png",O="/coding-standards/assets/vscode_git_push1.BlFN6oO1.png",H="/coding-standards/assets/vscode_git_push2.BhX_AasB.png",I="/coding-standards/assets/vscode_git_push3.DjxvPuCO.png",K=JSON.parse('{"title":"Gitブランチフロー規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Gitブランチフロー規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Git"}]]},"headers":[],"relativePath":"documents/forGitBranch/git_branch_standards.md","filePath":"documents/forGitBranch/git_branch_standards.md"}'),j={name:"documents/forGitBranch/git_branch_standards.md"};function M(N,a,V,T,U,$){const s=n("page-title");return d(),e("div",null,[i(s),a[0]||(a[0]=l('

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。

    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。

    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    本規約はGitブランチ管理の標準的な運用ルールをまとめている。以下の想定で作成されているため留意すること。

    • GitHub / GitLab の利用
    • トランクベース開発(フィーチャーフラグ)を 採用しない
    • ライブラリではなく、アプリケーション(CLIツール、Webアプリケーションなどの)開発で利用する

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された設計開発の方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    基本方針

    一般的なGitブランチ運用のプラクティスに従い、本規約も以下の方針に則る。

    • すべての機能開発や不具合修正に、featureブランチを使用する
    • プルリクエストを経由してfeatureブランチの修正内容をマージする
    • 永続ブランチは各環境にデプロイ可能となるよう整合性を保つ

    ブランチの種類

    本規約で想定する、ブランチの種類とその役割を説明する。

    ブランチ名称役割ライフサイクル派生元ブランチ命名規則直プッシュ
    mainプロダクション環境との同期永続的-main 固定❌️
    feature特定機能の追加/変更短命maindevelopfeature/${チケット番号}: 詳細はfeatureブランチ を参照✅️※1
    develop開発の大元永続的maindevelop 固定。複数必要な場合は develop2 と連番にする❌️
    releaseリリース作業用途短命developrelease/${yyyymmdd}release/${リリースバージョン} など❌️
    hotfixmainブランチに対する即時修正短命mainhotfix/${チケット番号}: featureブランチに準じる✅️
    topic複数人での機能開発用途短命featuretopic/${チケット番号}: featureブランチに準じる✅️

    ※1: topicブランチを利用する場合は、派生させたfeatureブランチへの直プッシュはNGとなる

    mainブランチ

    Gitリポジトリを新規作成するとデフォルトで作成されるブランチ。masterからmainに改名された経緯を持つ[1]

    マージ毎にプロダクション環境へデプロイし同期を取る。

    featureブランチ

    機能追加や変更を行うブランチで、主な特徴は以下である。

    • ひとつの変更に対してひとつのfeatureブランチを作成し、作業完了後に削除するため、開発中で最も使われる短命なブランチである
    • 基本的に1人の開発者のみが利用する

    feature branch

    以下の命名に従う。

    • feature/ のプレフィックスを付ける
    • 課題管理システムと紐付けられるようなブランチ名にする
    sh
    # OK(課題管理システムの課題番号をブランチ名に利用)
    +feature/#12345
    +
    +# OK(GitHub Issue や JIRA や Backlog のプロジェクトIDをブランチ名に利用)
    +feature/<PROJECTID>-9403
    +
    +# NG(プレフィックスが無い)
    +fixtypo

    developブランチ

    開発の中心となるブランチである。

    develop branch

    releaseブランチ

    リリースするために使用するブランチで、主な特徴は以下である。

    • リリース前の検証を開発と並行して実施する場合に利用する
    • releaseブランチではバグ修正、ドキュメント生成、その他のリリースに伴うタスクのみを実施する
    • masterブランチのマージコミットにリリースタグを打ち、mainブランチをdevelopブランチへマージ後、releaseブランチを削除する

    release branch

    hotfixブランチ

    本番リリースに対して迅速にパッチを当てて修正する場合に使用するブランチで、主な特徴は以下である。

    • 修正が完了するとmainとdevelopの両方(あるいは進行中のreleaseブランチ)にマージされる
    • main/developブランチがあると必要になる可能性がある。main/featureブランチのみの運用では必須ではない(管理上の目的でfeatureとhotfixを分けることはあり得る)

    hotfix branch

    topicブランチ

    featureブランチで実現する機能を複数人で開発する場合に使用するブランチである。

    • topicブランチが必要なケースでは、featureブランチへの直接プッシュを行ってはならない
    • GitHub Flowではfeatureブランチのことをtopicブランチと呼称する場合があるが、本規約ではfeatureブランチから派生するブランチをtopicブランチと定義する

    topic branch

    ブランチ戦略の選定

    ブランチ戦略は以下の方針で選定する。

    • できるかぎりシンプルなモデルを選択し、運用コストを下げる
    • プロジェクトのフェーズや体制に応じて、変更を許容する

    有名なブランチ戦略として以下がある。

    本規約で推奨するブランチ戦略は次の2パターンであり、これをベースとして選択する。

    名称利用ブランチデフォルトブランチリリース作業ブランチ備考
    Lite GitLab Flow
    ※1
    main
    develop
    feature
    topic
    hotfix
    developdevelop・GitLab Flowからreleaseブランチを除いたパターン
    ・リリース作業時にdevelopマージを止められる場合に利用する
    GitLab Flowmain
    develop
    release
    feature
    topic
    hotfix
    ※2
    developrelease・リリース作業と開発作業が並行して行う必要があるか、
    断面を指定して複数テスト環境にデプロイしたい場合に利用する
    • ※1: 特定の呼称はないためLite GitLab FLowと命名する
    • ※2: 本規約では、本来のGitLab Flowの呼称である productionmainpre productionreleaseに言い換えている

    ブランチ戦略とデプロイメント環境

    各ブランチ戦略ごとに、デプロイメント環境に対応するブランチを整理する。プロダクション環境リリース前には、mainブランチでタグを打つこととする。

    名称開発環境ステージング環境プロダクション環境備考
    Lite GitLab Flowdevelopdevelopmain・開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する
    ・開発環境へのデプロイ漏れを防ぐため定期的にCI/CDでdevelop断面をリリースすることを推奨する
    ・動作確認など理由がある場合はfeatureブランチから直接開発環境へのデプロイも許容する
    ・ステージング環境は日次など定期的なCI/CDによるデプロイを推奨する
    GitLab Flowdevelopreleasemain・開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する
    ・検証期間が長引きそうな場合は、PRレビュー承認後にfeatureブランチから開発環境へのデプロイを許容する

    ブランチ戦略の拡張

    次のような要件があった場合には、ベースとなるブランチ戦略を拡張する必要がある。

    1. developブランチを複数作成する場合
    2. 過去バージョンをサポートする場合

    1. developブランチを複数作成する場合

    multi develop branch

    日々のエンハンス開発と並行して、数カ月後に大型リリースを行いたい場合がある。このときは複数リリースバージョンを並行して開発するため、 developdevelop2 といった複数のdevelopブランチを作る必要がある。

    概要:

    • develop の変更にはバグフィックスや軽微なUI向上が含まれ、日次/週次などの頻度でプロダクション環境へリリースされる
    • develop2develop ブランチの変更をすべて取り込んだ上で、大型機能の準備を行う必要がある

    develop2 同期の注意点:

    • リベースすると develop2 を元にfeatureブランチを作成して開発している開発者が混乱することになるため、マージコミットをお用いる
    • 誤操作を避ける目的でcherry-pickは行わない
    • devleop2 への同期は、 develop -> main ブランチに反映されるタイミングで同期を行う(これにより、品質保証済みの変更のみ取り入れることができる9

    release multi develop branch

    develop2のリリース手順

    1. developからdevelop2へマージコミットする(2でコンフリクトが起こらないよう、前準備の意味合いで実施する。)
    2. develop2からdevelopにマージを行い、その後は通常のリリースフローに従う
    3. 問題なくリリースが完了し次第、develop2を削除する

    developからdevelop2へマージ後、develop2mainブランチに反映させる手順も考えられるが、develop2からdevelopへのマージとすると以下のメリットがある。

    • プロダクション環境(=develop)との差分を把握することができる
    • より一般的な名称である develop ブランチのみ残るため、新規参画者フレンドリーである

    2. 過去バージョンをサポートする場合

    multi version branch

    (社内外の)ライブラリでインターフェースの大型改善や仕様変更を受けて、メジャーバージョンを1→2に上げることがる。この時に過去バージョンもサポートする必要があると、バージョン別にsupportブランチを作成する。

    概要:

    • メインの更新はversion2(mainブランチ)に対して行っていくが、version1の利用ユーザーが存在する場合、バグfixやセキュリティアップデートを並行して行う
      • version1を示すブランチ(support/v1)を別途作成、そのブランチからfeatureブランチを作成する
    • featureブランチのマージ後、マイナーバージョン(あるいはパッチバージョン)を上げたタグをコミットし、リリースする
      • ※この例ではversion1とversion2が別リソースとして動いていることを前提としている。同一リソースで複数バージョンが稼働する場合はversion2のブランチで対応を行う必要がある。

    マージ戦略の選定

    マージ戦略とは、複数のブランチ間で生じた変更の取り込み方針を指す。

    具体的には次の3ケースそれぞれで、「マージコミット」「リベース」「スカッシュマージ」のどれを採用するか判断する。

    1. developブランチからfeatureブランチへ変更を取り込む
    2. featureブランチからdevelopブランチへ変更を取り込む
    3. 永続ブランチ間で変更を取り込む

    以下に影響を与えるため、Gitの利用開始前に決めチームで統制を図ることが重要である。

    • プロジェクトのコミット履歴の管理
    • 開発プロセスの円滑な進行
    • 最終的なソフトウェア品質

    1. developブランチからfeatureブランチへ変更を取り込む

    featureブランチでの作業中に、developブランチが更新された場合、品質保証の観点でdevelopブランチの変更をfeatureブランチに取り込んだ上で、テストなどの検証作業を行う必要がある。

    developブランチの変更をfeatureブランチに取り込む方法には、下表の2つの方法が存在する。

    機能ブランチに対して開発ブランチの変更を取り込む方法は「マージ」「リベース」2つの方法が考えられる。

    1. マージコミット2. リベース
    マージリベース
    get fetch & git merge(≒ git pull)。マージコミットが作成されるget fetch & git rebase(≒ git pull --rebase)。最新の開発ブランチの先頭から新たにコミットを作りなされ、マージコミットは作成されない

    本規約の推奨は「2. リベース」である。

    理由は次の通り。

    • マージコミットが作成されると履歴が複雑になり、レビューアの負荷が高まる
    • スカッシュマージはこのケースでは選択できない
    • コンフリクトリスクは、マージ・リベース問わず発生するもので、リベースの選択による悪影響は存在しない

    この選択にあたり、以下の設定を行う。

    1. git pull 時の挙動がリベースになるよう git config pull.rebase true を実行する
    2. developブランチの変更を取り込む場合、同じコンフリクトの解消を何度も求められることを解消するため、git config rerere.enabled true を実行する

    マージによる変更の取り込みが既存のブランチを変更しないのに対し、リベースは全く新しい(元のコミットIDとは別のコミットIDで)コミットを作成するため、次の1点に注意すること。

    1. リモートにプッシュ済のブランチがあり、developブランチからさらに変更をリベースで取り込んだ場合、強制プッシュ(Force Push)が必要になる
      • git push origin HEAD --force-with-lease --force-if-includes とすることで、意図せずリモートブランチの変更を上書きしないようにする
        • --force-with-lease: ローカルのリモート追跡ブランチの ref とリモートの ref を比較し、ローカルの状態が最新でない場合(プッシュ先のリモートブランチに変更が入ったが、ローカルで git fetch していない場合)は、プッシュに失敗する。逆にいうと、プッシュ前に git fetch を実行済みの場合は、リモートの変更を上書きする形で強制プッシュができてしまうため、これを防ぐには --force-if-includes フラグを併用する
        • --force-if-includes: リモート追跡ブランチの変更がローカルに全て取り込まれていない場合は、プッシュに失敗する。これにより意図せず他の人のコミットを上書きすることを防ぎつつ、必要な変更を強制的にプッシュすることができる

    強制プッシュでレビューコメントは消えるのか?

    強制プッシュすることにより、レビューコメントが消えてしまわないかという懸念を聞くことがある。2024年7月に実施した調査結果では問題なかった。

    • a.履歴保持: 強制プッシュを行い、GitHub投稿したレビューコメントが履歴として何かしらのページで取得できるかどうか。GitHubではConversationタブで確認
    • b.行単位の紐づけ(該当行の変更なし): レビューコメントが付けられた行とは別の変更を行い、強制プッシュしたときにレビューコメントの紐づけが残るかどうか。GitHubではFile chagedタブで確認
    • c.行単位の紐づけ(該当行の変更あり): レビューコメントで付けられた行を修正し、強制プッシュ時の挙動。レビュー対応をしたとみなしレビューコメントのひも付きは解除されているべきである。GitHubではFile chagedタブで確認
    サービスa.履歴保持b.行単位の紐づけ(該当行の変更なし)c.行単位の紐づけ(該当行の変更あり)
    GitHub残る残る消える
    GitLab残る残る消える

    プルリクエスト作成前にアップストリームをプルする

    featureブランチの開発が終わり、プルリクエストを作成する際には、改めてアップストリーム(developブランチ)の変更をfeatureブランチに取り込み、差分が無いことを確認すべきである。

    理由は次の通り。

    • レビュアーの負荷軽減のため
      • レビュアーがプルリクエストの差分以外の部分を参照した際に、それが古いバージョンであると、誤指摘、混乱してしまうなどの懸念がある
    • マージ後のdevelopブランチでテスト失敗するリスクを減らすため
      • コンフリクトせずにマージ可能だったとしても、何かしらの依存関係や整合性が狂い、マージ後のテストが失敗する可能性がある

    プルリクエストのレビュー依頼までにどこまでテストしておくべきか

    本規約で推奨する Lite GitLab Flow GitLab Flow ともに、開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨している。

    そのため、プルリクエスト作成時点では開発環境(≒AWSなどクラウド環境の想定)へのデプロイ+動作検証は不要である。

    ローカルでの開発のみで品質担保が難しく手戻りが多い場合は、サンドボックス環境や開発環境にfeatureブランチからデプロイして動作検証する作業が必要になる。開発環境を共有する場合は、デプロイタイミングの制御がチーム内で必要になるため、運用ルールを検討する必要がある。

    Terraformはレビュー依頼時点でどこまで確認しておくべきか

    Terraformはplanが成功しても、applyが失敗することは多々あり(サブネットが足りなかった、force_destory=trueを明示的な設定が必要だったなど)、レビューでの見極めは難しいことが多い。そのため、applyをどのタイミングで実施するかがチームの生産性の鍵となる。

    大別すると以下の3方式が存在する

    1. マージ後にapply
      • PR -> CI(planを含む) -> レビュー -> developマージ -> apply(CI)
    2. Approve後にapply
      • PR -> CI(planを含む) -> レビュー -> apply -> developマージ -> apply(CI)
    3. レビュー依頼前にapply
      • apply -> PR -> CI(plan含む) -> レビュー -> developマージ -> apply(CI)

    それぞれの特徴を下表にまとめる。

    観点①マージ後にapply②Approve後にapply③レビュー依頼前にapply
    説明developブランチにマージ後にapply。アプリコードと同じメンタルモデルを共有可能レビュアー承認後にapply。featureブランチからapplyするため、あるべき姿からは外れるレビュー依頼前にapplyで成功したことを確認する方式
    developブランチ品質❌️一時的にapplyが失敗するコードが混入するリスク✅️apply可能なコードのみに保つことができる✅️apply可能なコードのみに保つことができる
    レビュー負荷❌️applyの成否は不明なので心理的負荷あり❌️applyの成否は不明なので心理的負荷あり✅️applyが成功している前提で対応可能。apply結果をコンソールからも確認可能
    apply失敗時のコスト❌️再度PRを作る必要があり手間✅️同一PRを流用できる✅️apply成功後にPR作成が可能
    PRのトレーサビリティ❌️PRが割れると面倒✅️同一PRである✅️同一PRである
    環境のバッティング✅️ない⚠️Approveからdevelopマージまでの間に、他メンバーの作業と重複するとややこしい❌️作業調整が必要
    ガバナンス✅️applyをCIのみに絞るなど自動化と相性が良い⚠️レビュアー承認後のコードのみapply対象とできる❌️ノーレビューのインフラ変更を適用するため、初学者が多いチームには適用が難しい
    結論applyの成功率が高く維持できる場合に有効applyの成功率が低い場合に有効少数精鋭の場合に採用可能な、上級者向けの方式

    本規約の推奨は以下。

    • 新規参画者が多く統制を取りたい場合や、applyの成功率が高く維持できる場合は①を選択
    • ある程度インフラメンバーが絞れ、かつapplyの失敗率が高くレビュー負荷が高くなってしまう懸念がある場合は②を選択
    • インフラメンバーが少数精鋭(通常、同時の作業はほぼ発生しない)の場合は必要に応じて、②をベースにしながら③を取り入れて生産性を上げる

    2. featureブランチからdevelopブランチへ変更を取り込む

    プルリクエスト(以下、PR)を経由して、開発が完了したfeatureブランチをメインのdevelopブランチに取り込むためには、GitHub(GitLab)上でPRを経由する運用を行う。

    developブランチにfeatureブランチの変更を取り込む方法は下表のように3パターン存在する。

    1.マージコミット2.リベース3.スカッシュマージ
    名称Create a merge commitRebase and mergeSquash and merge
    流れMerge CommitRebase and MergeSquash and Merge
    説明git merge --no-ff で変更を取り込むfeatureブランチを最新のdevelopブランチにリベースし、git merge --ff で変更を取り込むgit merge --squash で変更を取り込む
    特徴developブランチにマージコミットが作成されるマージコミットは作成されず、履歴が一直線になるfeatureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される

    GitLabを利用する場合

    GitLabでも開発ブランチに機能ブランチの変更を取り込む方法は3種類ある。

    ただし、マージリクエスト上のオプションによってコミット履歴が変わる点が注意である。

    1. Merge commit2. Merge commit with semi-linear history3. Fast-forward merge
    流れMerge commit with squash commits省略省略
    説明GitHubにおける Create a merge commit と同様のマージ方法Merge commit と同じコマンドを使用して、機能ブランチの変更を取り込む方法GitHubにおける Rebase and merge と同様のマージ方法
    注意Squash commits を選択してマージした場合、squash commitmerge commit の2つのコミットが作成されるソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。マージリクエスト上で Squash commits を選択してマージした場合、GitHubにおける Squash and merge と同様のマージ方法になる(※補足1)

    (※補足1)マージ方法で Merge commit を選択して、マージリクエスト上で Squash commits オプションを選択してマージした場合は以下と同義である

    bash
    git checkout `git merge-base feature/A develop`\ngit merge --squash feature/A\nSOURCE_SHA=`git rev-parse HEAD`\ngit checkout develop\ngit merge --no-ff $SOURCE_SHA

    本規約の推奨は、「スカッシュマージ」による方法である。

    理由は次の通り。

    • featureブランチのコミットログが、汚れることは許容したいため
    • developブランチの履歴をクリーンに保てるため
    • PRをよりシンプルに保つインセンティブとしたいため(単一のコミットメッセージで表現できる程度の方がレビューコストも小さいため)

    「スカッシュマージ」を行うと、変更元のfeatureブランチのコミットをまとめたコミットが新たに作成されるめ、元のfeatureブランチを再利用しPRを作成するとコンフリクトが発生する。そのためマージ後はリモート/ローカルの双方で速やかにfeatureブランチを削除させるため、以下の設定を加える。

    • マージ後にfeatureブランチを自動削除する設定
      • リモート側: GitHubでは「Automatically delete head branches」を選択することで、マージ後に自動でブランチの削除が行われる(GitLabではプロジェクト設定で「Enable "Delete source branch" option by default」を選択する)
      • ローカル側: git config --global fetch.prune true: リモート側で削除されたブランチをローカル側でも削除する

    「スカッシュマージ」による変更の取り込みを行う場合、次の2点に注意すること。

    1. 部分的なコミットの取り消しができない
      • 履歴上は1つのコミットになるため、マージ後に一部の変更だけの取り消しが不可能。そのためPRをなるべく小さなまとまりにする
    2. Authorが失われる
      • featureブランチにコミットを行った人がAuthorになるのではなく、「スカッシュマージ」を行った人がAuthorになる。OSS開発を行う場合など、厳密にコントリビューションを管理する必要がある場合は注意する
      • GitHubでは「スカッシュマージ」を行う場合、デフォルトでコミットメッセージに co-authored-by トレーラーが追加され、1つのコミットが複数の作成者に帰属するようにするようになっている[2]。この記述は削除しないようにする

    マージはだれが行うべきか

    プリリクエストの承認(Approve)をもらった後、マージはレビュアー/レビュイーのどちらが行うべきか議論になる場合がある。

    観点レビュアー派レビュイー派
    説明開発者の責務が、developブランチにマージするまでという役割分担の場合に有効各開発者がその機能のリリースについて責任を負うモデルの場合に有効
    生産性⚠️レビュアーがブロッキングになりがち✅️高い。コメントはあるがApproveしたので、適時対応してマージして、といった運用が可能
    統制✅️レビュアーが管理しやすい✅️メンバーの自主性に依存
    要求スキル✅️低い。中央で統制を行いやすい⚠️開発メンバーの練度が求められる

    上記にあるように、そのプルリクエストで実装した機能を、本番環境にデリバリーする責務をどちらに持たせるかという観点で、意思決定することが多い。

    本規約の推奨は以下。

    • プロダクトオーナー(業務側)などでリリースタイミングを完全にコントロールしたいといった分業制を取る場合は、レビュアーがマージする
    • 各開発者により自律性を持たせ、アジャイル的に生産性を重視するのであれば、レビュイーがマージする

    3. 永続ブランチ間で変更を取り込む

    永続ブランチ同士の変更を取り込むケースとして、develop ブランチを main ブランチや releaseブランチにマージするといった場合がある。

    ブランチ間の同期が取れないため「リベース」「スカッシュマージ」は選択できないため、「マージコミット」を採用する。

    ブランチ運用アンチパターン

    ブランチ運用でよく課題に上がるパターンとその対応を紹介する。

    追い抜きリリース

    以下のような状況とする。

    • 2つのチケット(issue-312、issue-394とする)があり、どちらも同じファイルの修正を含む
    • 先にissue-312がdevelopにマージされ、その後に着手されたissue-394がマージされた
    • 以下のような条件があるため、issue-394分を先にリリースしたい
      • issue-312のリリースは業務上の合意が得られていない(エンドユーザ操作に影響があるため、事前告知した日時でリリースしたいなど)
      • issue-394は不具合修正であり業務上の優先度が高いため、なるべく早くリリースしたい

    同一ファイルを複数

    よく陥りがちな対策としては次の2点が考えられる。

    1. issue-312をリバートする
    2. issue-394のコミットのみをcherry pick してmainブランチにマージする

    1のリバートはGitHubの機能で提供されていることもあり簡単に行えるが、手戻りであることは間違いないし、コミットの履歴が汚れるため、保守運用の視点ではマイナスである。2のcherry pickは操作、管理ともに煩雑でミスが出やすいという課題がある。

    処方箋だが、前提条件によって別の対応策が考えられる。

    1. issue-312のマージがおかしいとするケース
      • 本来想定していたリリーススケジュールから見て、issue-312がdevelopにマージされている状態が正しくないのであれば、issue-312はdevelopにマージせず待機しておくべきだった
      • 誤ってissue-312をマージしてしまったことが原因であれば、リバートを行うことが正しい
    2. issue-394のマージがおかしいとするケース
      • 本来想定していたリリーススケジュールを破って、issue-394を優先してリリースしたいというのであれば、feature ではなく hotfix ブランチで対応すべきであった

    2の例を以下に図示する

    hotfixで追い抜き

    ブランチ命名規則

    ブランチ名の命名規則は、ブランチの種類 章に従うこと。

    タグ規則

    Gitにはタグ機能があり、リリースポイントとしてタグを作成する運用とする。

    これにより、リリースしたアプリケーションやライブラリに何か不具合があれば、切り戻しや原因追求が容易になる利点がある。

    タグの運用ルール

    • リリースごとに新しいバージョンを示したタグを発行する
    • (推奨) GitHubなどの画面経由でタグを作成する
    • mainブランチにてタグを作成する
    • 入力間違えなどのケースを除き、一度タグをつけた後は削除しない
    • 後述する「タグの命名規則」に従う

    GitHub画面でbackend/v1.6.0のタグを作成する

    何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、以下に注意する。画面経由・コマンドライン経由でのタグ作成は混ぜないようにし、運用手順は統一する。

    • 軽量 (lightweight) 版ではなく、注釈付き (annotated) 版のタグを利用する
    sh
    # OK(注釈付きタグを利用する)
    +$ git tag "v1.0.4" -m "v1.0.4 🐛Fix item api log"
    +
    +# NG(軽量タグは利用しない)
    +$ git tag "v1.0.4"

    タグの命名規則

    • v1.2.4 などの セマンティックバージョニング を基本とする
    • モノリポの場合は frontend/v1.0.0backend/v2.0.1 など領域ごとにプレフィックスを付与する形式を取る
      • プレフィックスにすることで、タグをリスト表示した場合に視認性を上げることができる

    命名に従うと、次のようなコマンドで絞り込みで表示できる。

    sh
    $ git tag -l --sort=-version:refname "frontend/v*"
    +frontend/v2.0.0
    +frontend/v1.3.0
    +frontend/v1.2.0
    +frontend/v1.1.0
    +...

    また、Gitクライアントによっては / を使うことでフォルダのように階層表示ができるため、プレフィックスの区切り文字は - ハイフンではなく、スラッシュとする。

    タグメッセージの規則

    • (推奨) GitHubを利用中の場合、「Generate release notes」を用いて、タイトルや本文を自動生成する
    • フロントエンド・バックエンドで整合性を保っているのであれば、メモ目的でバージョンを記載する運用を推奨とする
    • 実用的な利用用途が思いつかない場合は、開発者視点での楽しみリリースの大きなマイルストーンの名称など、チームの関心事を記入することを推奨とする

    create new tag

    何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、GitHub利用時の規則に合わせて次のように作成する。

    入力例:

    sh
    # OK
    +$ git tag -a backend/v1.8.0 -m "backend/v1.8.0"
    +$ git tag -a backend/v1.9.0 -m "backend/v1.9.0 🚀Release with frontend-v3.0.1"
    +$ git tag -a backend/v2.0.0 -m "backend/v2.0.0 ✨Android版アプリリリース対応"
    +
    +# NG
    +$ git tag -a backend/v3.0.0 -m "🚀Release version v2.0.0"

    バージョンアップ規則

    • 開発しているプロダクトがライブラリの場合、セマンティックバージョニングに厳密に従う
    • 開発しているプロダクトがシステム(アプリケーション)の場合、その成熟度や初回リリースの区切りでバージョンアップを行うことを推奨する。適切なバージョンアップを行うことで視認性が上がり、運用負荷を下げることができる
      • 例1: 初回リリース、カットオーバーで v1.0.0 に上げる
      • 例2: 稼働後1年以上経過し、中規模以上の大きな機能アップデートがあったので、 v2.0.0 に上げる

    ラベル規則

    IssueやPRを分類することができるラベルについての利用は自由とする。

    PRに適切なラベルを設定し、 自動生成リリースノート - GitHub Docs に記載があるように .github/release.yml への設定を行うことで、リリースノートの生成をラベル単位にグルーピングできる。

    PRを後で探しやすくするための検索キーとしての位置づけと、リリースノート自動生成という観点でラベルを準備すること。

    コミットメッセージ規則

    Gitのコミットメッセージは原則自由とする。理由は以下である。

    • 通常、作業はチケット管理システムを駆動に開発するため、情報が重複する
    • リリースノートの自動生成での扱いは、どちらかといえばラベルとPRのタイトルが重要
    • メンバーによっては粒度の小さいコミットを好む場合も多く、運用の徹底化を図る負荷が高い

    チーム規模や特性によっては、Gitのコミットメッセージをルール化する方ことにより、メリットがある場合は Conventional Commits をベースとした以下の規約を推奨する。

    Conventional Commitsの勧め

    Gitのコミットメッセージにの書式についてルール化することで、コミットの目的がわかりやすくなる、履歴からのトラッキングの容易になる利点がある。

    本規約のコミットメッセージの書式としては、Conventional Commitsをベースとした規約としている。

    以下の形式でコミットメッセージを記載することとする。

    md
    <type>: <subject> <gitmoji>

    コミットメッセージは type、subject、gitmojiの最大3つの要素から構成され、それぞれは後述する書式に従うものとする。 この中でも、type、subjectについては必須とし、ほかの要素についてはプロジェクトの運用にしたがい任意とする。

    type

    typeについては必須の要素となり、以下のいずれかを選択するものとする。

    type説明
    feat新機能の追加
    fixバグの修正
    docsドキュメンテーションの更新
    refactorリファクタリング

    subject

    subjectについては必須の要素となり、変更内容を簡潔に記載するものとする。 issue idについては、PRから参照する運用を想定し、コミットメッセージの必須要素とはしないこととする。

    gitmoji

    gitmojiについては任意の要素となり、変更内容を視認しやすい絵文字の使用を可能とする。

    変更内容と選択される絵文字の対応については厳密とせず、開発者が任意に選択するものとする。

    type(feat, fix, docs, refactorなど)に基づく、選択例を以下に示す。

    txt
     ==== Emojis ====
    + :ambulance:  🚑致命的なバグ修正(fix)
    + :bug:  🐛バグ修正(fix)
    + :+1: 👍機能改善・機能修正(fix)
    + :cop: 👮セキュリティ関連の修正(fix)
    + :art: 🎨レイアウト関連の修正(fix)
    + :green_heart: 💚テストやCIの修正・改善(fix)
    + :wrench: 🔧設定ファイルの修正(fix)
    + :building_construction: 🏗️アーキテクチャの変更(fix)
    + :tada: 🎉大きな機能追加(feat)
    + :sparkles: ✨部分的な機能追加(feat)
    + :up:   🆙依存パッケージ等のアップデート(feat)
    + :memo: 📝ドキュメント修正(docs)
    + :bulb: 💡ソースコードへのコメント追加や修正(docs)
    + :lipstick: 💄Lintエラーの修正やコードスタイルの修正(refactor)
    + :recycle: ♻️リファクタリング(refactor)
    + :fire: 🔥コードやファイルの削除(refactor)
    + :rocket: 🚀パフォーマンス改善(refactor)

    コミットメッセージ例

    上記のルールに従った、コミットメッセージのサンプルは以下のようなものとなる。 以下のようなコミットをルールとすることで、変更内容を視覚的に把握しやすくなる利点がある。

    txt
    feat: カレンダー機能の追加 🎉
    txt
    fix: メモリリークの修正 🚑
    txt
    docs: デプロイフローをドキュメント化 📝
    txt
    refactor: Lintエラーの修正 💄

    推奨設定

    GitやGitHubb/GitLabの推奨設定をまとめる。本規約にあるGitブランチ運用は、以下の設定が行われている前提で説明している箇所がある。

    git config推奨設定

    git config の推奨設定を紹介する。特にGitワークフローの設定が重要である。

    sh
    # 基礎
    +git config --global user.name "Your Name"
    +git config --global user.email "your_email@example.com"
    +
    +# プロキシ設定(存在する場合)
    +git config --global http.proxy http://id:password@proxy.example.co.jp:8000/
    +git config --global https.proxy http://id:password@proxy.example.co.jp:8000/
    +
    +# プロキシが独自の証明書を持っている場合は、git config http.sslVerify false ではなく、証明書を設定する
    +git config --global http.sslCAInfo ~/custom_ca_sha2.cer
    +
    +# Gitワークフロー
    +git config --global pull.rebase true
    +git config --global rerere.enabled true
    +git config --global fetch.prune true
    +
    +# エイリアス(メンバーそれぞれで別のエイリアスを登録されると、チャットなどのトラブルシュート時に混乱をきすため、ベーシックなものはチームで統一して、認識齟齬を減らす目的で設定を推奨する)
    +git config --global alias.st status
    +git config --global alias.co checkout
    +git config --global alias.ci commit
    +git config --global alias.br branch

    git workflowの補足説明

    • pull.rebase: pull時にリベースする
    • rerere.enabled: コンフリクトの解決を記録しておき、再び同様のコンフリクトが発生した場合に自動適用する
    • fetch.prune: リモートリポジトリで削除されたブランチを削除する

    git-secrets

    git-secretsを用いることで、ユーザーパスワードや AWS アクセスキーなどの機密情報が含まれる可能性のあるコードなどをGit リポジトリに追加されないようにできる。

    本規約の推奨は以下。

    • チームメンバー全員にgit-secretsを導入する

    GitHub推奨設定

    業務利用でのチーム開発を想定しており、リポジトリは以下の条件を満たす前提とする。

    • プライベートリポジトリ
    • Organization配下に作成
    • Teamsプラン以上の有料契約(※プロテクトブランチの機能などを利用するために必要)

    General

    CategoryItemValueMemo
    GeneralRequire contributors to sign off on web-based commitsチェックなし著作権・ライセンス承諾の場合に用いるが、業務アプリ開発では不要
    Default branchdevelop
    Pull RequestsAllow merge commits✅️main <- developなどのマージ時に必要
    Allow squash merging✅️develop <- feature はSquash mergeを推奨
    Allow rebase merging-利用しないため、チェックを外す
    Allow suggest updating pull request branches✅️Pull Request作成後、ベースブランチが更新された場合、ソースブランチの更新を提案してくれる
    Automatically delete head branches✅️マージ後にfeature branchを削除するため有効にする
    PushesLimit how many branches and tags can be updated in a single push5git push origin –mirrorで誤ってリモートブランチを破壊しないようにする。推奨値の5を設定する

    Access

    CategoryItemValueMemo
    Collaborators and teamsChoose a role任意の権限※後述
    • 各ロールの権限については、公式ドキュメントを参照
    • 通常、開発者には「Write」ロールを付与する
    • 開発を行わない、例えばスキーマファイルの参照のみ必要であれば、「Read」権限を、Issueの起票などのみ実施するマネージャーであれば「Triage」ロールを付与する
    • 「Maintain」権限は、付与しない
    • 「Admin」権限は、マネージャークラスに対して合計2~3名を付与し、属人化しないようにする
      • 1名でも、4名以上でもNGとする

    Code and automation

    Branches

    Branch protection rules にdevelop, mainなど永続的なブランチに保護設定を追加する。

    CategoryItemValueMemo
    Protect matching branchesRequire a pull request before merging✅️プルリクエストを必須とする
    Require approvals✅️レビューを必須とする
    Required number of approvals before merging1最低1名以上の承認を必須とする
    Dismiss stale pull request approvals when new commits are pushed-レビュー承認後のPushで再承認を必要とするかだが、レビュー運用上に支障となることも多く、チェックを外す
    Require status checks to pass before merging✅️CIの成功を条件とする
    Require branches to be up to date before merging任意CIパイプラインのワークフロー名を指定
    Require conversation resolution before merging✅️レビューコメントがすべて解決していることを条件とする
    Require signed commits✅️署名付きコミットを必須化し、セキュアな設定にする
    Require linear history✅️/-mainブランチの場合はOFFとするが、developの場合はSquash mergeを求めるため有効にする
    Do not allow bypassing the above settings✅️パイパスを許容しない

    developブランチに対し「require linear history」を選択することを推奨することで、「Create a merge commit」が選択できないようにする。

    また、意図しない方法でのマージを避けるためにブランチごとにマージ戦略を設定しておき、想定外のマージ戦略が選択された時に警告色を表示するというサードパーティ製のChrome拡張[3]も存在する。必要に応じて導入を検討する。

    Tags
    CategoryItemValueMemo
    Protect tagsv[0-9]+.[0-9]+.[0-9]セマンティックバージョニングに則ったタグのみ、削除を防ぐ
    GitHub Actions
    CategoryItemValueMemo
    Actions permissionsAllow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions created by GitHub✅️
    Allow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions Marketplace verified creators✅️
    Code security and analysis
    CategoryItemValueMemo
    DependabotDependabot alerts✅️依存パッケージのアップデートを検知するため
    Dependabot security updates✅️
    Dependabot version updates✅️

    GitLab推奨設定

    • GitHubの「Automatically delete head branches」
      • マージリクエストから「Delete source branch」オプションを有効にすることが該当
      • プロジェクトの設定で「Enable "Delete source branch" option by default」を選択しておくとデフォルトで有効になる

    設定ファイル

    .gitattribute

    チーム開発において開発環境がWindows/Macなど複数存在することは少なくなく、また、Gitリポジトリ上の改行コードは統一した方が余計な差分が生じず扱いやすくなる。このときよく用いるのが、 core.autocrlf という設定である。

    名称設定値チェックアウト時の挙動コミット時の挙動
    core.autocrlftrue改行コードをCRLFに変換改行コードをLFに変換
    input何もしない改行コードをLFに変換
    false何もしない何もしない

    特にWindowsでの開発者の作業ミスを防ぐため、 git config --global core.autocrlf input のような設定を行うチームも多い。

    しかし、上記の設定漏れや手順が増えてしまうため、本規約では .gitattributes での対応を推奨する。

    .gitattributes というファイルをGitリポジトリのルートにコミットしておけば、そのGitリポジトリを使う全員で改行コードの扱いをLFに統一できる。

    sh
    * text=auto eol=lf

    通常、改行コードやインデントの設定はEditorConfigで行うことが多く、 .gitattributes の設定とは重複する。しかし、環境構築ミスなど何らかのトラブルで動作しなかった場合に改行コードミスで特にジュニアクラスのメンバーが困る状況もゼロとは言えないため、本規約では .gitattributes も作成しておくことを推奨する。

    .gitignore

    Gitで管理したくないファイル名のルールを定義する.gitignoreファイルも入れる。ウェブフロントエンドであれば新規プロジェクトを作成すると大抵作成されるのでそれを登録すれば良いが、もしない場合、あるいは複数の言語を使っている場合などはGitHubが提供するテンプレートを元に作成すると良い。GlobalフォルダにはWindows/macOSのOS固有設定や、エディタ設定などもある。

    環境設定を.envで行うのが一般的になってきているが、.env.local.env.dev.localといった.localがついたファイルはクレデンシャルなどの機微な情報を扱うファイルとして定着しているため、 *.localも追加すると良い。

    個人用のファイルをGit管理対象外とする

    .gitignore を用いると、チームでGit対象外とするファイルを一律で設定できる。

    一方で、動作確認用のちょっとしたスクリプトなどで以下の要件が出てくることがある。

    • 個人的にGitリポジトリ配下のフォルダに格納したいが、コミットしたくない(≒自分のローカルリポジトリのみ必要である)
    • あくまで個人用途であるため .gitignore に追記したくない

    上記の場合は、.git/info/exclude を利用することを推奨する。

    参考:

    Pull Request / Merge Request テンプレート

    GitHubやGitLabでは、プルリクエスト作成時のテンプレートを作ることができる。チームでプルリクエストで書いてほしいことを明示的にすることで、レビュー効率の向上や障害調査に役立てることができる。

    GitHubでは .github/PULL_REQUEST_TEMPLATE.md に記載する。(GitLabでは .gitlab/merge_request_templates/{your_template}.md を配置する。)

    テンプレートの例を以下にあげる。

    md
    ## チケットURL
    +
    +## 特に見てほしいレビューポイント
    +
    +## 残課題(別チケットで対応予定の内容、別プルリクエストで対応予定の内容)
    +
    +## 動作確認内容(画面キャプチャなど)
    +
    +## セルフチェックリスト
    +
    +- [ ] 開発規約(DEVELOPMENT.md) を確認した
    +- [ ] Files changed を開き、変更内容を確認した
    +- [ ] コードの変更に伴い、同期必要な設計ドキュメントを更新した
    +- [ ] 今回のPRでは未対応の残課題があればIssueに起票した

    ローカルでのGit操作

    gitコマンド

    sh
    # 変更作業
    +git checkout -b <branchname>
    +git add
    +git commit -a
    +
    +# リモートブランチの変更を同期
    +git pull origin develop
    +
    +# コンフリクト対応
    +git add <file1> <file2> ...
    +git commit -a
    +
    +# リモートブランチへプッシュ(pullした際にリベースしているため、オプションは必須である)
    +git push origin HEAD --force-with-lease --force-if-includes

    VS Code

    利用頻度が高いとされるGitクライアントである、VS Code上でのGit操作を紹介する。

    VSCode上でのGit操作の紹介

    VSCode上でのGit操作は、サイドバーの "Source Control" から行うことができる。ほとんど全ての操作はコマンドパレットからも実行可能だが、説明は割愛する。

    推奨する拡張機能

    GUIでのGit操作にあたり、次の2つの拡張機能をインストールしておくと利便性が高い。業務上はほぼ必須と見て良い。

    以降では、これらの拡張機能がインストールされていることを前提に説明を行う。

    リポジトリのクローン (git clone)

    サイドバー > Explorer か Source Control > Clone Repository ボタンをクリックし、URLを入力すると、リポジトリをクローンできる。

    Clone1 Clone2

    コミットグラフの表示

    SOURCE CONTROL パネル > 黒丸のグラフアイコン (View Git Graph (git log)) をクリックすると、コミットグラフを表示できる。

    白丸のグラフアイコン (Show Commit Graph) はGitLensのコミットグラフだが、冒頭の記述通り、Pro版でのみの提供となる。

    Graph1 Graph2

    リモートのフェッチ/プル (git fetch / git pull)

    以下のいずれかの操作を実行すると、リモートリポジトリをフェッチできる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、 Fetch を選択
    • コミットグラフ > 雲アイコン (Fetch from Remote(s)) をクリック

    Fetch1

    なお、フェッチ後に以下のようなダイアログが表示される場合があるが、 "Yes" を選択すると、自動で定期的にフェッチを行う。

    Fetch2

    ブランチの作成/チェックアウト (git branch / git checkout)

    以下のいずれかの操作を実行すると、ブランチを作成できる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、Branch > Create Branch... を選択
      • 現在チェックアウトしているブランチから新規ブランチが作成されますが、Create Branch From... を選択すると、作成元のブランチを選択することができる
      • 作成したブランチに自動的にチェックアウトする
    • コミットグラフ > 作成元コミットの行上で右クリックし、Create Branch... を選択
      • "Check out" にチェックを入れると、作成したブランチにチェックアウトする

    Branch1 Branch2

    ステージ/コミット/プッシュ (git add / git commit / git push)

    SOURCE CONTROL パネル > 変更ファイルの行 > +アイコン (Stage Changes) をクリックすると、対象ファイルをステージできる。(Changes > +アイコン (Stage All Changes) をクリックすると、すべての変更をステージする)

    Stage

    必要な変更をステージ後、 SOURCE CONTROL パネル内でコミットメッセージを入力し、 Commit ボタンをクリックすると、コミットを作成できる。

    Commit

    以下のいずれかの操作を実行すると、作成したコミットをリモートリポジトリにプッシュできる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、Push を選択
    • BRANCHES パネル > 対象ブランチの行 > 雲アイコン (Publish Branch) をクリック
    • コミットグラフ > 対象ブランチの上で右クリックし、Push Branch... を選択

    push1 push2 push3


    1. https://github.com/github/renaming ↩︎

    2. https://docs.github.com/ja/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors ↩︎

    3. https://zenn.dev/daku10/articles/github-merge-guardian ↩︎

    ',237))])}const W=t(j,[["render",M]]);export{K as __pageData,W as default}; diff --git a/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.lean.js b/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.lean.js new file mode 100644 index 00000000..8d97704e --- /dev/null +++ b/assets/documents_forGitBranch_git_branch_standards.md.DB7kqx_N.lean.js @@ -0,0 +1,86 @@ +import{_ as t,c as e,G as i,a3 as l,B as n,o as d}from"./chunks/framework.BDUoXecB.js";const r="/coding-standards/assets/branch_strategy_feature.drawio.Dx3_5kFX.png",p="/coding-standards/assets/branch_strategy_develop.drawio.BB9doEUP.png",o="/coding-standards/assets/branch_strategy_release.drawio.DosnswvU.png",h="/coding-standards/assets/branch_strategy_hotfix.drawio.RF4mmQSP.png",c="/coding-standards/assets/branch_strategy_topic.drawio._OMQxJxK.png",u="/coding-standards/assets/branch_strategy_multi_develop.drawio.BUj3y2B6.png",g="/coding-standards/assets/branch_strategy_release_multi_develop.drawio.D7tvE9S0.png",k="/coding-standards/assets/branch_strategy_multi_version.drawio.BALCIJus.png",b="/coding-standards/assets/merge_strategy_develop_to_feature_merge.drawio.Chi_3Oep.png",m="/coding-standards/assets/merge_strategy_develop_to_feature_rebase.drawio.Db0KPnu1.png",F="/coding-standards/assets/merge_strategy_feature_to_develop_merge_commit.drawio.ClfglnSw.png",f="/coding-standards/assets/merge_strategy_feature_to_develop_rebase_and_merge.drawio.C4YTK8Ke.png",y="/coding-standards/assets/merge_strategy_feature_to_develop_squash_and_merge.drawio.DNfqg4i8.png",C="/coding-standards/assets/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.DUmvz-tJ.png",v="/coding-standards/assets/release_overtaking.drawio.DPjD4_z3.png",_="/coding-standards/assets/release_overtaking_hotfix.drawio.BcV3VqPO.png",q="/coding-standards/assets/create_new_tag.vcx7NIW6.png",B="/coding-standards/assets/create_new_tag_title.DvuteGpB.png",E="/coding-standards/assets/vscode_git_clone1.qDoYJxim.png",x="/coding-standards/assets/vscode_git_clone2.CEP9JvgJ.png",G="/coding-standards/assets/vscode_git_graph1.B-QqvDRT.png",P="/coding-standards/assets/vscode_git_graph2.004hjEVr.png",w="/coding-standards/assets/vscode_git_fetch1.DRikG15J.png",A="/coding-standards/assets/vscode_git_fetch2.DAVY-Tc0.png",D="/coding-standards/assets/vscode_git_branch1.l8tVcgzj.png",R="/coding-standards/assets/vscode_git_branch2.Cwy7x_5O.png",L="/coding-standards/assets/vscode_git_stage.BcG6O3Ku.png",S="/coding-standards/assets/vscode_git_commit.BYQAFQn8.png",O="/coding-standards/assets/vscode_git_push1.BlFN6oO1.png",H="/coding-standards/assets/vscode_git_push2.BhX_AasB.png",I="/coding-standards/assets/vscode_git_push3.DjxvPuCO.png",K=JSON.parse('{"title":"Gitブランチフロー規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Gitブランチフロー規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Git"}]]},"headers":[],"relativePath":"documents/forGitBranch/git_branch_standards.md","filePath":"documents/forGitBranch/git_branch_standards.md"}'),j={name:"documents/forGitBranch/git_branch_standards.md"};function M(N,a,V,T,U,$){const s=n("page-title");return d(),e("div",null,[i(s),a[0]||(a[0]=l('

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。

    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。

    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    本規約はGitブランチ管理の標準的な運用ルールをまとめている。以下の想定で作成されているため留意すること。

    • GitHub / GitLab の利用
    • トランクベース開発(フィーチャーフラグ)を 採用しない
    • ライブラリではなく、アプリケーション(CLIツール、Webアプリケーションなどの)開発で利用する

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された設計開発の方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    基本方針

    一般的なGitブランチ運用のプラクティスに従い、本規約も以下の方針に則る。

    • すべての機能開発や不具合修正に、featureブランチを使用する
    • プルリクエストを経由してfeatureブランチの修正内容をマージする
    • 永続ブランチは各環境にデプロイ可能となるよう整合性を保つ

    ブランチの種類

    本規約で想定する、ブランチの種類とその役割を説明する。

    ブランチ名称役割ライフサイクル派生元ブランチ命名規則直プッシュ
    mainプロダクション環境との同期永続的-main 固定❌️
    feature特定機能の追加/変更短命maindevelopfeature/${チケット番号}: 詳細はfeatureブランチ を参照✅️※1
    develop開発の大元永続的maindevelop 固定。複数必要な場合は develop2 と連番にする❌️
    releaseリリース作業用途短命developrelease/${yyyymmdd}release/${リリースバージョン} など❌️
    hotfixmainブランチに対する即時修正短命mainhotfix/${チケット番号}: featureブランチに準じる✅️
    topic複数人での機能開発用途短命featuretopic/${チケット番号}: featureブランチに準じる✅️

    ※1: topicブランチを利用する場合は、派生させたfeatureブランチへの直プッシュはNGとなる

    mainブランチ

    Gitリポジトリを新規作成するとデフォルトで作成されるブランチ。masterからmainに改名された経緯を持つ[1]

    マージ毎にプロダクション環境へデプロイし同期を取る。

    featureブランチ

    機能追加や変更を行うブランチで、主な特徴は以下である。

    • ひとつの変更に対してひとつのfeatureブランチを作成し、作業完了後に削除するため、開発中で最も使われる短命なブランチである
    • 基本的に1人の開発者のみが利用する

    feature branch

    以下の命名に従う。

    • feature/ のプレフィックスを付ける
    • 課題管理システムと紐付けられるようなブランチ名にする
    sh
    # OK(課題管理システムの課題番号をブランチ名に利用)
    +feature/#12345
    +
    +# OK(GitHub Issue や JIRA や Backlog のプロジェクトIDをブランチ名に利用)
    +feature/<PROJECTID>-9403
    +
    +# NG(プレフィックスが無い)
    +fixtypo

    developブランチ

    開発の中心となるブランチである。

    develop branch

    releaseブランチ

    リリースするために使用するブランチで、主な特徴は以下である。

    • リリース前の検証を開発と並行して実施する場合に利用する
    • releaseブランチではバグ修正、ドキュメント生成、その他のリリースに伴うタスクのみを実施する
    • masterブランチのマージコミットにリリースタグを打ち、mainブランチをdevelopブランチへマージ後、releaseブランチを削除する

    release branch

    hotfixブランチ

    本番リリースに対して迅速にパッチを当てて修正する場合に使用するブランチで、主な特徴は以下である。

    • 修正が完了するとmainとdevelopの両方(あるいは進行中のreleaseブランチ)にマージされる
    • main/developブランチがあると必要になる可能性がある。main/featureブランチのみの運用では必須ではない(管理上の目的でfeatureとhotfixを分けることはあり得る)

    hotfix branch

    topicブランチ

    featureブランチで実現する機能を複数人で開発する場合に使用するブランチである。

    • topicブランチが必要なケースでは、featureブランチへの直接プッシュを行ってはならない
    • GitHub Flowではfeatureブランチのことをtopicブランチと呼称する場合があるが、本規約ではfeatureブランチから派生するブランチをtopicブランチと定義する

    topic branch

    ブランチ戦略の選定

    ブランチ戦略は以下の方針で選定する。

    • できるかぎりシンプルなモデルを選択し、運用コストを下げる
    • プロジェクトのフェーズや体制に応じて、変更を許容する

    有名なブランチ戦略として以下がある。

    本規約で推奨するブランチ戦略は次の2パターンであり、これをベースとして選択する。

    名称利用ブランチデフォルトブランチリリース作業ブランチ備考
    Lite GitLab Flow
    ※1
    main
    develop
    feature
    topic
    hotfix
    developdevelop・GitLab Flowからreleaseブランチを除いたパターン
    ・リリース作業時にdevelopマージを止められる場合に利用する
    GitLab Flowmain
    develop
    release
    feature
    topic
    hotfix
    ※2
    developrelease・リリース作業と開発作業が並行して行う必要があるか、
    断面を指定して複数テスト環境にデプロイしたい場合に利用する
    • ※1: 特定の呼称はないためLite GitLab FLowと命名する
    • ※2: 本規約では、本来のGitLab Flowの呼称である productionmainpre productionreleaseに言い換えている

    ブランチ戦略とデプロイメント環境

    各ブランチ戦略ごとに、デプロイメント環境に対応するブランチを整理する。プロダクション環境リリース前には、mainブランチでタグを打つこととする。

    名称開発環境ステージング環境プロダクション環境備考
    Lite GitLab Flowdevelopdevelopmain・開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する
    ・開発環境へのデプロイ漏れを防ぐため定期的にCI/CDでdevelop断面をリリースすることを推奨する
    ・動作確認など理由がある場合はfeatureブランチから直接開発環境へのデプロイも許容する
    ・ステージング環境は日次など定期的なCI/CDによるデプロイを推奨する
    GitLab Flowdevelopreleasemain・開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨する
    ・検証期間が長引きそうな場合は、PRレビュー承認後にfeatureブランチから開発環境へのデプロイを許容する

    ブランチ戦略の拡張

    次のような要件があった場合には、ベースとなるブランチ戦略を拡張する必要がある。

    1. developブランチを複数作成する場合
    2. 過去バージョンをサポートする場合

    1. developブランチを複数作成する場合

    multi develop branch

    日々のエンハンス開発と並行して、数カ月後に大型リリースを行いたい場合がある。このときは複数リリースバージョンを並行して開発するため、 developdevelop2 といった複数のdevelopブランチを作る必要がある。

    概要:

    • develop の変更にはバグフィックスや軽微なUI向上が含まれ、日次/週次などの頻度でプロダクション環境へリリースされる
    • develop2develop ブランチの変更をすべて取り込んだ上で、大型機能の準備を行う必要がある

    develop2 同期の注意点:

    • リベースすると develop2 を元にfeatureブランチを作成して開発している開発者が混乱することになるため、マージコミットをお用いる
    • 誤操作を避ける目的でcherry-pickは行わない
    • devleop2 への同期は、 develop -> main ブランチに反映されるタイミングで同期を行う(これにより、品質保証済みの変更のみ取り入れることができる9

    release multi develop branch

    develop2のリリース手順

    1. developからdevelop2へマージコミットする(2でコンフリクトが起こらないよう、前準備の意味合いで実施する。)
    2. develop2からdevelopにマージを行い、その後は通常のリリースフローに従う
    3. 問題なくリリースが完了し次第、develop2を削除する

    developからdevelop2へマージ後、develop2mainブランチに反映させる手順も考えられるが、develop2からdevelopへのマージとすると以下のメリットがある。

    • プロダクション環境(=develop)との差分を把握することができる
    • より一般的な名称である develop ブランチのみ残るため、新規参画者フレンドリーである

    2. 過去バージョンをサポートする場合

    multi version branch

    (社内外の)ライブラリでインターフェースの大型改善や仕様変更を受けて、メジャーバージョンを1→2に上げることがる。この時に過去バージョンもサポートする必要があると、バージョン別にsupportブランチを作成する。

    概要:

    • メインの更新はversion2(mainブランチ)に対して行っていくが、version1の利用ユーザーが存在する場合、バグfixやセキュリティアップデートを並行して行う
      • version1を示すブランチ(support/v1)を別途作成、そのブランチからfeatureブランチを作成する
    • featureブランチのマージ後、マイナーバージョン(あるいはパッチバージョン)を上げたタグをコミットし、リリースする
      • ※この例ではversion1とversion2が別リソースとして動いていることを前提としている。同一リソースで複数バージョンが稼働する場合はversion2のブランチで対応を行う必要がある。

    マージ戦略の選定

    マージ戦略とは、複数のブランチ間で生じた変更の取り込み方針を指す。

    具体的には次の3ケースそれぞれで、「マージコミット」「リベース」「スカッシュマージ」のどれを採用するか判断する。

    1. developブランチからfeatureブランチへ変更を取り込む
    2. featureブランチからdevelopブランチへ変更を取り込む
    3. 永続ブランチ間で変更を取り込む

    以下に影響を与えるため、Gitの利用開始前に決めチームで統制を図ることが重要である。

    • プロジェクトのコミット履歴の管理
    • 開発プロセスの円滑な進行
    • 最終的なソフトウェア品質

    1. developブランチからfeatureブランチへ変更を取り込む

    featureブランチでの作業中に、developブランチが更新された場合、品質保証の観点でdevelopブランチの変更をfeatureブランチに取り込んだ上で、テストなどの検証作業を行う必要がある。

    developブランチの変更をfeatureブランチに取り込む方法には、下表の2つの方法が存在する。

    機能ブランチに対して開発ブランチの変更を取り込む方法は「マージ」「リベース」2つの方法が考えられる。

    1. マージコミット2. リベース
    マージリベース
    get fetch & git merge(≒ git pull)。マージコミットが作成されるget fetch & git rebase(≒ git pull --rebase)。最新の開発ブランチの先頭から新たにコミットを作りなされ、マージコミットは作成されない

    本規約の推奨は「2. リベース」である。

    理由は次の通り。

    • マージコミットが作成されると履歴が複雑になり、レビューアの負荷が高まる
    • スカッシュマージはこのケースでは選択できない
    • コンフリクトリスクは、マージ・リベース問わず発生するもので、リベースの選択による悪影響は存在しない

    この選択にあたり、以下の設定を行う。

    1. git pull 時の挙動がリベースになるよう git config pull.rebase true を実行する
    2. developブランチの変更を取り込む場合、同じコンフリクトの解消を何度も求められることを解消するため、git config rerere.enabled true を実行する

    マージによる変更の取り込みが既存のブランチを変更しないのに対し、リベースは全く新しい(元のコミットIDとは別のコミットIDで)コミットを作成するため、次の1点に注意すること。

    1. リモートにプッシュ済のブランチがあり、developブランチからさらに変更をリベースで取り込んだ場合、強制プッシュ(Force Push)が必要になる
      • git push origin HEAD --force-with-lease --force-if-includes とすることで、意図せずリモートブランチの変更を上書きしないようにする
        • --force-with-lease: ローカルのリモート追跡ブランチの ref とリモートの ref を比較し、ローカルの状態が最新でない場合(プッシュ先のリモートブランチに変更が入ったが、ローカルで git fetch していない場合)は、プッシュに失敗する。逆にいうと、プッシュ前に git fetch を実行済みの場合は、リモートの変更を上書きする形で強制プッシュができてしまうため、これを防ぐには --force-if-includes フラグを併用する
        • --force-if-includes: リモート追跡ブランチの変更がローカルに全て取り込まれていない場合は、プッシュに失敗する。これにより意図せず他の人のコミットを上書きすることを防ぎつつ、必要な変更を強制的にプッシュすることができる

    強制プッシュでレビューコメントは消えるのか?

    強制プッシュすることにより、レビューコメントが消えてしまわないかという懸念を聞くことがある。2024年7月に実施した調査結果では問題なかった。

    • a.履歴保持: 強制プッシュを行い、GitHub投稿したレビューコメントが履歴として何かしらのページで取得できるかどうか。GitHubではConversationタブで確認
    • b.行単位の紐づけ(該当行の変更なし): レビューコメントが付けられた行とは別の変更を行い、強制プッシュしたときにレビューコメントの紐づけが残るかどうか。GitHubではFile chagedタブで確認
    • c.行単位の紐づけ(該当行の変更あり): レビューコメントで付けられた行を修正し、強制プッシュ時の挙動。レビュー対応をしたとみなしレビューコメントのひも付きは解除されているべきである。GitHubではFile chagedタブで確認
    サービスa.履歴保持b.行単位の紐づけ(該当行の変更なし)c.行単位の紐づけ(該当行の変更あり)
    GitHub残る残る消える
    GitLab残る残る消える

    プルリクエスト作成前にアップストリームをプルする

    featureブランチの開発が終わり、プルリクエストを作成する際には、改めてアップストリーム(developブランチ)の変更をfeatureブランチに取り込み、差分が無いことを確認すべきである。

    理由は次の通り。

    • レビュアーの負荷軽減のため
      • レビュアーがプルリクエストの差分以外の部分を参照した際に、それが古いバージョンであると、誤指摘、混乱してしまうなどの懸念がある
    • マージ後のdevelopブランチでテスト失敗するリスクを減らすため
      • コンフリクトせずにマージ可能だったとしても、何かしらの依存関係や整合性が狂い、マージ後のテストが失敗する可能性がある

    プルリクエストのレビュー依頼までにどこまでテストしておくべきか

    本規約で推奨する Lite GitLab Flow GitLab Flow ともに、開発環境へはdevelopマージをトリガーにCI/CDでデプロイを推奨している。

    そのため、プルリクエスト作成時点では開発環境(≒AWSなどクラウド環境の想定)へのデプロイ+動作検証は不要である。

    ローカルでの開発のみで品質担保が難しく手戻りが多い場合は、サンドボックス環境や開発環境にfeatureブランチからデプロイして動作検証する作業が必要になる。開発環境を共有する場合は、デプロイタイミングの制御がチーム内で必要になるため、運用ルールを検討する必要がある。

    Terraformはレビュー依頼時点でどこまで確認しておくべきか

    Terraformはplanが成功しても、applyが失敗することは多々あり(サブネットが足りなかった、force_destory=trueを明示的な設定が必要だったなど)、レビューでの見極めは難しいことが多い。そのため、applyをどのタイミングで実施するかがチームの生産性の鍵となる。

    大別すると以下の3方式が存在する

    1. マージ後にapply
      • PR -> CI(planを含む) -> レビュー -> developマージ -> apply(CI)
    2. Approve後にapply
      • PR -> CI(planを含む) -> レビュー -> apply -> developマージ -> apply(CI)
    3. レビュー依頼前にapply
      • apply -> PR -> CI(plan含む) -> レビュー -> developマージ -> apply(CI)

    それぞれの特徴を下表にまとめる。

    観点①マージ後にapply②Approve後にapply③レビュー依頼前にapply
    説明developブランチにマージ後にapply。アプリコードと同じメンタルモデルを共有可能レビュアー承認後にapply。featureブランチからapplyするため、あるべき姿からは外れるレビュー依頼前にapplyで成功したことを確認する方式
    developブランチ品質❌️一時的にapplyが失敗するコードが混入するリスク✅️apply可能なコードのみに保つことができる✅️apply可能なコードのみに保つことができる
    レビュー負荷❌️applyの成否は不明なので心理的負荷あり❌️applyの成否は不明なので心理的負荷あり✅️applyが成功している前提で対応可能。apply結果をコンソールからも確認可能
    apply失敗時のコスト❌️再度PRを作る必要があり手間✅️同一PRを流用できる✅️apply成功後にPR作成が可能
    PRのトレーサビリティ❌️PRが割れると面倒✅️同一PRである✅️同一PRである
    環境のバッティング✅️ない⚠️Approveからdevelopマージまでの間に、他メンバーの作業と重複するとややこしい❌️作業調整が必要
    ガバナンス✅️applyをCIのみに絞るなど自動化と相性が良い⚠️レビュアー承認後のコードのみapply対象とできる❌️ノーレビューのインフラ変更を適用するため、初学者が多いチームには適用が難しい
    結論applyの成功率が高く維持できる場合に有効applyの成功率が低い場合に有効少数精鋭の場合に採用可能な、上級者向けの方式

    本規約の推奨は以下。

    • 新規参画者が多く統制を取りたい場合や、applyの成功率が高く維持できる場合は①を選択
    • ある程度インフラメンバーが絞れ、かつapplyの失敗率が高くレビュー負荷が高くなってしまう懸念がある場合は②を選択
    • インフラメンバーが少数精鋭(通常、同時の作業はほぼ発生しない)の場合は必要に応じて、②をベースにしながら③を取り入れて生産性を上げる

    2. featureブランチからdevelopブランチへ変更を取り込む

    プルリクエスト(以下、PR)を経由して、開発が完了したfeatureブランチをメインのdevelopブランチに取り込むためには、GitHub(GitLab)上でPRを経由する運用を行う。

    developブランチにfeatureブランチの変更を取り込む方法は下表のように3パターン存在する。

    1.マージコミット2.リベース3.スカッシュマージ
    名称Create a merge commitRebase and mergeSquash and merge
    流れMerge CommitRebase and MergeSquash and Merge
    説明git merge --no-ff で変更を取り込むfeatureブランチを最新のdevelopブランチにリベースし、git merge --ff で変更を取り込むgit merge --squash で変更を取り込む
    特徴developブランチにマージコミットが作成されるマージコミットは作成されず、履歴が一直線になるfeatureブランチで行った変更YとZを1つにまとめたコミットがdevelopブランチに作成される

    GitLabを利用する場合

    GitLabでも開発ブランチに機能ブランチの変更を取り込む方法は3種類ある。

    ただし、マージリクエスト上のオプションによってコミット履歴が変わる点が注意である。

    1. Merge commit2. Merge commit with semi-linear history3. Fast-forward merge
    流れMerge commit with squash commits省略省略
    説明GitHubにおける Create a merge commit と同様のマージ方法Merge commit と同じコマンドを使用して、機能ブランチの変更を取り込む方法GitHubにおける Rebase and merge と同様のマージ方法
    注意Squash commits を選択してマージした場合、squash commitmerge commit の2つのコミットが作成されるソースブランチがターゲットブランチより古い場合はリベースしないとマージできない。マージリクエスト上で Squash commits を選択してマージした場合、GitHubにおける Squash and merge と同様のマージ方法になる(※補足1)

    (※補足1)マージ方法で Merge commit を選択して、マージリクエスト上で Squash commits オプションを選択してマージした場合は以下と同義である

    bash
    git checkout `git merge-base feature/A develop`\ngit merge --squash feature/A\nSOURCE_SHA=`git rev-parse HEAD`\ngit checkout develop\ngit merge --no-ff $SOURCE_SHA

    本規約の推奨は、「スカッシュマージ」による方法である。

    理由は次の通り。

    • featureブランチのコミットログが、汚れることは許容したいため
    • developブランチの履歴をクリーンに保てるため
    • PRをよりシンプルに保つインセンティブとしたいため(単一のコミットメッセージで表現できる程度の方がレビューコストも小さいため)

    「スカッシュマージ」を行うと、変更元のfeatureブランチのコミットをまとめたコミットが新たに作成されるめ、元のfeatureブランチを再利用しPRを作成するとコンフリクトが発生する。そのためマージ後はリモート/ローカルの双方で速やかにfeatureブランチを削除させるため、以下の設定を加える。

    • マージ後にfeatureブランチを自動削除する設定
      • リモート側: GitHubでは「Automatically delete head branches」を選択することで、マージ後に自動でブランチの削除が行われる(GitLabではプロジェクト設定で「Enable "Delete source branch" option by default」を選択する)
      • ローカル側: git config --global fetch.prune true: リモート側で削除されたブランチをローカル側でも削除する

    「スカッシュマージ」による変更の取り込みを行う場合、次の2点に注意すること。

    1. 部分的なコミットの取り消しができない
      • 履歴上は1つのコミットになるため、マージ後に一部の変更だけの取り消しが不可能。そのためPRをなるべく小さなまとまりにする
    2. Authorが失われる
      • featureブランチにコミットを行った人がAuthorになるのではなく、「スカッシュマージ」を行った人がAuthorになる。OSS開発を行う場合など、厳密にコントリビューションを管理する必要がある場合は注意する
      • GitHubでは「スカッシュマージ」を行う場合、デフォルトでコミットメッセージに co-authored-by トレーラーが追加され、1つのコミットが複数の作成者に帰属するようにするようになっている[2]。この記述は削除しないようにする

    マージはだれが行うべきか

    プリリクエストの承認(Approve)をもらった後、マージはレビュアー/レビュイーのどちらが行うべきか議論になる場合がある。

    観点レビュアー派レビュイー派
    説明開発者の責務が、developブランチにマージするまでという役割分担の場合に有効各開発者がその機能のリリースについて責任を負うモデルの場合に有効
    生産性⚠️レビュアーがブロッキングになりがち✅️高い。コメントはあるがApproveしたので、適時対応してマージして、といった運用が可能
    統制✅️レビュアーが管理しやすい✅️メンバーの自主性に依存
    要求スキル✅️低い。中央で統制を行いやすい⚠️開発メンバーの練度が求められる

    上記にあるように、そのプルリクエストで実装した機能を、本番環境にデリバリーする責務をどちらに持たせるかという観点で、意思決定することが多い。

    本規約の推奨は以下。

    • プロダクトオーナー(業務側)などでリリースタイミングを完全にコントロールしたいといった分業制を取る場合は、レビュアーがマージする
    • 各開発者により自律性を持たせ、アジャイル的に生産性を重視するのであれば、レビュイーがマージする

    3. 永続ブランチ間で変更を取り込む

    永続ブランチ同士の変更を取り込むケースとして、develop ブランチを main ブランチや releaseブランチにマージするといった場合がある。

    ブランチ間の同期が取れないため「リベース」「スカッシュマージ」は選択できないため、「マージコミット」を採用する。

    ブランチ運用アンチパターン

    ブランチ運用でよく課題に上がるパターンとその対応を紹介する。

    追い抜きリリース

    以下のような状況とする。

    • 2つのチケット(issue-312、issue-394とする)があり、どちらも同じファイルの修正を含む
    • 先にissue-312がdevelopにマージされ、その後に着手されたissue-394がマージされた
    • 以下のような条件があるため、issue-394分を先にリリースしたい
      • issue-312のリリースは業務上の合意が得られていない(エンドユーザ操作に影響があるため、事前告知した日時でリリースしたいなど)
      • issue-394は不具合修正であり業務上の優先度が高いため、なるべく早くリリースしたい

    同一ファイルを複数

    よく陥りがちな対策としては次の2点が考えられる。

    1. issue-312をリバートする
    2. issue-394のコミットのみをcherry pick してmainブランチにマージする

    1のリバートはGitHubの機能で提供されていることもあり簡単に行えるが、手戻りであることは間違いないし、コミットの履歴が汚れるため、保守運用の視点ではマイナスである。2のcherry pickは操作、管理ともに煩雑でミスが出やすいという課題がある。

    処方箋だが、前提条件によって別の対応策が考えられる。

    1. issue-312のマージがおかしいとするケース
      • 本来想定していたリリーススケジュールから見て、issue-312がdevelopにマージされている状態が正しくないのであれば、issue-312はdevelopにマージせず待機しておくべきだった
      • 誤ってissue-312をマージしてしまったことが原因であれば、リバートを行うことが正しい
    2. issue-394のマージがおかしいとするケース
      • 本来想定していたリリーススケジュールを破って、issue-394を優先してリリースしたいというのであれば、feature ではなく hotfix ブランチで対応すべきであった

    2の例を以下に図示する

    hotfixで追い抜き

    ブランチ命名規則

    ブランチ名の命名規則は、ブランチの種類 章に従うこと。

    タグ規則

    Gitにはタグ機能があり、リリースポイントとしてタグを作成する運用とする。

    これにより、リリースしたアプリケーションやライブラリに何か不具合があれば、切り戻しや原因追求が容易になる利点がある。

    タグの運用ルール

    • リリースごとに新しいバージョンを示したタグを発行する
    • (推奨) GitHubなどの画面経由でタグを作成する
    • mainブランチにてタグを作成する
    • 入力間違えなどのケースを除き、一度タグをつけた後は削除しない
    • 後述する「タグの命名規則」に従う

    GitHub画面でbackend/v1.6.0のタグを作成する

    何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、以下に注意する。画面経由・コマンドライン経由でのタグ作成は混ぜないようにし、運用手順は統一する。

    • 軽量 (lightweight) 版ではなく、注釈付き (annotated) 版のタグを利用する
    sh
    # OK(注釈付きタグを利用する)
    +$ git tag "v1.0.4" -m "v1.0.4 🐛Fix item api log"
    +
    +# NG(軽量タグは利用しない)
    +$ git tag "v1.0.4"

    タグの命名規則

    • v1.2.4 などの セマンティックバージョニング を基本とする
    • モノリポの場合は frontend/v1.0.0backend/v2.0.1 など領域ごとにプレフィックスを付与する形式を取る
      • プレフィックスにすることで、タグをリスト表示した場合に視認性を上げることができる

    命名に従うと、次のようなコマンドで絞り込みで表示できる。

    sh
    $ git tag -l --sort=-version:refname "frontend/v*"
    +frontend/v2.0.0
    +frontend/v1.3.0
    +frontend/v1.2.0
    +frontend/v1.1.0
    +...

    また、Gitクライアントによっては / を使うことでフォルダのように階層表示ができるため、プレフィックスの区切り文字は - ハイフンではなく、スラッシュとする。

    タグメッセージの規則

    • (推奨) GitHubを利用中の場合、「Generate release notes」を用いて、タイトルや本文を自動生成する
    • フロントエンド・バックエンドで整合性を保っているのであれば、メモ目的でバージョンを記載する運用を推奨とする
    • 実用的な利用用途が思いつかない場合は、開発者視点での楽しみリリースの大きなマイルストーンの名称など、チームの関心事を記入することを推奨とする

    create new tag

    何かしらの理由で、コマンドラインからタグを作成する必要がある場合は、GitHub利用時の規則に合わせて次のように作成する。

    入力例:

    sh
    # OK
    +$ git tag -a backend/v1.8.0 -m "backend/v1.8.0"
    +$ git tag -a backend/v1.9.0 -m "backend/v1.9.0 🚀Release with frontend-v3.0.1"
    +$ git tag -a backend/v2.0.0 -m "backend/v2.0.0 ✨Android版アプリリリース対応"
    +
    +# NG
    +$ git tag -a backend/v3.0.0 -m "🚀Release version v2.0.0"

    バージョンアップ規則

    • 開発しているプロダクトがライブラリの場合、セマンティックバージョニングに厳密に従う
    • 開発しているプロダクトがシステム(アプリケーション)の場合、その成熟度や初回リリースの区切りでバージョンアップを行うことを推奨する。適切なバージョンアップを行うことで視認性が上がり、運用負荷を下げることができる
      • 例1: 初回リリース、カットオーバーで v1.0.0 に上げる
      • 例2: 稼働後1年以上経過し、中規模以上の大きな機能アップデートがあったので、 v2.0.0 に上げる

    ラベル規則

    IssueやPRを分類することができるラベルについての利用は自由とする。

    PRに適切なラベルを設定し、 自動生成リリースノート - GitHub Docs に記載があるように .github/release.yml への設定を行うことで、リリースノートの生成をラベル単位にグルーピングできる。

    PRを後で探しやすくするための検索キーとしての位置づけと、リリースノート自動生成という観点でラベルを準備すること。

    コミットメッセージ規則

    Gitのコミットメッセージは原則自由とする。理由は以下である。

    • 通常、作業はチケット管理システムを駆動に開発するため、情報が重複する
    • リリースノートの自動生成での扱いは、どちらかといえばラベルとPRのタイトルが重要
    • メンバーによっては粒度の小さいコミットを好む場合も多く、運用の徹底化を図る負荷が高い

    チーム規模や特性によっては、Gitのコミットメッセージをルール化する方ことにより、メリットがある場合は Conventional Commits をベースとした以下の規約を推奨する。

    Conventional Commitsの勧め

    Gitのコミットメッセージにの書式についてルール化することで、コミットの目的がわかりやすくなる、履歴からのトラッキングの容易になる利点がある。

    本規約のコミットメッセージの書式としては、Conventional Commitsをベースとした規約としている。

    以下の形式でコミットメッセージを記載することとする。

    md
    <type>: <subject> <gitmoji>

    コミットメッセージは type、subject、gitmojiの最大3つの要素から構成され、それぞれは後述する書式に従うものとする。 この中でも、type、subjectについては必須とし、ほかの要素についてはプロジェクトの運用にしたがい任意とする。

    type

    typeについては必須の要素となり、以下のいずれかを選択するものとする。

    type説明
    feat新機能の追加
    fixバグの修正
    docsドキュメンテーションの更新
    refactorリファクタリング

    subject

    subjectについては必須の要素となり、変更内容を簡潔に記載するものとする。 issue idについては、PRから参照する運用を想定し、コミットメッセージの必須要素とはしないこととする。

    gitmoji

    gitmojiについては任意の要素となり、変更内容を視認しやすい絵文字の使用を可能とする。

    変更内容と選択される絵文字の対応については厳密とせず、開発者が任意に選択するものとする。

    type(feat, fix, docs, refactorなど)に基づく、選択例を以下に示す。

    txt
     ==== Emojis ====
    + :ambulance:  🚑致命的なバグ修正(fix)
    + :bug:  🐛バグ修正(fix)
    + :+1: 👍機能改善・機能修正(fix)
    + :cop: 👮セキュリティ関連の修正(fix)
    + :art: 🎨レイアウト関連の修正(fix)
    + :green_heart: 💚テストやCIの修正・改善(fix)
    + :wrench: 🔧設定ファイルの修正(fix)
    + :building_construction: 🏗️アーキテクチャの変更(fix)
    + :tada: 🎉大きな機能追加(feat)
    + :sparkles: ✨部分的な機能追加(feat)
    + :up:   🆙依存パッケージ等のアップデート(feat)
    + :memo: 📝ドキュメント修正(docs)
    + :bulb: 💡ソースコードへのコメント追加や修正(docs)
    + :lipstick: 💄Lintエラーの修正やコードスタイルの修正(refactor)
    + :recycle: ♻️リファクタリング(refactor)
    + :fire: 🔥コードやファイルの削除(refactor)
    + :rocket: 🚀パフォーマンス改善(refactor)

    コミットメッセージ例

    上記のルールに従った、コミットメッセージのサンプルは以下のようなものとなる。 以下のようなコミットをルールとすることで、変更内容を視覚的に把握しやすくなる利点がある。

    txt
    feat: カレンダー機能の追加 🎉
    txt
    fix: メモリリークの修正 🚑
    txt
    docs: デプロイフローをドキュメント化 📝
    txt
    refactor: Lintエラーの修正 💄

    推奨設定

    GitやGitHubb/GitLabの推奨設定をまとめる。本規約にあるGitブランチ運用は、以下の設定が行われている前提で説明している箇所がある。

    git config推奨設定

    git config の推奨設定を紹介する。特にGitワークフローの設定が重要である。

    sh
    # 基礎
    +git config --global user.name "Your Name"
    +git config --global user.email "your_email@example.com"
    +
    +# プロキシ設定(存在する場合)
    +git config --global http.proxy http://id:password@proxy.example.co.jp:8000/
    +git config --global https.proxy http://id:password@proxy.example.co.jp:8000/
    +
    +# プロキシが独自の証明書を持っている場合は、git config http.sslVerify false ではなく、証明書を設定する
    +git config --global http.sslCAInfo ~/custom_ca_sha2.cer
    +
    +# Gitワークフロー
    +git config --global pull.rebase true
    +git config --global rerere.enabled true
    +git config --global fetch.prune true
    +
    +# エイリアス(メンバーそれぞれで別のエイリアスを登録されると、チャットなどのトラブルシュート時に混乱をきすため、ベーシックなものはチームで統一して、認識齟齬を減らす目的で設定を推奨する)
    +git config --global alias.st status
    +git config --global alias.co checkout
    +git config --global alias.ci commit
    +git config --global alias.br branch

    git workflowの補足説明

    • pull.rebase: pull時にリベースする
    • rerere.enabled: コンフリクトの解決を記録しておき、再び同様のコンフリクトが発生した場合に自動適用する
    • fetch.prune: リモートリポジトリで削除されたブランチを削除する

    git-secrets

    git-secretsを用いることで、ユーザーパスワードや AWS アクセスキーなどの機密情報が含まれる可能性のあるコードなどをGit リポジトリに追加されないようにできる。

    本規約の推奨は以下。

    • チームメンバー全員にgit-secretsを導入する

    GitHub推奨設定

    業務利用でのチーム開発を想定しており、リポジトリは以下の条件を満たす前提とする。

    • プライベートリポジトリ
    • Organization配下に作成
    • Teamsプラン以上の有料契約(※プロテクトブランチの機能などを利用するために必要)

    General

    CategoryItemValueMemo
    GeneralRequire contributors to sign off on web-based commitsチェックなし著作権・ライセンス承諾の場合に用いるが、業務アプリ開発では不要
    Default branchdevelop
    Pull RequestsAllow merge commits✅️main <- developなどのマージ時に必要
    Allow squash merging✅️develop <- feature はSquash mergeを推奨
    Allow rebase merging-利用しないため、チェックを外す
    Allow suggest updating pull request branches✅️Pull Request作成後、ベースブランチが更新された場合、ソースブランチの更新を提案してくれる
    Automatically delete head branches✅️マージ後にfeature branchを削除するため有効にする
    PushesLimit how many branches and tags can be updated in a single push5git push origin –mirrorで誤ってリモートブランチを破壊しないようにする。推奨値の5を設定する

    Access

    CategoryItemValueMemo
    Collaborators and teamsChoose a role任意の権限※後述
    • 各ロールの権限については、公式ドキュメントを参照
    • 通常、開発者には「Write」ロールを付与する
    • 開発を行わない、例えばスキーマファイルの参照のみ必要であれば、「Read」権限を、Issueの起票などのみ実施するマネージャーであれば「Triage」ロールを付与する
    • 「Maintain」権限は、付与しない
    • 「Admin」権限は、マネージャークラスに対して合計2~3名を付与し、属人化しないようにする
      • 1名でも、4名以上でもNGとする

    Code and automation

    Branches

    Branch protection rules にdevelop, mainなど永続的なブランチに保護設定を追加する。

    CategoryItemValueMemo
    Protect matching branchesRequire a pull request before merging✅️プルリクエストを必須とする
    Require approvals✅️レビューを必須とする
    Required number of approvals before merging1最低1名以上の承認を必須とする
    Dismiss stale pull request approvals when new commits are pushed-レビュー承認後のPushで再承認を必要とするかだが、レビュー運用上に支障となることも多く、チェックを外す
    Require status checks to pass before merging✅️CIの成功を条件とする
    Require branches to be up to date before merging任意CIパイプラインのワークフロー名を指定
    Require conversation resolution before merging✅️レビューコメントがすべて解決していることを条件とする
    Require signed commits✅️署名付きコミットを必須化し、セキュアな設定にする
    Require linear history✅️/-mainブランチの場合はOFFとするが、developの場合はSquash mergeを求めるため有効にする
    Do not allow bypassing the above settings✅️パイパスを許容しない

    developブランチに対し「require linear history」を選択することを推奨することで、「Create a merge commit」が選択できないようにする。

    また、意図しない方法でのマージを避けるためにブランチごとにマージ戦略を設定しておき、想定外のマージ戦略が選択された時に警告色を表示するというサードパーティ製のChrome拡張[3]も存在する。必要に応じて導入を検討する。

    Tags
    CategoryItemValueMemo
    Protect tagsv[0-9]+.[0-9]+.[0-9]セマンティックバージョニングに則ったタグのみ、削除を防ぐ
    GitHub Actions
    CategoryItemValueMemo
    Actions permissionsAllow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions created by GitHub✅️
    Allow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions Marketplace verified creators✅️
    Code security and analysis
    CategoryItemValueMemo
    DependabotDependabot alerts✅️依存パッケージのアップデートを検知するため
    Dependabot security updates✅️
    Dependabot version updates✅️

    GitLab推奨設定

    • GitHubの「Automatically delete head branches」
      • マージリクエストから「Delete source branch」オプションを有効にすることが該当
      • プロジェクトの設定で「Enable "Delete source branch" option by default」を選択しておくとデフォルトで有効になる

    設定ファイル

    .gitattribute

    チーム開発において開発環境がWindows/Macなど複数存在することは少なくなく、また、Gitリポジトリ上の改行コードは統一した方が余計な差分が生じず扱いやすくなる。このときよく用いるのが、 core.autocrlf という設定である。

    名称設定値チェックアウト時の挙動コミット時の挙動
    core.autocrlftrue改行コードをCRLFに変換改行コードをLFに変換
    input何もしない改行コードをLFに変換
    false何もしない何もしない

    特にWindowsでの開発者の作業ミスを防ぐため、 git config --global core.autocrlf input のような設定を行うチームも多い。

    しかし、上記の設定漏れや手順が増えてしまうため、本規約では .gitattributes での対応を推奨する。

    .gitattributes というファイルをGitリポジトリのルートにコミットしておけば、そのGitリポジトリを使う全員で改行コードの扱いをLFに統一できる。

    sh
    * text=auto eol=lf

    通常、改行コードやインデントの設定はEditorConfigで行うことが多く、 .gitattributes の設定とは重複する。しかし、環境構築ミスなど何らかのトラブルで動作しなかった場合に改行コードミスで特にジュニアクラスのメンバーが困る状況もゼロとは言えないため、本規約では .gitattributes も作成しておくことを推奨する。

    .gitignore

    Gitで管理したくないファイル名のルールを定義する.gitignoreファイルも入れる。ウェブフロントエンドであれば新規プロジェクトを作成すると大抵作成されるのでそれを登録すれば良いが、もしない場合、あるいは複数の言語を使っている場合などはGitHubが提供するテンプレートを元に作成すると良い。GlobalフォルダにはWindows/macOSのOS固有設定や、エディタ設定などもある。

    環境設定を.envで行うのが一般的になってきているが、.env.local.env.dev.localといった.localがついたファイルはクレデンシャルなどの機微な情報を扱うファイルとして定着しているため、 *.localも追加すると良い。

    個人用のファイルをGit管理対象外とする

    .gitignore を用いると、チームでGit対象外とするファイルを一律で設定できる。

    一方で、動作確認用のちょっとしたスクリプトなどで以下の要件が出てくることがある。

    • 個人的にGitリポジトリ配下のフォルダに格納したいが、コミットしたくない(≒自分のローカルリポジトリのみ必要である)
    • あくまで個人用途であるため .gitignore に追記したくない

    上記の場合は、.git/info/exclude を利用することを推奨する。

    参考:

    Pull Request / Merge Request テンプレート

    GitHubやGitLabでは、プルリクエスト作成時のテンプレートを作ることができる。チームでプルリクエストで書いてほしいことを明示的にすることで、レビュー効率の向上や障害調査に役立てることができる。

    GitHubでは .github/PULL_REQUEST_TEMPLATE.md に記載する。(GitLabでは .gitlab/merge_request_templates/{your_template}.md を配置する。)

    テンプレートの例を以下にあげる。

    md
    ## チケットURL
    +
    +## 特に見てほしいレビューポイント
    +
    +## 残課題(別チケットで対応予定の内容、別プルリクエストで対応予定の内容)
    +
    +## 動作確認内容(画面キャプチャなど)
    +
    +## セルフチェックリスト
    +
    +- [ ] 開発規約(DEVELOPMENT.md) を確認した
    +- [ ] Files changed を開き、変更内容を確認した
    +- [ ] コードの変更に伴い、同期必要な設計ドキュメントを更新した
    +- [ ] 今回のPRでは未対応の残課題があればIssueに起票した

    ローカルでのGit操作

    gitコマンド

    sh
    # 変更作業
    +git checkout -b <branchname>
    +git add
    +git commit -a
    +
    +# リモートブランチの変更を同期
    +git pull origin develop
    +
    +# コンフリクト対応
    +git add <file1> <file2> ...
    +git commit -a
    +
    +# リモートブランチへプッシュ(pullした際にリベースしているため、オプションは必須である)
    +git push origin HEAD --force-with-lease --force-if-includes

    VS Code

    利用頻度が高いとされるGitクライアントである、VS Code上でのGit操作を紹介する。

    VSCode上でのGit操作の紹介

    VSCode上でのGit操作は、サイドバーの "Source Control" から行うことができる。ほとんど全ての操作はコマンドパレットからも実行可能だが、説明は割愛する。

    推奨する拡張機能

    GUIでのGit操作にあたり、次の2つの拡張機能をインストールしておくと利便性が高い。業務上はほぼ必須と見て良い。

    以降では、これらの拡張機能がインストールされていることを前提に説明を行う。

    リポジトリのクローン (git clone)

    サイドバー > Explorer か Source Control > Clone Repository ボタンをクリックし、URLを入力すると、リポジトリをクローンできる。

    Clone1 Clone2

    コミットグラフの表示

    SOURCE CONTROL パネル > 黒丸のグラフアイコン (View Git Graph (git log)) をクリックすると、コミットグラフを表示できる。

    白丸のグラフアイコン (Show Commit Graph) はGitLensのコミットグラフだが、冒頭の記述通り、Pro版でのみの提供となる。

    Graph1 Graph2

    リモートのフェッチ/プル (git fetch / git pull)

    以下のいずれかの操作を実行すると、リモートリポジトリをフェッチできる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、 Fetch を選択
    • コミットグラフ > 雲アイコン (Fetch from Remote(s)) をクリック

    Fetch1

    なお、フェッチ後に以下のようなダイアログが表示される場合があるが、 "Yes" を選択すると、自動で定期的にフェッチを行う。

    Fetch2

    ブランチの作成/チェックアウト (git branch / git checkout)

    以下のいずれかの操作を実行すると、ブランチを作成できる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、Branch > Create Branch... を選択
      • 現在チェックアウトしているブランチから新規ブランチが作成されますが、Create Branch From... を選択すると、作成元のブランチを選択することができる
      • 作成したブランチに自動的にチェックアウトする
    • コミットグラフ > 作成元コミットの行上で右クリックし、Create Branch... を選択
      • "Check out" にチェックを入れると、作成したブランチにチェックアウトする

    Branch1 Branch2

    ステージ/コミット/プッシュ (git add / git commit / git push)

    SOURCE CONTROL パネル > 変更ファイルの行 > +アイコン (Stage Changes) をクリックすると、対象ファイルをステージできる。(Changes > +アイコン (Stage All Changes) をクリックすると、すべての変更をステージする)

    Stage

    必要な変更をステージ後、 SOURCE CONTROL パネル内でコミットメッセージを入力し、 Commit ボタンをクリックすると、コミットを作成できる。

    Commit

    以下のいずれかの操作を実行すると、作成したコミットをリモートリポジトリにプッシュできる。

    • SOURCE CONTROL パネル > 三点リーダーアイコン (More Actions...) をクリックし、Push を選択
    • BRANCHES パネル > 対象ブランチの行 > 雲アイコン (Publish Branch) をクリック
    • コミットグラフ > 対象ブランチの上で右クリックし、Push Branch... を選択

    push1 push2 push3


    1. https://github.com/github/renaming ↩︎

    2. https://docs.github.com/ja/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors ↩︎

    3. https://zenn.dev/daku10/articles/github-merge-guardian ↩︎

    ',237))])}const W=t(j,[["render",M]]);export{K as __pageData,W as default}; diff --git a/assets/documents_forGitBranch_index.md.D29RzrnG.js b/assets/documents_forGitBranch_index.md.D29RzrnG.js new file mode 100644 index 00000000..77bca83a --- /dev/null +++ b/assets/documents_forGitBranch_index.md.D29RzrnG.js @@ -0,0 +1 @@ +import{_ as r,c as e,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"Gitブランチフロー規約","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Gitブランチフロー規約","tagline":"Future Enterprise Standards for Git branch flow","actions":[{"theme":"brand","text":"Gitブランチフロー規約","link":"./git_branch_standards.md"}]}},"headers":[],"relativePath":"documents/forGitBranch/index.md","filePath":"documents/forGitBranch/index.md"}'),n={name:"documents/forGitBranch/index.md"};function o(s,t,l,c,d,h){return i(),e("div",null,t[0]||(t[0]=[a('

    Gitブランチフロー規約

    チーム開発する上で必要となるGitブランチフローの規約です。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    Articles

    ',8)]))}const E=r(n,[["render",o]]);export{f as __pageData,E as default}; diff --git a/assets/documents_forGitBranch_index.md.D29RzrnG.lean.js b/assets/documents_forGitBranch_index.md.D29RzrnG.lean.js new file mode 100644 index 00000000..77bca83a --- /dev/null +++ b/assets/documents_forGitBranch_index.md.D29RzrnG.lean.js @@ -0,0 +1 @@ +import{_ as r,c as e,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"Gitブランチフロー規約","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Gitブランチフロー規約","tagline":"Future Enterprise Standards for Git branch flow","actions":[{"theme":"brand","text":"Gitブランチフロー規約","link":"./git_branch_standards.md"}]}},"headers":[],"relativePath":"documents/forGitBranch/index.md","filePath":"documents/forGitBranch/index.md"}'),n={name:"documents/forGitBranch/index.md"};function o(s,t,l,c,d,h){return i(),e("div",null,t[0]||(t[0]=[a('

    Gitブランチフロー規約

    チーム開発する上で必要となるGitブランチフローの規約です。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    Articles

    ',8)]))}const E=r(n,[["render",o]]);export{f as __pageData,E as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.js" new file mode 100644 index 00000000..626acba1 --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.js" @@ -0,0 +1,761 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"Javaコーディング規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java17,コーディング規約,Java"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約.md","filePath":"documents/forJava/Javaコーディング規約.md"}'),h={name:"documents/forJava/Javaコーディング規約.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名、Record 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return List.of(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return List.of(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはList.of()を利用する

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはSet.of()を利用する

      • 不変Mapの生成にはMap.of()を利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Map.of(1, "A", 2, "B", 3, "C");

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo f) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    Foo f = (Foo)o;
      +    // ...
      +}
    • インスタンスの型キャスト(Class キャスト)が必要な場合はパターンマッチングを使用する

      良い例:

      java
      if (o instanceof String s) {
      +    // ...
      +}
      +
      +var str = (o instanceof BigDecimal b) ? b.toPlainString() : String.valueOf(o);
      +
      +var empty = o == null ||
      +  (o instanceof String s && s.isEmpty()) ||
      +  (o instanceof Collection c && c.isEmpty());

      悪い例:

      java
      if (o instanceof String) {
      +    String s = (String)o;
      +    // ...
      +}
      +
      +var str = (o instanceof BigDecimal) ? ((BigDecimal)o).toPlainString() : String.valueOf(o);
      +
      +var empty = o == null ||
      +  (o instanceof String && ((String)o).isEmpty()) ||
      +  (o instanceof Collection && ((Collection)o).isEmpty());

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1 ->
      +    d = encode1(s);
      +case 2 ->
      +    d = encode2(s);
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1 ->
      +    s = decode1(d);
      +case 2 ->
      +    s = decode2(d);
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 1ステートメントのみで行われる文字列の連結には+演算子を利用する

      良い例:

      java
      String s = s1 + s2;
      +
      +return s1 + s2 + s3 + s4 + s5;

      悪い例:

      java
      String s = new StringBuilder(s1).append(s2).toString();
      +
      +return new StringBuilder(s1).append(s2).append(s3).append(s4).append(s5).toString();
    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    switch 式

    • 一つの値を変数に代入するための if-else 文は代わりに switch 式の使用を推奨する
      switch 式の値を使用することで変数を不変(実質的 final)にでき、代入箇所が分散することによる可読性の低下を防げます。

      良い例:

      java
      var value = switch (op) {
      +    case "add" -> a + b;
      +    default -> a - b;
      +};

      悪い例:

      java
      int value;
      +if (op.equals("add")) {
      +    value = a + b;
      +} else {
      +    value = a - b;
      +}
    • case 句はなるべく一つの式での記述を推奨する
      複雑な式や複雑なステートメントを記述しなければならない場合は、メソッドに分割することを検討してください。

    • switch 式は、コーディングミスによるフォールスルーを避けるため、常にアロー構文を使用する
      https://docs.oracle.com/javase/jp/16/language/switch-expressions.htmlからの引用:

      ノート:case L ->ラベルの使用をお薦めします。case L:ラベルの使用時は、break文またはyield文の挿入を忘れがちです。これを忘れると、コード内で思いがけないフォール・スルーが発生する場合があります。 case L ->ラベルで、複数の文または式でないコード、あるいはthrow文を指定するには、それらをブロック内に囲みます。caseラベルが生成する値をyield文で指定します。

      良い例:

      java
      var date = LocalDate.now();
      +var off = switch (date.getDayOfWeek()) {
      +    case MONDAY -> {
      +        if (myCalendar.isOff(date) || localCalendar.isHoliday(date)) {
      +            yield true;
      +        }
      +        yield localCalendar.isHoliday(date.minusDays(1));
      +    }
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY ->
      +        myCalendar.isOff(date) || localCalendar.isHoliday(date);
      +    case SUNDAY, SATURDAY -> true;
      +};

      悪い例:

      java
      var date = LocalDate.now();
      +var off = switch (date.getDayOfWeek()) {
      +    case MONDAY:
      +        if (myCalendar.isOff(date) || localCalendar.isHoliday(date)) {
      +            yield true;
      +        }
      +        yield localCalendar.isHoliday(date.minusDays(1));
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY:
      +        yield myCalendar.isOff(date) || localCalendar.isHoliday(date);
      +    case SUNDAY, SATURDAY:
      +        yield true;
      +};
    • アロー構文の、中カッコ、yieldを省略できる場合は必ず省略する
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var shortDay = switch (day) {
      +    case MONDAY -> "M";
      +    case WEDNESDAY -> "W";
      +    case FRIDAY -> "F";
      +    case TUESDAY, THURSDAY -> "T";
      +    case SUNDAY, SATURDAY -> "S";
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var shortDay = switch (day) {
      +    case MONDAY -> {
      +        yield "M";
      +    }
      +    case WEDNESDAY -> {
      +        yield "W";
      +    }
      +    case FRIDAY -> {
      +        yield "F";
      +    }
      +    case TUESDAY, THURSDAY -> {
      +        yield "T";
      +    }
      +    case SUNDAY, SATURDAY -> {
      +        yield "S";
      +    }
      +};
    • Enum 値の switch 式で case 句が全ての Enum 値をカバーする場合は default 句はデッドコードとなるため記述しない
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> false;
      +    case SUNDAY, SATURDAY -> true;
      +};
      +
      +var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case SUNDAY, SATURDAY -> true;
      +    default -> false;
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> false;
      +    case SUNDAY, SATURDAY -> true;
      +    default -> false;
      +};

    switch 文

    • 代わりに switch 式が使用できる箇所は switch 式を使用する

      • case 句でreturnを記述する場合は switch 文を使用して良い
    • case 句はなるべく 1 行のステートメントでの記述を推奨する
      複雑なステートメントを記述しなければならない場合は、メソッドに分割することを検討してください。

    • switch 文は、コーディングミスによるフォールスルーを避けるため、なるべくアロー構文を使用することを推奨する
      https://docs.oracle.com/javase/jp/16/language/switch-expressions.htmlからの引用:

      ノート:case L ->ラベルの使用をお薦めします。case L:ラベルの使用時は、break文またはyield文の挿入を忘れがちです。これを忘れると、コード内で思いがけないフォール・スルーが発生する場合があります。 case L ->ラベルで、複数の文または式でないコード、あるいはthrow文を指定するには、それらをブロック内に囲みます。caseラベルが生成する値をyield文で指定します。

      良い例:

      java
      var date = LocalDate.now();
      +switch (date.getDayOfWeek()) {
      +    case MONDAY -> {
      +        if (
      +            !myCalendar.isOff(date) && !localCalendar.isHoliday(date) &&
      +            !localCalendar.isHoliday(date.minusDays(1))
      +        ) {
      +            work();
      +        }
      +    }
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> {
      +        if (!myCalendar.isOff(date) && !localCalendar.isHoliday(date)) {
      +            work();
      +        }
      +    }
      +}

      悪い例:

      java
      var date = LocalDate.now();
      +switch (date.getDayOfWeek()) {
      +    case MONDAY:
      +        if (
      +            !myCalendar.isOff(date) && !localCalendar.isHoliday(date) &&
      +            !localCalendar.isHoliday(date.minusDays(1))
      +        ) {
      +            work();
      +        }
      +        break;
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY:
      +        if (!myCalendar.isOff(date) && !localCalendar.isHoliday(date)) {
      +            work();
      +        }
      +        break;
      +}
    • アロー構文を使用しない(コロンを使用する)場合、複数の値をマッチさせるときの case 句はカンマを使用して列挙する
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +boolean off = false;
      +switch (day) {
      +    case SUNDAY, SATURDAY:
      +      off = true;
      +      break;
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +boolean off = false;
      +switch (day) {
      +    case SUNDAY:
      +    case SATURDAY:
      +      off = true;
      +      break;
      +};

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : List.of("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      List.of("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      List.of("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : List.of("A", "B")) {
      +    this.process(s);
      +}
    • Arrays.asList()は利用せず、List.of()を利用する
      Java9 で追加されたメソッド。
      配列をListに置き換える場合や、単純な固定のListを生成する際にはList.of()を利用する。

      • Arrays.asList()List.of()の違い
        List.of()で生成したListは、完全に不変(Immutable)なListで、
        Arrays.asList()で生成したListは、サイズのみ不変で、set等による値の操作が可能なListです。
        また、setを行った場合、Arrays.asList()に与えられた配列インスタンスにも影響します。

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .toList();

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).toList();
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .toList();
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +fooList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .toList();
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .toList();

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.toList();
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.toList();

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    var (Local-Variable Type Inference)

    次のリンクも参考にしてください。
    Style Guidelines for Local Variable Type Inference in Java

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、varを混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、例えば以下ののような方針で統一してください。

      1. varを利用しない
      2. 原則varを利用する
      3. 右辺で、明確に型がわかる場合はvarを利用する

      以下で23について例を示します。

      • 原則varを利用する

        利用できる箇所は全てvarを利用します。

        良い例:

        java
        var a = "";
        +var b = 123;
        +var c = new ArrayList<String>();

        悪い例:

        java
        var a = "";
        +int b = 123;
        +List<String> c = new ArrayList<>();
        java
        void methodA() {
        +    var a = "";
        +}
        +void methodB() {
        +    String a = "";
        +}
      • 右辺で、明確に型がわかる場合はvarを利用する

        右辺をみて型がわかる場合は、全てvarを利用します。 それ以外はvarを利用してはいけません。

        良い例:

        java
        var s = ""; // リテラルによって型が明確に判断できます
        +var list1 = new ArrayList<String>(); // newによって型が明確に判断できます
        +var list2 = (List<String>) map.get("p"); // キャストによって型が明確に判断できます
        +var list3 = List.of("A", "B", "C"); // ファクトリーによって型が明確に判断できます

        プロジェクトで観点を決めるべき例:

        java
        var b1 = s.isEmpty(); // \`is\`で始まるメソッドは通例としてbooleanを返します
        +var b2 = Objects.equals(s1, s2); // \`equals\`メソッドは通例としてbooleanを返します
        +var i1 = Objects.hash(s); // \`hash\`、\`hashCode\`メソッドは通例としてintを返します
        +var i2 = Objects.compare(s1, s2); // \`compare\`、\`compareTo\`メソッドは通例としてintを返します

        悪い例:

        java
        var a = e.getData(); // \`e\`の型と、メソッド定義がわからなければ型が判断できません

    レコード

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、recordとクラスと JavaBeans 形式のクラスや Lombok の @Data の使用を混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、recordを利用しないか、recordの使用しても良い箇所について方針を決めた上で使用するようにしてください。 また、recordは JavaBeans とは互換性がないため使用している各種ライブラリの対応状況にも注意する必要があります。

      方針例: クラス内で処理する一時的なデータを表現するためだけにrecordを使用しても良い。

      java
      // parentId と id をキーとして、重複を排除した uniqueItems を作成します。
      +record Key(int parentId, int id) {
      +}
      +var map = new HashMap<Key, Item>();
      +for (Item item : items) {
      +  var key = new Key(item.getParenId(), item.getId());
      +  map.putIfAbsent(key, item);
      +}
      +var uniqueItems = map.values();
    • 次の記述スタイルを標準とする
      ただし、フォーマッタを導入している場合はフォーマッタに合わせます。

      良い例:

      java
      /**
      + * 矩形を表すクラス
      + *
      + * @param x      矩形の左上隅の x 座標
      + * @param y      矩形の左上隅の y 座標
      + * @param width  矩形の幅
      + * @param height 矩形の高さ
      + */
      +public record Rect(
      +    /* 矩形の左上隅の x 座標 */
      +    double x,
      +    /* 矩形の左上隅の y 座標 */
      +    double y,
      +    /* 矩形の幅 */
      +    double width,
      +    /* 矩形の高さ */
      +    double height) {
      +}

      次にポイントを説明します。

      • {の後、}の前に改行する

      • レコードコンポーネント(パラメータ)のカンマの後に改行することを推奨する
        レコードコンポーネントが少なく、レコードコンポーネント名からでも意味が理解でき、改行がなくても可読性が低下しない場合は、改行を必要としません。
        改行を推奨する理由は以下です。

        • アノテーションを付与したときでも比較的読みやすい(アノテーション引数との混在による可読性の低下の回避)
        • レコードコンポーネントが多い場合も比較的読みやすい
      • レコードコンポーネントが多い場合、レコードコンポーネントへ直接コメントをつけることを検討する
        レコードコンポーネントの JavaDoc としては@param形式でレコード名の上部に記述しますが、このソースコードをテキストとしてみた場合、レコードコンポーネントの定義と@paramの説明とで距離が空いてしまう場合があり、型と説明を読むのに時間がかかってしまう可能性があります。
        また、使用する IDE によっては、アクセサから宣言へのジャンプを使用すると、レコードコンポーネント(パラメータ)の定義へジャンプするものがあります。レコードコンポーネントにコメントがあればすぐに説明を読むことができますが、JavaDoc しか記述しない場合は、ファイル上部へ移動して対応するレコードコンポーネントの説明を探さなければなりません。

        java
        public record Rect(
        +    /* 矩形の左上隅の x 座標 */
        +    double x,
        +    /* 矩形の左上隅の y 座標 */
        +    double y,
        +    /* 矩形の幅 */
        +    double width,
        +    /* 矩形の高さ */
        +    double height) {
        +}
    • レコードのアクセサを上書きしない

      悪い例:

      java
      public record Rect(
      +    double x,
      +    double y,
      +    double width,
      +    double height) {
      +
      +    public double x() {
      +        return x;
      +    }
      +}

    テキストブロック

    次のリンクも参考にしてください。
    Programmer's Guide To Text Blocks > Style Guidelines For Text Blocks

    • 複数行の文字列を定義する際、文字列連結よりもテキストブロックを使用する

      良い例:

      java
      String message = """
      +        複数行の文字列はテキストブロックを使用しましょう。
      +        文字列連結と違い、プラス記号や改行コードのエスケープシーケンスのような無駄を排除でき、
      +        より読みやすいソースコードで書くことができます。
      +        """;

      悪い例:

      java
      String message =
      +        "複数行の文字列はテキストブロックを使用しましょう。\\n" +
      +        "文字列連結と違い、プラス記号や改行コードのエスケープシーケンスのような無駄を排除でき、\\n" +
      +        "より読みやすいソースコードで書くことができます。\\n";
    • 単一行の文字列を定義する際、テキストブロックは使用せず文字列リテラルを使用する
      ただし、二重引用符(")のエスケープを避ける目的ではテキストブロックを使用しても良い。

      良い例:

      java
      String singleLine = "単一行の文字列です。";
      +
      +String message = """
      +        テキストブロックでは単一の二重引用符「"」にエスケープを使用する必要がありません。""";

      悪い例:

      java
      String singleLine = """
      +        単一行の文字列です。""";
    • テキストブロック内では基本的に改行コードのエスケープシーケンス(\\n)を使用しないが、読みやすさ向上の目的で改行コードのエスケープシーケンス(\\n)を使用しても良い

      良い例:

      java
      String multiLine = """
      +        複数行の、
      +        文字列です。
      +        """;
      +
      +String csv = """
      +        名前,説明,MIMEタイプ
      +        CSV,"Comma-Separated Valuesの略\\nCharacter-Separated Valuesの意味で使用されることもある","text/csv"
      +        TSV,"Tab-Separated Valuesの略","text/tab-separated-values"
      +        """;

      悪い例:

      java
      String multiLine = """
      +        複数行の、\\n文字列です。
      +        """;
    • テキストブロックで定義した文字列を処理する場合は、テキストブロックをローカル変数やフィールドへ代入してから使用することを推奨する

      良い例:

      java
      String selectX = """
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_X
      +        """;
      +String selectY = """
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_Y
      +        """;
      +processValues(fetch(selectX, Entity1.class), fetch(selectY, Entity2.class));

      悪い例:

      java
      processValues(fetch("""
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_X
      +        """, Entity1.class), fetch("""
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_Y
      +        """, Entity2.class));

      複雑な処理に直接テキストブロックを使用すると可読性を下げる可能性があります。

    • 3 つ以上続く二重引用符(")をエスケープする際は、最初の二重引用符にエスケープシーケンスを使用する

      良い例:

      java
      String javaCode = """
      +        String message = \\"""
      +                テキストブロックです。
      +                \\""";
      +        System.out.println(message);
      +        """;

      悪い例:

      java
      String javaCode = """
      +        String message = \\"\\"\\"
      +                テキストブロックです。
      +                \\"\\"\\";
      +        System.out.println(message);
      +        """;
      +
      +String javaCode = """
      +        String message = ""\\"
      +                テキストブロックです。
      +                ""\\";
      +        System.out.println(message);
      +        """;
    • テキストブロックの開始引用符(""")は前の行の右端に記述する

      良い例:

      java
      String message = """
      +        テキストブロックです。
      +        """;

      悪い例:

      java
      String message =
      +        """
      +        テキストブロックです。
      +        """;
    • テキストブロックのインデントは開始引用符(""")に合わせる必要はない

      良い例:

      java
      String message = """
      +        テキストブロックです。
      +        """;

      悪い例:

      java
      String message = """
      +                 テキストブロックです。
      +                 """;

      一見すると、読みやすく見えるかもしれませんが、変数名の変更によって簡単に崩れてしまい、修正するために多くの行の変更を強制することになるため、メンテナンス性が低下します。

    • テキストブロックで定義する文字列のインデントは基本的に周辺の Java コードに合わせてインデントする
      ただし、横に長い文字列などの可読性向上の目的で左端に揃えるのは良い。

      良い例:

      java
      public class Foo {
      +    public void process() {
      +        String message = """
      +                テキストブロックです。
      +                """;
      +    }
      +}

      悪い例:

      java
      public class Foo {
      +    public void process() {
      +        String message = """
      +    テキストブロックです。
      +    """;
      +    }
      +}

      良い例:

      java
      public class Foo {
      +    public void process() {
      +        if (foo) {
      +            String message = """
      +それはもう長い長いテキストブロックのためインデントするとエディタ上でテキストを見るためには横スクロールが必要になるかもしれません。
      +""";
      +        }
      +    }
      +}

      悪い例:

      java
      public class Foo {
      +    public void process() {
      +        if (foo) {
      +            String message = """
      +                    それはもう長い長いテキストブロックのためインデントするとエディタ上でテキストを見るためには横スクロールが必要になるかもしれません。
      +                    """;
      +        }
      +    }
      +}
    • テキストブロックのインデントにスペース文字とタブ文字を混在させない

    • 文字列の最後に改行コードを入れずに、意図的にインデントした文字列を定義するとき終了引用符(""")の前の行の右端に\\を使用する

      良い例:

      java
      String text = """
      +            ABC
      +            DEF
      +            GHI\\
      +        """;

      悪い例:

      java
      String text = """
      +        ABC
      +        DEF
      +        GHI""".indent(4);

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .toList();
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,168))])}const b=a(h,[["render",k]]);export{o as __pageData,b as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.lean.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.lean.js" new file mode 100644 index 00000000..626acba1 --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204.md.BwEbWD0S.lean.js" @@ -0,0 +1,761 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"Javaコーディング規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java17,コーディング規約,Java"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約.md","filePath":"documents/forJava/Javaコーディング規約.md"}'),h={name:"documents/forJava/Javaコーディング規約.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名、Record 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return List.of(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return List.of(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはList.of()を利用する

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはSet.of()を利用する

      • 不変Mapの生成にはMap.of()を利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Map.of(1, "A", 2, "B", 3, "C");

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo f) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    Foo f = (Foo)o;
      +    // ...
      +}
    • インスタンスの型キャスト(Class キャスト)が必要な場合はパターンマッチングを使用する

      良い例:

      java
      if (o instanceof String s) {
      +    // ...
      +}
      +
      +var str = (o instanceof BigDecimal b) ? b.toPlainString() : String.valueOf(o);
      +
      +var empty = o == null ||
      +  (o instanceof String s && s.isEmpty()) ||
      +  (o instanceof Collection c && c.isEmpty());

      悪い例:

      java
      if (o instanceof String) {
      +    String s = (String)o;
      +    // ...
      +}
      +
      +var str = (o instanceof BigDecimal) ? ((BigDecimal)o).toPlainString() : String.valueOf(o);
      +
      +var empty = o == null ||
      +  (o instanceof String && ((String)o).isEmpty()) ||
      +  (o instanceof Collection && ((Collection)o).isEmpty());

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1 ->
      +    d = encode1(s);
      +case 2 ->
      +    d = encode2(s);
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1 ->
      +    s = decode1(d);
      +case 2 ->
      +    s = decode2(d);
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 1ステートメントのみで行われる文字列の連結には+演算子を利用する

      良い例:

      java
      String s = s1 + s2;
      +
      +return s1 + s2 + s3 + s4 + s5;

      悪い例:

      java
      String s = new StringBuilder(s1).append(s2).toString();
      +
      +return new StringBuilder(s1).append(s2).append(s3).append(s4).append(s5).toString();
    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    switch 式

    • 一つの値を変数に代入するための if-else 文は代わりに switch 式の使用を推奨する
      switch 式の値を使用することで変数を不変(実質的 final)にでき、代入箇所が分散することによる可読性の低下を防げます。

      良い例:

      java
      var value = switch (op) {
      +    case "add" -> a + b;
      +    default -> a - b;
      +};

      悪い例:

      java
      int value;
      +if (op.equals("add")) {
      +    value = a + b;
      +} else {
      +    value = a - b;
      +}
    • case 句はなるべく一つの式での記述を推奨する
      複雑な式や複雑なステートメントを記述しなければならない場合は、メソッドに分割することを検討してください。

    • switch 式は、コーディングミスによるフォールスルーを避けるため、常にアロー構文を使用する
      https://docs.oracle.com/javase/jp/16/language/switch-expressions.htmlからの引用:

      ノート:case L ->ラベルの使用をお薦めします。case L:ラベルの使用時は、break文またはyield文の挿入を忘れがちです。これを忘れると、コード内で思いがけないフォール・スルーが発生する場合があります。 case L ->ラベルで、複数の文または式でないコード、あるいはthrow文を指定するには、それらをブロック内に囲みます。caseラベルが生成する値をyield文で指定します。

      良い例:

      java
      var date = LocalDate.now();
      +var off = switch (date.getDayOfWeek()) {
      +    case MONDAY -> {
      +        if (myCalendar.isOff(date) || localCalendar.isHoliday(date)) {
      +            yield true;
      +        }
      +        yield localCalendar.isHoliday(date.minusDays(1));
      +    }
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY ->
      +        myCalendar.isOff(date) || localCalendar.isHoliday(date);
      +    case SUNDAY, SATURDAY -> true;
      +};

      悪い例:

      java
      var date = LocalDate.now();
      +var off = switch (date.getDayOfWeek()) {
      +    case MONDAY:
      +        if (myCalendar.isOff(date) || localCalendar.isHoliday(date)) {
      +            yield true;
      +        }
      +        yield localCalendar.isHoliday(date.minusDays(1));
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY:
      +        yield myCalendar.isOff(date) || localCalendar.isHoliday(date);
      +    case SUNDAY, SATURDAY:
      +        yield true;
      +};
    • アロー構文の、中カッコ、yieldを省略できる場合は必ず省略する
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var shortDay = switch (day) {
      +    case MONDAY -> "M";
      +    case WEDNESDAY -> "W";
      +    case FRIDAY -> "F";
      +    case TUESDAY, THURSDAY -> "T";
      +    case SUNDAY, SATURDAY -> "S";
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var shortDay = switch (day) {
      +    case MONDAY -> {
      +        yield "M";
      +    }
      +    case WEDNESDAY -> {
      +        yield "W";
      +    }
      +    case FRIDAY -> {
      +        yield "F";
      +    }
      +    case TUESDAY, THURSDAY -> {
      +        yield "T";
      +    }
      +    case SUNDAY, SATURDAY -> {
      +        yield "S";
      +    }
      +};
    • Enum 値の switch 式で case 句が全ての Enum 値をカバーする場合は default 句はデッドコードとなるため記述しない
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> false;
      +    case SUNDAY, SATURDAY -> true;
      +};
      +
      +var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case SUNDAY, SATURDAY -> true;
      +    default -> false;
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +var off = switch (day) {
      +    case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> false;
      +    case SUNDAY, SATURDAY -> true;
      +    default -> false;
      +};

    switch 文

    • 代わりに switch 式が使用できる箇所は switch 式を使用する

      • case 句でreturnを記述する場合は switch 文を使用して良い
    • case 句はなるべく 1 行のステートメントでの記述を推奨する
      複雑なステートメントを記述しなければならない場合は、メソッドに分割することを検討してください。

    • switch 文は、コーディングミスによるフォールスルーを避けるため、なるべくアロー構文を使用することを推奨する
      https://docs.oracle.com/javase/jp/16/language/switch-expressions.htmlからの引用:

      ノート:case L ->ラベルの使用をお薦めします。case L:ラベルの使用時は、break文またはyield文の挿入を忘れがちです。これを忘れると、コード内で思いがけないフォール・スルーが発生する場合があります。 case L ->ラベルで、複数の文または式でないコード、あるいはthrow文を指定するには、それらをブロック内に囲みます。caseラベルが生成する値をyield文で指定します。

      良い例:

      java
      var date = LocalDate.now();
      +switch (date.getDayOfWeek()) {
      +    case MONDAY -> {
      +        if (
      +            !myCalendar.isOff(date) && !localCalendar.isHoliday(date) &&
      +            !localCalendar.isHoliday(date.minusDays(1))
      +        ) {
      +            work();
      +        }
      +    }
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> {
      +        if (!myCalendar.isOff(date) && !localCalendar.isHoliday(date)) {
      +            work();
      +        }
      +    }
      +}

      悪い例:

      java
      var date = LocalDate.now();
      +switch (date.getDayOfWeek()) {
      +    case MONDAY:
      +        if (
      +            !myCalendar.isOff(date) && !localCalendar.isHoliday(date) &&
      +            !localCalendar.isHoliday(date.minusDays(1))
      +        ) {
      +            work();
      +        }
      +        break;
      +    case TUESDAY, WEDNESDAY, THURSDAY, FRIDAY:
      +        if (!myCalendar.isOff(date) && !localCalendar.isHoliday(date)) {
      +            work();
      +        }
      +        break;
      +}
    • アロー構文を使用しない(コロンを使用する)場合、複数の値をマッチさせるときの case 句はカンマを使用して列挙する
      良い例:

      java
      var day = DayOfWeek.SUNDAY;
      +boolean off = false;
      +switch (day) {
      +    case SUNDAY, SATURDAY:
      +      off = true;
      +      break;
      +};

      悪い例:

      java
      var day = DayOfWeek.SUNDAY;
      +boolean off = false;
      +switch (day) {
      +    case SUNDAY:
      +    case SATURDAY:
      +      off = true;
      +      break;
      +};

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : List.of("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      List.of("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      List.of("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : List.of("A", "B")) {
      +    this.process(s);
      +}
    • Arrays.asList()は利用せず、List.of()を利用する
      Java9 で追加されたメソッド。
      配列をListに置き換える場合や、単純な固定のListを生成する際にはList.of()を利用する。

      • Arrays.asList()List.of()の違い
        List.of()で生成したListは、完全に不変(Immutable)なListで、
        Arrays.asList()で生成したListは、サイズのみ不変で、set等による値の操作が可能なListです。
        また、setを行った場合、Arrays.asList()に与えられた配列インスタンスにも影響します。

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .toList();

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).toList();
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .toList();
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +fooList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .toList();
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .toList();

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.toList();
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.toList();

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    var (Local-Variable Type Inference)

    次のリンクも参考にしてください。
    Style Guidelines for Local Variable Type Inference in Java

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、varを混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、例えば以下ののような方針で統一してください。

      1. varを利用しない
      2. 原則varを利用する
      3. 右辺で、明確に型がわかる場合はvarを利用する

      以下で23について例を示します。

      • 原則varを利用する

        利用できる箇所は全てvarを利用します。

        良い例:

        java
        var a = "";
        +var b = 123;
        +var c = new ArrayList<String>();

        悪い例:

        java
        var a = "";
        +int b = 123;
        +List<String> c = new ArrayList<>();
        java
        void methodA() {
        +    var a = "";
        +}
        +void methodB() {
        +    String a = "";
        +}
      • 右辺で、明確に型がわかる場合はvarを利用する

        右辺をみて型がわかる場合は、全てvarを利用します。 それ以外はvarを利用してはいけません。

        良い例:

        java
        var s = ""; // リテラルによって型が明確に判断できます
        +var list1 = new ArrayList<String>(); // newによって型が明確に判断できます
        +var list2 = (List<String>) map.get("p"); // キャストによって型が明確に判断できます
        +var list3 = List.of("A", "B", "C"); // ファクトリーによって型が明確に判断できます

        プロジェクトで観点を決めるべき例:

        java
        var b1 = s.isEmpty(); // \`is\`で始まるメソッドは通例としてbooleanを返します
        +var b2 = Objects.equals(s1, s2); // \`equals\`メソッドは通例としてbooleanを返します
        +var i1 = Objects.hash(s); // \`hash\`、\`hashCode\`メソッドは通例としてintを返します
        +var i2 = Objects.compare(s1, s2); // \`compare\`、\`compareTo\`メソッドは通例としてintを返します

        悪い例:

        java
        var a = e.getData(); // \`e\`の型と、メソッド定義がわからなければ型が判断できません

    レコード

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、recordとクラスと JavaBeans 形式のクラスや Lombok の @Data の使用を混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、recordを利用しないか、recordの使用しても良い箇所について方針を決めた上で使用するようにしてください。 また、recordは JavaBeans とは互換性がないため使用している各種ライブラリの対応状況にも注意する必要があります。

      方針例: クラス内で処理する一時的なデータを表現するためだけにrecordを使用しても良い。

      java
      // parentId と id をキーとして、重複を排除した uniqueItems を作成します。
      +record Key(int parentId, int id) {
      +}
      +var map = new HashMap<Key, Item>();
      +for (Item item : items) {
      +  var key = new Key(item.getParenId(), item.getId());
      +  map.putIfAbsent(key, item);
      +}
      +var uniqueItems = map.values();
    • 次の記述スタイルを標準とする
      ただし、フォーマッタを導入している場合はフォーマッタに合わせます。

      良い例:

      java
      /**
      + * 矩形を表すクラス
      + *
      + * @param x      矩形の左上隅の x 座標
      + * @param y      矩形の左上隅の y 座標
      + * @param width  矩形の幅
      + * @param height 矩形の高さ
      + */
      +public record Rect(
      +    /* 矩形の左上隅の x 座標 */
      +    double x,
      +    /* 矩形の左上隅の y 座標 */
      +    double y,
      +    /* 矩形の幅 */
      +    double width,
      +    /* 矩形の高さ */
      +    double height) {
      +}

      次にポイントを説明します。

      • {の後、}の前に改行する

      • レコードコンポーネント(パラメータ)のカンマの後に改行することを推奨する
        レコードコンポーネントが少なく、レコードコンポーネント名からでも意味が理解でき、改行がなくても可読性が低下しない場合は、改行を必要としません。
        改行を推奨する理由は以下です。

        • アノテーションを付与したときでも比較的読みやすい(アノテーション引数との混在による可読性の低下の回避)
        • レコードコンポーネントが多い場合も比較的読みやすい
      • レコードコンポーネントが多い場合、レコードコンポーネントへ直接コメントをつけることを検討する
        レコードコンポーネントの JavaDoc としては@param形式でレコード名の上部に記述しますが、このソースコードをテキストとしてみた場合、レコードコンポーネントの定義と@paramの説明とで距離が空いてしまう場合があり、型と説明を読むのに時間がかかってしまう可能性があります。
        また、使用する IDE によっては、アクセサから宣言へのジャンプを使用すると、レコードコンポーネント(パラメータ)の定義へジャンプするものがあります。レコードコンポーネントにコメントがあればすぐに説明を読むことができますが、JavaDoc しか記述しない場合は、ファイル上部へ移動して対応するレコードコンポーネントの説明を探さなければなりません。

        java
        public record Rect(
        +    /* 矩形の左上隅の x 座標 */
        +    double x,
        +    /* 矩形の左上隅の y 座標 */
        +    double y,
        +    /* 矩形の幅 */
        +    double width,
        +    /* 矩形の高さ */
        +    double height) {
        +}
    • レコードのアクセサを上書きしない

      悪い例:

      java
      public record Rect(
      +    double x,
      +    double y,
      +    double width,
      +    double height) {
      +
      +    public double x() {
      +        return x;
      +    }
      +}

    テキストブロック

    次のリンクも参考にしてください。
    Programmer's Guide To Text Blocks > Style Guidelines For Text Blocks

    • 複数行の文字列を定義する際、文字列連結よりもテキストブロックを使用する

      良い例:

      java
      String message = """
      +        複数行の文字列はテキストブロックを使用しましょう。
      +        文字列連結と違い、プラス記号や改行コードのエスケープシーケンスのような無駄を排除でき、
      +        より読みやすいソースコードで書くことができます。
      +        """;

      悪い例:

      java
      String message =
      +        "複数行の文字列はテキストブロックを使用しましょう。\\n" +
      +        "文字列連結と違い、プラス記号や改行コードのエスケープシーケンスのような無駄を排除でき、\\n" +
      +        "より読みやすいソースコードで書くことができます。\\n";
    • 単一行の文字列を定義する際、テキストブロックは使用せず文字列リテラルを使用する
      ただし、二重引用符(")のエスケープを避ける目的ではテキストブロックを使用しても良い。

      良い例:

      java
      String singleLine = "単一行の文字列です。";
      +
      +String message = """
      +        テキストブロックでは単一の二重引用符「"」にエスケープを使用する必要がありません。""";

      悪い例:

      java
      String singleLine = """
      +        単一行の文字列です。""";
    • テキストブロック内では基本的に改行コードのエスケープシーケンス(\\n)を使用しないが、読みやすさ向上の目的で改行コードのエスケープシーケンス(\\n)を使用しても良い

      良い例:

      java
      String multiLine = """
      +        複数行の、
      +        文字列です。
      +        """;
      +
      +String csv = """
      +        名前,説明,MIMEタイプ
      +        CSV,"Comma-Separated Valuesの略\\nCharacter-Separated Valuesの意味で使用されることもある","text/csv"
      +        TSV,"Tab-Separated Valuesの略","text/tab-separated-values"
      +        """;

      悪い例:

      java
      String multiLine = """
      +        複数行の、\\n文字列です。
      +        """;
    • テキストブロックで定義した文字列を処理する場合は、テキストブロックをローカル変数やフィールドへ代入してから使用することを推奨する

      良い例:

      java
      String selectX = """
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_X
      +        """;
      +String selectY = """
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_Y
      +        """;
      +processValues(fetch(selectX, Entity1.class), fetch(selectY, Entity2.class));

      悪い例:

      java
      processValues(fetch("""
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_X
      +        """, Entity1.class), fetch("""
      +        SELECT
      +            ID,
      +            NAME
      +        FROM
      +            TABLE_Y
      +        """, Entity2.class));

      複雑な処理に直接テキストブロックを使用すると可読性を下げる可能性があります。

    • 3 つ以上続く二重引用符(")をエスケープする際は、最初の二重引用符にエスケープシーケンスを使用する

      良い例:

      java
      String javaCode = """
      +        String message = \\"""
      +                テキストブロックです。
      +                \\""";
      +        System.out.println(message);
      +        """;

      悪い例:

      java
      String javaCode = """
      +        String message = \\"\\"\\"
      +                テキストブロックです。
      +                \\"\\"\\";
      +        System.out.println(message);
      +        """;
      +
      +String javaCode = """
      +        String message = ""\\"
      +                テキストブロックです。
      +                ""\\";
      +        System.out.println(message);
      +        """;
    • テキストブロックの開始引用符(""")は前の行の右端に記述する

      良い例:

      java
      String message = """
      +        テキストブロックです。
      +        """;

      悪い例:

      java
      String message =
      +        """
      +        テキストブロックです。
      +        """;
    • テキストブロックのインデントは開始引用符(""")に合わせる必要はない

      良い例:

      java
      String message = """
      +        テキストブロックです。
      +        """;

      悪い例:

      java
      String message = """
      +                 テキストブロックです。
      +                 """;

      一見すると、読みやすく見えるかもしれませんが、変数名の変更によって簡単に崩れてしまい、修正するために多くの行の変更を強制することになるため、メンテナンス性が低下します。

    • テキストブロックで定義する文字列のインデントは基本的に周辺の Java コードに合わせてインデントする
      ただし、横に長い文字列などの可読性向上の目的で左端に揃えるのは良い。

      良い例:

      java
      public class Foo {
      +    public void process() {
      +        String message = """
      +                テキストブロックです。
      +                """;
      +    }
      +}

      悪い例:

      java
      public class Foo {
      +    public void process() {
      +        String message = """
      +    テキストブロックです。
      +    """;
      +    }
      +}

      良い例:

      java
      public class Foo {
      +    public void process() {
      +        if (foo) {
      +            String message = """
      +それはもう長い長いテキストブロックのためインデントするとエディタ上でテキストを見るためには横スクロールが必要になるかもしれません。
      +""";
      +        }
      +    }
      +}

      悪い例:

      java
      public class Foo {
      +    public void process() {
      +        if (foo) {
      +            String message = """
      +                    それはもう長い長いテキストブロックのためインデントするとエディタ上でテキストを見るためには横スクロールが必要になるかもしれません。
      +                    """;
      +        }
      +    }
      +}
    • テキストブロックのインデントにスペース文字とタブ文字を混在させない

    • 文字列の最後に改行コードを入れずに、意図的にインデントした文字列を定義するとき終了引用符(""")の前の行の右端に\\を使用する

      良い例:

      java
      String text = """
      +            ABC
      +            DEF
      +            GHI\\
      +        """;

      悪い例:

      java
      String text = """
      +        ABC
      +        DEF
      +        GHI""".indent(4);

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .toList();
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,168))])}const b=a(h,[["render",k]]);export{o as __pageData,b as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.js" new file mode 100644 index 00000000..21f9a379 --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.js" @@ -0,0 +1,492 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const y=JSON.parse('{"title":"Javaコーディング規約 for Java11","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約 for Java11","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java11,コーディング規約,Java,Java9"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約_for_11.md","filePath":"documents/forJava/Javaコーディング規約_for_11.md"}'),h={name:"documents/forJava/Javaコーディング規約_for_11.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return List.of(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return List.of(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはList.of()を利用する

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはSet.of()を利用する

      • 不変Mapの生成にはMap.of()を利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Map.of(1, "A", 2, "B", 3, "C");

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    // ...
      +}

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1:
      +    d = encode1(s);
      +    break;
      +case 2:
      +    d = encode2(s);
      +    break;
      +default:
      +    break;
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1:
      +    s = decode1(d);
      +    break;
      +case 2:
      +    s = decode2(d);
      +    break;
      +default:
      +    break;
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 1ステートメントのみで行われる文字列の連結には+演算子を利用する

      良い例:

      java
      String s = s1 + s2;
      +
      +return s1 + s2 + s3 + s4 + s5;

      悪い例:

      java
      String s = new StringBuilder(s1).append(s2).toString();
      +
      +return new StringBuilder(s1).append(s2).append(s3).append(s4).append(s5).toString();
    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : List.of("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      List.of("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      List.of("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : List.of("A", "B")) {
      +    this.process(s);
      +}
    • Arrays.asList()は利用せず、List.of()を利用する
      Java9 で追加されたメソッド。
      配列をListに置き換える場合や、単純な固定のListを生成する際にはList.of()を利用する。

      • Arrays.asList()List.of()の違い
        List.of()で生成したListは、完全に不変(Immutable)なListで、
        Arrays.asList()で生成したListは、サイズのみ不変で、set等による値の操作が可能なListです。
        また、setを行った場合、Arrays.asList()に与えられた配列インスタンスにも影響します。

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).collect(Collectors.toList());
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +hogeList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      hogeList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +hogeList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .collect(Collectors.toList());
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .collect(Collectors.toList());

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.collect(Collectors.toList());
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.collect(Collectors.toList());

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    var (Local-Variable Type Inference)

    次のリンクも参考にしてください。
    Style Guidelines for Local Variable Type Inference in Java

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、varを混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、例えば以下ののような方針で統一してください。

      1. varを利用しない
      2. 原則varを利用する
      3. 右辺で、明確に型がわかる場合はvarを利用する

      以下で23について例を示します。

      • 原則varを利用する

        利用できる箇所は全てvarを利用します。

        良い例:

        java
        var a = "";
        +var b = 123;
        +var c = new ArrayList<String>();

        悪い例:

        java
        var a = "";
        +int b = 123;
        +List<String> c = new ArrayList<>();
        java
        void methodA() {
        +    var a = "";
        +}
        +void methodB() {
        +    String a = "";
        +}
      • 右辺で、明確に型がわかる場合はvarを利用する

        右辺をみて型がわかる場合は、全てvarを利用します。 それ以外はvarを利用してはいけません。

        良い例:

        java
        var s = ""; // リテラルによって型が明確に判断できます
        +var list1 = new ArrayList<String>(); // newによって型が明確に判断できます
        +var list2 = (List<String>) map.get("p"); // キャストによって型が明確に判断できます
        +var list3 = List.of("A", "B", "C"); // ファクトリーによって型が明確に判断できます

        プロジェクトで観点を決めるべき例:

        java
        var b1 = s.isEmpty(); // \`is\`で始まるメソッドは通例としてbooleanを返します
        +var b2 = Objects.equals(s1, s2); // \`equals\`メソッドは通例としてbooleanを返します
        +var i1 = Objects.hash(s); // \`hash\`、\`hashCode\`メソッドは通例としてintを返します
        +var i2 = Objects.compare(s1, s2); // \`compare\`、\`compareTo\`メソッドは通例としてintを返します

        悪い例:

        java
        var a = e.getData(); // \`e\`の型と、メソッド定義がわからなければ型が判断できません

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .collect(Collectors.toList());
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    String から Integer・Long への変換

    数値文字列のStringIntegerに変換するには、Integer#valueOf(String)を利用して下記のように記述します。

    java
    String s = "1";
    +Integer value = Integer.valueOf(s);

    しかし、下記のようにも記述できます。

    java
    String s = "1";
    +Integer value = new Integer(s);

    これらの違いは、
    new Integer(s)とした場合、必ず Integer インスタンスが生成されますが、
    Integer.valueOf(s)とした場合は -128 から 127 の間の数値であればキャッシュから取り出すためインスタンスを生成しません。

    このため、前者のInteger#valueOf(String)を利用した記述のほうが効率的です。
    Long#valueOf(String)も同様です。

    性能差が少ないため、ほとんど問題にはなりませんが、FindBugs 等、静的解析で検出される問題のため、理解が必要です。

    また、String からの変換だけでなく、int や long からの変換も#valueOfが効率的ですが、オートボクシングを利用した場合、コンパイルで自動的にこれらの処理に変換されるため、記述することはありません。

    String から int・long への変換

    数値文字列のStringintに変換するには、Integer#parseInt(String)を利用して下記のように記述します。

    java
    String s = "1";
    +int value = Integer.parseInt(s);

    しかし、オートボクシングが利用できるため、意図せず下記のように記述ミスをする場合があります。

    java
    String s = "1";
    +int value = Integer.valueOf(s);//取得したIntegerインスタンスをオートボクシングでintにcastしている
    java
    String s = "1";
    +int value = new Integer(s);//生成したIntegerインスタンスをオートボクシングでintにcastしている

    「オートボクシング」の説明に記載した通り、性能に差が出るだけでなく、
    記述から明らかにミスであることが解るため、FindBugs 等、静的解析で検出されるコードです。

    longへの変換の場合はLong#parseLong(String)を利用します

    以下に計測結果を記載します。

    • 計測結果

      処理回数Integer.valueOf(String) (ms)Integer#parseInt(String) (ms)
      1,000 万回396318
      1 億回4,0603,077

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,178))])}const b=a(h,[["render",k]]);export{y as __pageData,b as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.lean.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.lean.js" new file mode 100644 index 00000000..21f9a379 --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_11.md.CtnIBNB8.lean.js" @@ -0,0 +1,492 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const y=JSON.parse('{"title":"Javaコーディング規約 for Java11","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約 for Java11","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java11,コーディング規約,Java,Java9"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約_for_11.md","filePath":"documents/forJava/Javaコーディング規約_for_11.md"}'),h={name:"documents/forJava/Javaコーディング規約_for_11.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return List.of(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return List.of(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはList.of()を利用する

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはSet.of()を利用する

      • 不変Mapの生成にはMap.of()を利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Map.of(1, "A", 2, "B", 3, "C");

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = List.of(1, 2, 3, 4, 5);

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    // ...
      +}

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1:
      +    d = encode1(s);
      +    break;
      +case 2:
      +    d = encode2(s);
      +    break;
      +default:
      +    break;
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1:
      +    s = decode1(d);
      +    break;
      +case 2:
      +    s = decode2(d);
      +    break;
      +default:
      +    break;
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 1ステートメントのみで行われる文字列の連結には+演算子を利用する

      良い例:

      java
      String s = s1 + s2;
      +
      +return s1 + s2 + s3 + s4 + s5;

      悪い例:

      java
      String s = new StringBuilder(s1).append(s2).toString();
      +
      +return new StringBuilder(s1).append(s2).append(s3).append(s4).append(s5).toString();
    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : List.of("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      List.of("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      List.of("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : List.of("A", "B")) {
      +    this.process(s);
      +}
    • Arrays.asList()は利用せず、List.of()を利用する
      Java9 で追加されたメソッド。
      配列をListに置き換える場合や、単純な固定のListを生成する際にはList.of()を利用する。

      • Arrays.asList()List.of()の違い
        List.of()で生成したListは、完全に不変(Immutable)なListで、
        Arrays.asList()で生成したListは、サイズのみ不変で、set等による値の操作が可能なListです。
        また、setを行った場合、Arrays.asList()に与えられた配列インスタンスにも影響します。

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).collect(Collectors.toList());
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +hogeList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      hogeList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +hogeList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .collect(Collectors.toList());
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .collect(Collectors.toList());

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.collect(Collectors.toList());
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.collect(Collectors.toList());

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    var (Local-Variable Type Inference)

    次のリンクも参考にしてください。
    Style Guidelines for Local Variable Type Inference in Java

    • 明確な方針で、利用する・利用しないを統一すること
      方針無く、varを混在させるとソースコードの見通しと保守性が悪くなります。
      各プロジェクトで、例えば以下ののような方針で統一してください。

      1. varを利用しない
      2. 原則varを利用する
      3. 右辺で、明確に型がわかる場合はvarを利用する

      以下で23について例を示します。

      • 原則varを利用する

        利用できる箇所は全てvarを利用します。

        良い例:

        java
        var a = "";
        +var b = 123;
        +var c = new ArrayList<String>();

        悪い例:

        java
        var a = "";
        +int b = 123;
        +List<String> c = new ArrayList<>();
        java
        void methodA() {
        +    var a = "";
        +}
        +void methodB() {
        +    String a = "";
        +}
      • 右辺で、明確に型がわかる場合はvarを利用する

        右辺をみて型がわかる場合は、全てvarを利用します。 それ以外はvarを利用してはいけません。

        良い例:

        java
        var s = ""; // リテラルによって型が明確に判断できます
        +var list1 = new ArrayList<String>(); // newによって型が明確に判断できます
        +var list2 = (List<String>) map.get("p"); // キャストによって型が明確に判断できます
        +var list3 = List.of("A", "B", "C"); // ファクトリーによって型が明確に判断できます

        プロジェクトで観点を決めるべき例:

        java
        var b1 = s.isEmpty(); // \`is\`で始まるメソッドは通例としてbooleanを返します
        +var b2 = Objects.equals(s1, s2); // \`equals\`メソッドは通例としてbooleanを返します
        +var i1 = Objects.hash(s); // \`hash\`、\`hashCode\`メソッドは通例としてintを返します
        +var i2 = Objects.compare(s1, s2); // \`compare\`、\`compareTo\`メソッドは通例としてintを返します

        悪い例:

        java
        var a = e.getData(); // \`e\`の型と、メソッド定義がわからなければ型が判断できません

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .collect(Collectors.toList());
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    String から Integer・Long への変換

    数値文字列のStringIntegerに変換するには、Integer#valueOf(String)を利用して下記のように記述します。

    java
    String s = "1";
    +Integer value = Integer.valueOf(s);

    しかし、下記のようにも記述できます。

    java
    String s = "1";
    +Integer value = new Integer(s);

    これらの違いは、
    new Integer(s)とした場合、必ず Integer インスタンスが生成されますが、
    Integer.valueOf(s)とした場合は -128 から 127 の間の数値であればキャッシュから取り出すためインスタンスを生成しません。

    このため、前者のInteger#valueOf(String)を利用した記述のほうが効率的です。
    Long#valueOf(String)も同様です。

    性能差が少ないため、ほとんど問題にはなりませんが、FindBugs 等、静的解析で検出される問題のため、理解が必要です。

    また、String からの変換だけでなく、int や long からの変換も#valueOfが効率的ですが、オートボクシングを利用した場合、コンパイルで自動的にこれらの処理に変換されるため、記述することはありません。

    String から int・long への変換

    数値文字列のStringintに変換するには、Integer#parseInt(String)を利用して下記のように記述します。

    java
    String s = "1";
    +int value = Integer.parseInt(s);

    しかし、オートボクシングが利用できるため、意図せず下記のように記述ミスをする場合があります。

    java
    String s = "1";
    +int value = Integer.valueOf(s);//取得したIntegerインスタンスをオートボクシングでintにcastしている
    java
    String s = "1";
    +int value = new Integer(s);//生成したIntegerインスタンスをオートボクシングでintにcastしている

    「オートボクシング」の説明に記載した通り、性能に差が出るだけでなく、
    記述から明らかにミスであることが解るため、FindBugs 等、静的解析で検出されるコードです。

    longへの変換の場合はLong#parseLong(String)を利用します

    以下に計測結果を記載します。

    • 計測結果

      処理回数Integer.valueOf(String) (ms)Integer#parseInt(String) (ms)
      1,000 万回396318
      1 億回4,0603,077

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,178))])}const b=a(h,[["render",k]]);export{y as __pageData,b as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.js" new file mode 100644 index 00000000..d7e7200f --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.js" @@ -0,0 +1,479 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const y=JSON.parse('{"title":"Javaコーディング規約 for Java8","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約 for Java8","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java8,コーディング規約,Java"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約_for_8.md","filePath":"documents/forJava/Javaコーディング規約_for_8.md"}'),h={name:"documents/forJava/Javaコーディング規約_for_8.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return Arrays.asList(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return Arrays.asList(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはCollectionsクラスのunmodifiableList()メソッドを利用する

        良い例:

        java
        public static final List<Integer> VALUES = Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4, 5));

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはCollectionsクラスのunmodifiableSet()メソッドを利用する

      • 不変Mapの生成にはCollectionsクラスのunmodifiableMap()メソッドを利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Collections.unmodifiableMap(new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +});

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4, 5));

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    // ...
      +}

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1:
      +    d = encode1(s);
      +    break;
      +case 2:
      +    d = encode2(s);
      +    break;
      +default:
      +    break;
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1:
      +    s = decode1(d);
      +    break;
      +case 2:
      +    s = decode2(d);
      +    break;
      +default:
      +    break;
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : Arrays.asList("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      Arrays.asList("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      Arrays.asList("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : Arrays.asList("A", "B")) {
      +    this.process(s);
      +}

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).collect(Collectors.toList());
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +fooList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .collect(Collectors.toList());
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .collect(Collectors.toList());

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.collect(Collectors.toList());
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.collect(Collectors.toList());

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .collect(Collectors.toList());
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    String から Integer・Long への変換

    数値文字列のStringIntegerに変換するには、Integer#valueOf(String)を利用して下記のように記述します。

    java
    String s = "1";
    +Integer value = Integer.valueOf(s);

    しかし、下記のようにも記述できます。

    java
    String s = "1";
    +Integer value = new Integer(s);

    これらの違いは、
    new Integer(s)とした場合、必ず Integer インスタンスが生成されますが、
    Integer.valueOf(s)とした場合は -128 から 127 の間の数値であればキャッシュから取り出すためインスタンスを生成しません。

    このため、前者のInteger#valueOf(String)を利用した記述のほうが効率的です。
    Long#valueOf(String)も同様です。

    性能差が少ないため、ほとんど問題にはなりませんが、FindBugs 等、静的解析で検出される問題のため、理解が必要です。

    また、String からの変換だけでなく、int や long からの変換も#valueOfが効率的ですが、オートボクシングを利用した場合、コンパイルで自動的にこれらの処理に変換されるため、記述することはありません。

    String から int・long への変換

    数値文字列のStringintに変換するには、Integer#parseInt(String)を利用して下記のように記述します。

    java
    String s = "1";
    +int value = Integer.parseInt(s);

    しかし、オートボクシングが利用できるため、意図せず下記のように記述ミスをする場合があります。

    java
    String s = "1";
    +int value = Integer.valueOf(s);//取得したIntegerインスタンスをオートボクシングでintにcastしている
    java
    String s = "1";
    +int value = new Integer(s);//生成したIntegerインスタンスをオートボクシングでintにcastしている

    「オートボクシング」の説明に記載した通り、性能に差が出るだけでなく、
    記述から明らかにミスであることが解るため、FindBugs 等、静的解析で検出されるコードです。

    longへの変換の場合はLong#parseLong(String)を利用します

    以下に計測結果を記載します。

    • 計測結果

      処理回数Integer.valueOf(String) (ms)Integer#parseInt(String) (ms)
      1,000 万回396318
      1 億回4,0603,077

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,175))])}const b=a(h,[["render",k]]);export{y as __pageData,b as default}; diff --git "a/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.lean.js" "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.lean.js" new file mode 100644 index 00000000..d7e7200f --- /dev/null +++ "b/assets/documents_forJava_Java\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204_for_8.md.CNbXdYCI.lean.js" @@ -0,0 +1,479 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const y=JSON.parse('{"title":"Javaコーディング規約 for Java8","description":"","frontmatter":{"sidebarDepth":4,"title":"Javaコーディング規約 for Java8","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"Javaコーディング規約,Java8,コーディング規約,Java"}]]},"headers":[],"relativePath":"documents/forJava/Javaコーディング規約_for_8.md","filePath":"documents/forJava/Javaコーディング規約_for_8.md"}'),h={name:"documents/forJava/Javaコーディング規約_for_8.md"};function k(r,s,d,E,g,c){const i=e("page-title");return t(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    一般に利用・参照されている Java コーディング規約やガイドラインを以下に示す。本規約の作成においても、下記規約類を参照・抜粋している。

    規約著作者URL
    Code Conventions for the Java Programming LanguageSun Microsystemshttp://www.oracle.com/technetwork/java/codeconvtoc-136057.html
    Writing Robust Java CodeScott W. Amblerhttp://www.ambysoft.com/downloads/javaCodingStandards.pdf
    オブジェクト倶楽部版 Java コーディング標準オブジェクト倶楽部http://objectclub.jp/community/codingstandard/CodingStd.pdf
    電通国際情報際サービス版 Java コーディング規約 2004電通国際情報サービスhttp://objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
    JJGuideline (Java - J2EE Conventions and Guidelines)Stephan.J & JCS Teamhttp://www.fedict.belgium.be/sites/default/files/downloads/Java_J2EE_conventions_and_guidelines_EN.pdf
    Google Java Style (非公式和訳)Googlehttps://kazurof.github.io/GoogleJavaStyle-ja/
    Acroquest Technology Java コーディング規約Acroquest Technologyhttps://www.acroquest.co.jp/webworkshop/javacordingrule/Acroquest_JavaCodingStandard_6_7.pdf
    ※現在は削除されています

    ※ Sun Microsystems の規約は Java 草創期から一応の標準という位置づけだったが、オブジェクト指向、及び、その開発環境の普及・発展によって、設計やコーディングにおいて、直接的に有用な知識や豊富な指針を含むような優れた規約や、ツールなどによる機械的な準拠チェックと連携する規約が普及してきている。

    規約の重要性

    標準としての規約を定義し、遵守することの重要性を以下に示す。

    • ソフトウェアメンテナンスにおける、可読性・保守性・拡張性の向上
    • 問題を起こしやすい実装を未然に回避することによる、品質・生産性の向上
    • 標準規約を通して得られる一般的な実装知識やノウハウ(=学習効果)

    コーディングの心得

    長いプログラムを記述すること(ステップ数)によって生産性が評価されたのは、過去の時代の出来事である。現在は、クラスやメソッドの役割が明確で、ロジックが読みやすく、保守性に優れたプログラムを記述することが評価される。コーディング規約は、コードの書き方に関する一種のパターンと考えることもでき、コードの保守性を向上させる具体的な方法を示している。したがって、規約の一つ一つの意図を理解し、守ることが重要になる。しかし、保守性に優れたコードを作成するためには、コーディング規約を守ることに加えて、良いコードを記述するための基本的な心構えをしっかり心に留めておく必要がある。以下では、その心得について述べる。

    【コーディングの心得 5 か条】

    1. 見やすさを重視せよ
    2. ネーミングはわかりやすく
    3. サンプルを鵜呑みにしない
    4. 同じコードを二度書かない
    5. 役割は一つに

    見やすさを重視せよ

    「良いコード」の基本は、「他の人が読んでもわかりやすいと感じられるコード」。コードの見やすさは、フォーマットはもちろん、ロジックの簡潔さや API の常識的な使い方などから生まれる。コーディングにあたっては、常に他の人の視点を意識しながら、見やすさに気を配って記述する必要がある。例えば、自分で記述したコードであっても、しばらくたってから読み返してみると理解に時間がかかった経験は誰にもあるはず。「3 日前に書いたコードは他人のコードと同じ」ということもよく言われる。見やすさを重視することは、他の人のためだけでなく自分のためにもなる。コードを読んでもすぐに理解できないような実装は、再考(リファクタリング)の必要がある。

    ネーミングはわかりやすく

    コーディングでは、様々な変数やメソッドなどにネーミング(名前付け)する必要がある。ネーミングとは、本来、その対象の本質を表すような名前を考える作業である。大変難易度の高い作業だが、一方で適当に行ってもコードの動作は変わらないため、人によっては手を抜きがちとなる。しかし、ネーミングの良し悪しは、コードの可読性に非常に大きな影響を及ぼす。例えば、「C0001」というクラス名があるとする。これでは、何を表すクラスなのかすぐにはわからないだろう。また、「int p = 5000;」という記述があるとする。プログラマに聞くと、変数名 p は価格(Price)の略だと言うのだが、それならば略さずに、「int price = 5000;」としたほうが分かりやすいはずである。「ネーミングはわかりやすく」の背景には、読んで内容が理解できるという意味で、文章のようなプログラミングを行う、という考え方に基づく。

    サンプルを鵜呑みにしない

    サンプルコードを活用すること自体は、著作権等を侵害しなければ問題ない。問題なのは、その内容や背景を理解しないまま、サンプルコードだけを鵜呑みにして、「おまじない」として表面的に適用してしまうことである。コードを「おまじない」ととらえていては、サンプルコードの間違いを気づかないまま適用してしまうこともある。例えば、ストリームのクローズ処理を行っていないサンプルコードであっても、それに気づかずに自分のコードに適用してしまい、後で思わぬ障害を引き起こすという可能性がある。サンプルコードは、そこで説明する内容に絞ったコードが多いため、このような例はよく見られる。また、サンプルコードをそのまま適用した結果、自分が記述すべきコードには必要のないコードが含まれてしまう場合もある。その場合、コードの可読性を下げる原因となる。自分のコードは、自分で深く理解して記述すべきである。

    同じコードは二度書かない

    コードをコピー・ペーストしていませんか?コピー・ペーストしてしまうと、何らかの修正をする際に、全ての個所に同じ修正をする羽目になる。同じコードが現れるようならまとめて一つにし、外に出してコールするような書き方にすべきである。同じコードをまとめる作業は、どちらかといえば、コーディング時よりリファクタリング(ソフトウェアの外部的振る舞いを変更せずに内部構造を改善する作業)で行われることが多い。しかし、コーディング時からできるだけ気をつけておきたいことでもある。

    役割は一つに

    メソッドの役割が明確で、かつ 1 つであれば単体テストが行いやすくなる。つまり、コードの「試験性」が高まる。また、役割が一つであれば、後でコードを変更する際に修正箇所がわかりやすいため、障害修正に要する時間が短くなる。つまり、コードの「保守性」があがることになる。例えば、「チェックをして実行する」機能を実現するために、checkAndDo()メソッドが存在したとする。この場合、このメソッドは check()メソッドと do()メソッドに分割すべきである。なぜなら、checkAndDo()メソッドの check()ロジックに誤りがあった場合、do()メソッドに書かれる内容まで把握する必要が生じるためである。分割してあれば、check()メソッドだけの変更で済む。このことはクラスの設計にもあてはまる。

    ネーミング規約

    全般

    • 大文字・小文字の違いで名前を区別しない。

      良い例:

      java
      private int carNumber;
      +private int trainNumber;

      悪い例:

      java
      private int num;
      +private int Num;

    パッケージ

    • パッケージ名はすべて小文字にする
    • パッケージ名は意味のある名前にする
    • サブパッケージ名の重複は可能

    クラス

    • クラス名は単語の先頭を大文字にする
      良い例:

      java
      public class Entry {

      悪い例:

      java
      public class entry {
    • インターフェース名、Enum 名はクラス名に準ずる

    メソッド

    • コンストラクタと同じ名前のメソッドはつくらない

    • メソッド名は区切りのみ大文字にする
      良い例:

      java
      public String getName() {
      +    //・・・
      +}

      悪い例:

      java
      public String getname() {
      +    //・・・
      +}
      +public String GETNAME() {
      +    //・・・
      +}
    • 変換メソッド名は「"to"+オブジェクト名」にする
      良い例:

      java
      public String toString() {

      悪い例:

      java
      public String string() {
    • ゲッターメソッド名は「"get"+属性名」にする
      型がbooleanの場合は「"is"+属性名」にする

    • セッターメソッド名は「"set"+属性名」にする

    • boolean変数を返すメソッド名はtrue/falseの状態がわかるようにする

      良い例:

      java
      public boolean isAsleep() {
      +}
      +public boolean exists() {
      +}
      +public boolean hasExpired() {
      +}

    引数

    • メソッドのパラメータ名とインスタンス変数名を一緒にしない
      ただし、アクセサメソッドやコンストラクタなど、統合開発環境の機能により自動生成するものに関しては可とする。
      アンダースコア _ をつけての区別は原則禁止とする。

      良い例:

      java
      public double calc(double rate) {
      +    return this.value * rate;
      +}

      悪い例:

      java
      public double calc(double value) {
      +    return this.value * value;
      +}
      +
      +public double calc(double _value) {
      +    return this.value * _value;
      +}

    変数全般

    • boolean変数はtrue/false の状態がわかるようにする

      良い例:

      java
      private boolean isOpen;

      悪い例:

      java
      private boolean flag;
    • 定数は全てstatic finalとし、すべて大文字、区切りは"_"

      良い例:

      java
      private static final String SYSTEM_NAME = "販売管理システム";
    • 変数名は小文字とし、単語の区切りのみ大文字にする

      良い例:

      java
      private String thisIsString;

      変数名に固有名詞が含まれる場合、先頭をのぞき、単語の区切り以外に大文字を使用してもよい

      良い例:

      java
      private String thisIsIPAddress;

    ローカル変数

    • スコープが狭い変数名は省略した名前でもよい
      良い例:

      java
      if (・・・) {
      +    String s = "・・・・";
      +   //変数sを利用した処理 数行
      +}

      悪い例:

      java
      String s = "・・・・";
      +if (・・・) {
      +   //変数sを利用した処理
      +}
      +・・・
      +if (・・・) {
      +   //変数sを利用した処理
      +}

      変数sの利用範囲が広いので役割が明確になる変数名に変更する。

    • for 文のループカウンタは、ネストごとに"i","j","k"・・・を使う

    Enum

    • Enum 名はクラス名と同じく、単語の先頭を大文字にする

    • 列挙定数は定数と同じく、すべて大文字、区切りは"_"

      良い例:

      java
      enum Season {
      +    WINTER,
      +    SPRING,
      +    SUMMER,
      +    FALL
      +}

      悪い例:

      java
      enum Season {
      +    winter,
      +    spring,
      +    summer,
      +    fall
      +}

    コーディング規約

    全般

    • 原則としてオブジェクトの参照にはインターフェースを利用する
      オブジェクトを参照する際は、そのオブジェクトの実装クラスを用いて宣言できるが、実装クラスに適切なインターフェースが存在している場合は、必ずインターフェースを用いて宣言すること。

      良い例:

      java
      List<Entry> list = new ArrayList<>();
      +Map<String, String> map = new HashMap<>();

      悪い例:

      java
      ArrayList<Entry> list = new ArrayList<>();
      +HashMap<String, String> map = new HashMap<>();
    • 推奨されない API を使用しない
      アノテーション@Deprecatedで指定されたメソッドは利用しないこと。

    • 使われないコードは書かない

    • 宣言は適切な権限で行うこと(public, protected, private

    • final を適切に利用する
      継承されないクラス、オーバーライドされないメソッド、値の変わらない変数(つまり定数)等、変化のないもの/変化させたくないものについてはfinal で宣言する。

      良い例:

      java
      //継承されないクラス
      +public final class CalculateUtils {
      +    //・・・
      +}
      +
      +//値の変わらない変数(定数)
      +private static final String MESSAGE = "・・・";
      +
      +//オーバーライドされないメソッド
      +public final int sum(/*変化させたくない値*/final int... values) {
      +    int sumValue = 0;
      +    for (/*変化させたくない値*/final int value : values) {
      +        sumValue += value;
      +    }
      +    return sumValue;
      +}

    フォーマット

    • インデントは空白文字 4 文字分の Tab を使用する

    • 長すぎる行は避ける

    • { の後にステートメントを記述しない
      良い例:

      java
      if (s == null) {
      +    return 0;
      +}

      悪い例:

      java
      if (s == null) {return 0;}
    • 1 行に 2 つ以上のステートメントを記述しない
      悪い例:

      java
      } catch (Exception e) {
      +    log.error("Error", e);return null;
      +}
    • カンマの後には空白文字を
      良い例:

      java
      process(x, y, z);

      悪い例:

      java
      process(x,y,z);
    • 代入演算子( = , += , -= , …)の前後には空白文字を挿入する
      良い例:

      java
      int a = x;
      +a += 10;

      悪い例:

      java
      int a=x;
      +a+= 10;
    • for 文内のセミコロンの後には空白文字を挿入する
      良い例:

      java
      for (int i = 0; i < array.length; i++) {
      +    //・・・
      +}

      悪い例:

      java
      for (int i = 0;i < array.length ;i++) {
      +    //・・・
      +}
    • ++-- とオペランドの間には空白文字を入れない
      良い例:

      java
      i++;

      悪い例:

      java
      i ++;
    • ビット演算子( |&^<<>> )の前後には空白文字を挿入する

    • 論理演算子( ||&&)の前後には空白文字を挿入する

    • 関係演算子( <>>=<===!= )の前後には空白文字を挿入する

    • 算術演算子( /% )の前後には空白文字を挿入する

    • return 文ではカッコを使わない
      良い例:

      java
      int answer = (a + b + c) * d;
      +return answer;

      悪い例:

      java
      return ((a + b + c) * d);
    • if などの条件式で boolean の変数を比較しない

      良い例:

      java
      if (hasStock)

      悪い例:

      java
      if (hasStock == true)
    • 不等号の向きは左向き( <<= )にする
      良い例:

      java
      if (from <= x && x <= to) {

      悪い例:

      java
      if (x >= from && x <= to) {

    コメント

    • ファイルの先頭への Copyright の表記について
      ソースのファイルヘッダにコピーライト標記は法的拘束力がないため、不要とする。
      ただし、顧客からの要求があった場合を除く。

    • Javadoc コメントには、少なくとも author と version(クラス)、param と return と exception(メソッド)を記述する

      • 今後もバージョンアップのリリースが予定されているソースでは、上記に加えて since(バージョン)を記述する
      • @Overrideのあるメソッドでは、上記に加えて{@Inherit}を記述する
    • Javadoc  クラスヘッダコメントのフォーマットは以下の通り

      良い例:

      java
      /**
      + * Action(or Bean)クラス メニュー名称
      + *
      + * @author 姓 名
      + * @version バージョン YYYY/MM/DD 説明
      + */
    • コメントは必要なものだけを簡潔に
      悪い例:

      java
      /**
      + * 文字列に変換
      + */
      +@Override
      +public String toString() {
      +
      +/**
      + * コピー
      + *
      + * @return コピーしたインスタンス
      + */
      +public Entry copy() {
    • 不要なコメントは記載しない

      • コードからすぐわかること・冗長なコメント
      • 名前の説明
        コメントではなくわかりやすい名前を付ける。
      • 別システムで管理している内容
        ソースコード管理システム、バグトラッキングシステムで管理している内容はソースコードにコメントで記載する必要はない。
        • コメントアウトされたコード
          ソースコード管理システムで管理されている

    インポート

    • java.langパッケージはインポートしない

      悪い例:

      java
      import java.lang.String;//必要のない記述
    • 原則として static インポートしない
      JUnit の作成やフレームワークとして static インポートが推奨されるような場合は利用してもよい

    • 原則としてオンデマンドのインポート宣言(type-import-on-demand declaration)(アスタリスク*によるインポート) は行わない

      悪い例:

      java
      import java.util.*;

    コンストラクタ

    • public 宣言していないクラスにはpublic権限のコンストラクタを作らない
      良い例:

      java
      class Entry {
      +    //・・・
      +    Entry(int id) {
      +        //・・・
      +    }

      悪い例:

      java
      class Entry {
      +    //・・・
      +    public Entry(int id) {
      +        //・・・
      +    }
    • インスタンスメンバを持たない(static メンバのみの)クラスは、private権限のコンストラクタを作成する

    メソッド

    • オーバーライドさせたくないメソッドはfinalを利用する

    • 戻り値が配列のメソッドで、戻る配列のサイズが 0 の場合、メソッドを使用するクライアントの余計な null チェックのロジックを回避するため、null ではなく長さゼロの配列を戻すようにする。 良い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return ArrayUtils.EMPTY_STRING_ARRAY;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return Collections.emptyList();
      +    }
      +    return Arrays.asList(s);
      +}

      悪い例:

      java
      public String[] toArray(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return new String[] { s };
      +}
      +
      +public List<String> toList(String s) {
      +    if (s == null || s.isEmpty()) {
      +        return null;
      +    }
      +    return Arrays.asList(s);
      +}
    • メソッドは 1 つの役割にする

    クラスメソッド

    • クラスメソッドを利用するときは、クラス名を使って呼び出す
      良い例:

      java
      int comp = Integer.compare(x, y);

      悪い例:

      java
      Integer a = //
      +int comp = a.compare(x, y);

    変数全般

    • 1 つのステートメントには 1 つの変数宣言
      良い例:

      java
      /** 科目コード */
      +private String code;
      +/** 科目名 */
      +private String name;
      +/** 科目略名 */
      +private String shortName;

      悪い例:

      java
      private String code, name, shortName;
    • リテラルは使用しない
      リテラルとは、コード中に、表現が定数として直接現れており、記号やリストで表現することができないものを指す(数値、文字列両方含む 通称マジックナンバー)。コードの可読性・保守性の低下を防ぐために、リテラル定数(static final フィールド)を使用すること。
      例外:-1,0,1 等をカウント値としてループ処理等で使用するような場合

      良い例:

      java
      private static final double ONE_MILE_METRE = 1609.344;
      +
      +public double mileToMetre(double mi) {
      +    return mi * ONE_MILE_METRE;
      +}

      悪い例:

      java
      public double mileToMetre(double mi) {
      +    return mi * 1609.344;
      +}
      • リテラル定数の名前はその値の意味を正しく表現したものにする

        悪い例:

        java
        private static final int ZERO = 0;
    • 配列宣言は「型名[]」にする

      良い例:

      java
      private int[] sampleArray = new int[10];

      悪い例:

      java
      private int sampleArray[] = new int[10];
    • できるだけローカル変数を利用する
      ローカル変数で事足りるものをインスタンス変数として利用するなど、必要のないインスタンス変数を定義すると、パフォーマンスや可読性の低下やの大きな要因となる上、マルチスレッドを意識した際に不整合がおきる可能性があるので、インスタンス変数は必要性を充分に考慮してから使用すること。

    • 定数はfinalで宣言する

    • ローカル変数とインスタンス変数を使いわける

    定数

    • public で宣言するクラス変数とインスタンス変数は、定数のみとし、 static final で定義する
      final ではない static な定数は作成しない。

      良い例:

      java
      public static final String PROTOCOL_HTTP = "http";
    • 定数( static フィールド)に、 static ではないメソッドから書き込まない

    • 定数は、プリミティブ型もしくは、不変(Immutable)オブジェクトで参照する

      • 不変Listの生成にはCollectionsクラスのunmodifiableList()メソッドを利用する

        良い例:

        java
        public static final List<Integer> VALUES = Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4, 5));

        悪い例:

        java
        public static final List<Integer> VALUES = Arrays.asList(1, 2, 3, 4, 5);
      • 不変Setの生成にはCollectionsクラスのunmodifiableSet()メソッドを利用する

      • 不変Mapの生成にはCollectionsクラスのunmodifiableMap()メソッドを利用する

        良い例:

        java
        public static final Map<Integer, String> VALUES_MAP = Collections.unmodifiableMap(new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +});

        悪い例:

        java
        public static final Map<Integer, String> VALUES_MAP = new HashMap<>() {
        +    {
        +        put(1, "A");
        +        put(2, "B");
        +        put(3, "C");
        +    }
        +};
      • 不変な配列インスタンスは長さ 0 の配列以外は生成不可能なため、外部から参照される(public)定数では利用せず、List等への置き換えをすること

        良い例:

        java
        public static final List<Integer> VALUES = Collections.unmodifiableList(Arrays.asList(1, 2, 3, 4, 5));

        悪い例:

        java
        public static final int[] VALUES = { 1, 2, 3, 4, 5 };

    インスタンス変数

    • インスタンス変数はprivateにする

      良い例:

      java
      public class Employee {
      +    private long id;
      +
      +    //・・・
      +    //getter/setter
      +}

      悪い例:

      java
      public class Employee {
      +    public long id;
      +
      +    //・・・
      +    //getter/setter
      +}

    クラス変数

    • public static final 宣言した配列を利用しない
      ※「定数」を参照

    • クラス変数にはクラス名を使用してアクセスすること

      良い例:

      java
      BigDecimal b = BigDecimal.ZERO;

      悪い例:

      java
      BigDecimal a = //
      +BigDecimal b = a.ZERO;

    ローカル変数

    • ローカル変数は利用する直前で宣言する
      行間の程度にもよるが、ある程度まとめて宣言するのは OK とする。

      良い例:

      java
      for (int i = 0; i < lines.length; i++) {
      +    String line = lines[i];
      +    //lineの処理
      +}

      悪い例:

      java
      String line;
      +for (int i = 0; i < lines.length; i++) {
      +    line = lines[i];
      +    //lineの処理
      +}
    • ローカル変数は安易に再利用しない
      一度宣言したローカル変数を、複数の目的で安易に使いまわさないこと。ローカル変数は、役割ごとに新しいものを宣言して初期化することにより、コードの可読性・保守性の向上、及びコンパイラの最適化の促進をはかる。

    引数

    • メソッド引数への代入は行わない
      原則としてfinalで宣言する。

      良い例:

      java
      public void add(final int value) {
      +    //・・・
      +}

    継承

    • スーパークラスのインスタンス変数をサブクラスでオーバーライドしない
      スーパークラスと同じ名前のフィールドをサブクラスで宣言しないこと。 同じ名前のフィールドを宣言すると、スーパークラスのフィールドはサブクラスで宣言されたフィールドによって隠ぺいされてしまうので、他の人の混乱を招くことを防ぐため重複する名前は付けないこと。

      悪い例:

      java
      public class Abs {
      +    protected String name;
      +}
      +
      +public class Sub extends Abs {
      +    protected String name;//Abs#nameは隠ぺいされる
      +}
    • スーパークラスのメソッドをオーバーライドするときは@Override アノテーションを指定する。

      良い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    @Override
      +    protected void process() {
      +
      +    }
      +}

      悪い例:

      java
      public class Abs {
      +    protected void process() {
      +
      +    }
      +}
      +
      +public class Sub extends Abs {
      +    //@Overrideアノテーションの指定がない
      +    protected void process() {
      +
      +    }
      +}
    • スーパークラスで private 宣言されているメソッドと同じ名前のメソッドをサブクラスで定義しない
      スーパークラスにある private メソッドと同じ名前のメソッドをサブクラスで定義しないこと。private メソッドはオーバーライドされず全く別のメソッドとして扱われ、他の人の混乱を招き、バグにつながる恐れがある。

    インナークラス

    • 原則としてインナークラスは利用しない
      一つの java ファイルに複数のクラスを記載するのは NG とする。また無名クラスを利用するのも原則として NG とする。
      Enum の定数固有メソッド実装(constant-specific method implementation)、Java8 のラムダ式は内部的にインナークラスとされるがこれらは許可する。

    メンバー順序

    • 以下の順で記述する

      1. static フィールド
      2. static イニシャライザー
      3. static メソッド
      4. フィールド
      5. イニシャライザー
      6. コンストラクター
      7. メソッド
    • 同一カテゴリー内では以下の可視性の順で記述する

      1. public
      2. protected
      3. パッケージ private
      4. private

    インスタンス

    • オブジェクト同士はequals()メソッドで比較する

      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}

      ただし Enum の場合は==演算子を利用して比較する

      equals()メソッドで比較する際、左辺のオブジェクトが null にならないように制御すること。

    • Class 名を利用した比較をおこなわない

      良い例:

      java
      if (o instanceof Foo) {
      +    // ...
      +}

      悪い例:

      java
      if ("my.Foo".equals(o.getClass().getName())) {
      +    // ...
      +}

    制御構造

    • 制御文( if , else , while , for , do while )の { } は省略しない

      良い例:

      java
      if (s == null) {
      +    return;
      +}

      悪い例:

      java
      if (s == null)
      +    return;
    • ステートメントが無い {} ブロックを利用しない
      悪い例:

      java
      //{}内の記述が無い
      +if (s == null) {
      +}
    • if / while の条件式で = は利用しない
      良い例:

      java
      boolean a =//
      +if (!a) {
      +    //・・・
      +}

      悪い例:

      java
      boolean a =//
      +if (a = false) {//コーディングミス
      +    //・・・
      +}
      +
      +
      +boolean a =//
      +boolean b =//
      +if (a = b) {//おそらくコーディングミス
      +    //・・・
      +}
    • forwhile の使い分けを意識する

    • for 文を利用した繰り返し処理中でループ変数の値を変更しない
      悪い例:

      java
      String[] array = { /*・・・*/ };
      +for (int i = 0; i < array.length; i++) {
      +    //・・・
      +    i += 2;//NG
      +}
      +
      +for (String s : array) {
      +    //・・・
      +    s = "string";//NG
      +}
    • for 文のカウンタは特別な事情がない限り、0 から始める

    • 配列やリストなどの全要素に対するループ処理は拡張 for 文を使用する。
      良い例:

      java
      for (int value : array) {
      +    //・・・
      +}
      +
      +for (String value : list) {
      +    //・・・
      +}
    • 配列をコピーするときはArrays.copyOf()メソッドを利用する

      良い例:

      java
      int[] newArray = Arrays.copyOf(array, array.length);

      悪い例:

      java
      int[] newArray = new int[array.length];
      +System.arraycopy(array, 0, newArray, 0, array.length);
    • 繰り返し処理中のオブジェクトの生成は最小限にする

    • if 文と else 文の繰り返しや switch 文の利用はなるべく避け、オブジェクト指向の手法を利用する
      良い例:

      java
      CodingKind codingKind = toCodingKind(kind);
      +d = codingKind.encode(s);
      +
      +//---
      +
      +CodingKind codingKind = toCodingKind(kind);
      +s = codingKind.decode(d);

      悪い例:

      java
      switch (kind) {
      +case 1:
      +    d = encode1(s);
      +    break;
      +case 2:
      +    d = encode2(s);
      +    break;
      +default:
      +    break;
      +}
      +
      +//---
      +
      +switch (kind) {
      +case 1:
      +    s = decode1(d);
      +    break;
      +case 2:
      +    s = decode2(d);
      +    break;
      +default:
      +    break;
      +}
    • 繰り返し処理の内部で try ブロックを利用しない
      特に理由がない場合は繰り返し処理の外にtryブロックを記載する。
      ただし、繰り返し処理内部で例外をキャッチし処理を行いたい場合は繰り返し処理の内部でtryブロックを利用してもよい。

      良い例:

      java
      for (String s : array) {
      +    BigDecimal num;
      +    try {
      +        num = new BigDecimal(s);
      +    } catch (NumberFormatException e) {
      +        num = BigDecimal.ZERO;
      +    }
      +    //・・・
      +}

    文字列操作

    • 文字列同士が同じ値かを比較するときは、equals()メソッドを利用する
      良い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1.equals(s2)) {
      +    //・・・
      +}

      悪い例:

      java
      String s1 = "text";
      +String s2 = "text";
      +if (s1 == s2) {
      +    //・・・
      +}
    • 文字列リテラルはnew しない
      良い例:

      java
      String s = "";

      悪い例:

      java
      String s = new String();
    • 更新される文字列にはStringBuilder クラスを利用する
      良い例:

      java
      StringBuilder builder = new StringBuilder();
      +for (String s : array) {
      +    builder.append(s);
      +}
      +System.out.println(builder.toString());

      悪い例:

      java
      String string = "";
      +for (String s : array) {
      +    string += s;
      +}
      +System.out.println(string);

      スレッドセーフ性が保証されていない箇所では\`StringBuffer\`クラスを利用する

      ※パフォーマンスについても記載しているので参考にしてください

    • 更新されない文字列にはString クラスを利用する

    • 文字列リテラルと定数を比較するときは、文字列リテラルのequals()メソッドを利用する
      良い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (PROTOCOL_HTTP.equals(url.getProtocol())) {
      +
      +}

      悪い例:

      java
      private static final String PROTOCOL_HTTP = "http";
      +
      +if (url.getProtocol().equals(PROTOCOL_HTTP)) {
      +
      +}
    • プリミティブ型とString オブジェクトの変換には、変換用のメソッドを利用する
      良い例:

      java
      int i = 1000;
      +String s = String.valueOf(i);// "1000"
      +s = NumberFormat.getNumberInstance().format(i);// 3桁区切り "1,000"
      +
      +boolean b = true;
      +s = String.valueOf(b);// true/false
      +s = BooleanUtils.toStringOnOff(b);// on/off
    • 文字列の中に、ある文字が含まれているか調べるには、contains()メソッドを利用する

    • システム依存記号( \\n\\r など)は使用しない。
      悪い例:

      java
      String text = Arrays.stream(array)
      +    .collect(Collectors.joining("\\n"));

    数値

    • 誤差の無い計算をするときは、BigDecimal クラスを使う
      浮動小数点演算は科学技術計算に利用するもので、誤差が発生する。これに対して、クラス「BigDecimal」は、文字列で数値の計算を行うので、金額などの正確な計算に適している。BigDecimal ではインスタンス生成時に指定された桁数での精度が保証される。

    • 数値の比較は精度に気をつける
      良い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +if (a.compareTo(b) == 0) {
      +    System.out.println("一致");
      +}

      悪い例:

      java
      BigDecimal a = new BigDecimal("1");
      +BigDecimal b = new BigDecimal("1.0");
      +
      +if (a.equals(b)) {
      +    System.out.println("精度が違うためこの分岐には入らない");
      +}
    • 低精度なプリミティブ型にキャストしない

    • BigDecimalString変換する際はtoString()ではなくtoPlainString()を利用すること
      toString()を利用した場合、指数表記になることがあります。

    日付

    • 日付の文字列のフォーマットには、SimpleDateFormatまたはDateTimeFormatterを使う
      良い例:

      java
      Date date = new Date();
      +SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
      +String s = dateFormat.format(date);

    三項演算子

    • 入れ子の三項演算子の利用は禁止
      可読性が悪くなるので三項演算子を入れ子で行うのは禁止。

    コレクション

    • Java2 以降のコレクションクラスを利用する
      Vector クラス、Hashtable クラス、Enumeration 等は、特にこれらを利用する理由がなければ、インターフェースを統一する目的で、これらの代わりにList(ArrayList クラス)、Map(HashMap クラス)、Iterator を使用すること。List などのインターフェースを利用することで JDK1.2 で整理されたわかりやすいメソッドを利用でき、また、インターフェースの特性から呼び出し元を変更せずに実装クラスを変更することができる。

    • 特定の型のオブジェクトだけを受け入れるコレクションクラスを利用する

      良い例:

      java
      List<Map<String, String>> list = new ArrayList<>();
    • ListのソートはList.sort()を利用する
      Listクラスの要素をソートする際は Java8 で追加されたList.sort()を利用すること。
      Java 7 以前で利用されていたCollections.sort()は利用しないこと。

    • Collection.forEach()は利用しない。拡張 for 文の利用を検討する
      Java8 で追加されたメソッド。
      拡張 for 文を利用したほうが多くの場合でデバッグに有利であり、可読性においてもforEachの優位性は少ないため、forEachは原則利用しない。拡張 for 文を利用する。
      具体的には下記のメソッドを利用しないこと。

      • Collection#forEach
      • Set#forEach
      • List#forEach

      Map#forEachはこの限りではない

      良い例:

      java
      for (String s : Arrays.asList("A", "B")) {
      +    //処理
      +}

      悪い例:

      java
      Arrays.asList("A", "B").forEach(s -> {
      +    //処理
      +});

      ただし、メソッド参照で処理できる場合はforEachを利用する。
      (デバッグのデメリットがほとんどなく、他と比較して処理効率が良いため)

      良い例:

      java
      Arrays.asList("A", "B").forEach(this::process);

      悪い例:

      java
      for (String s : Arrays.asList("A", "B")) {
      +    this.process(s);
      +}

    ラムダ式・メソッド参照・コンストラクタ参照

    • ラムダ式が利用できる箇所はラムダ式を利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • ただし、メソッド参照・コンストラクタ参照が利用できる場合はメソッド参照・コンストラクタ参照を利用する

      良い例:

      java
      String::compareToIgnoreCase

      悪い例:

      java
      (s1, s2) -> s1.compareToIgnoreCase(s2)

      良い例:

      java
      BigDecimal::add

      悪い例:

      java
      (b1, b2) -> b1.add(b2)
    • ラムダ式記述の際、型宣言は省略記法で記述する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (String s1, String s2) -> s1 + "=" + s2
    • 原則ラムダ式内の行数は 1 行とする
      複数行で利用したい場合は、privateメソッドを作成しメソッド参照を利用する

      良い例:

      java
      this::getMax
      +
      +private int getMax(int i1, int i2) {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}

      悪い例:

      java
      (i1, i2) -> {
      +    if (i1 > i2) {
      +        return i1;
      +    } else {
      +        return i2;
      +    }
      +}
    • 原則ラムダ式は 1 行記述に限定するので、中カッコ、returnは必ず省略する

      良い例:

      java
      (s1, s2) -> s1 + "=" + s2

      悪い例:

      java
      (s1, s2) -> {
      +    return s1 + "=" + s2;
      +}

    実質的 final(effectively final)

    • 実質的 final を利用する
      変数宣言にfinalを記載しなくてよい。

    Stream API

    • 利用してよい
      ※パフォーマンスについても記載しているので参考にしてください

    • 並列ストリームは利用しないこと
      悪い例:

      java
      Stream<?> s = list.parallelStream();
      +Stream<?> s = list.stream().parallel();
    • StreamAPI 記述の際の改行位置は、各中間処理・末端処理前のピリオドの前で改行する

      良い例:

      java
      List<Character> alphabetLower = list.stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());

      悪い例:

      java
      List<Character> alphabetLower = list.stream().filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase).collect(Collectors.toList());
      +
      +List<Character> alphabetLower = list
      +    .stream()
      +    .filter(Character::isAlphabetic)
      +    .map(Character::toLowerCase)
      +    .collect(Collectors.toList());
    • インデントは統合開発環境の提供するフォーマッタに合わせる

    • 中間処理の数は 3 つ(3 行)程度までを推奨する
      中間処理の記述が多くなると可読性も悪くなり、デバッグも難しくなるため、3 行程度を目安にロジックを検討すること。

    • コメントは、原則として処理中には記載しない
      難解になってしまった場合のみ処理中の記載を認める

      良い例:

      java
      // クラスFooのフィールドStrの値で昇順にソートし、フィールドStrの要素を取得して処理する。
      +fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    .map(Foo::getStr)
      +    .forEach(this::proc);

      悪い例:

      java
      fooList.stream()
      +    .sorted(Comparator.comparing(Foo::getStr)) //クラスFooのフィールドStrの値で昇順にソート
      +    .map (Foo::getStr) //フィールドStrの要素を取得
      +    .forEach(this::proc); //処理
      +
      +
      +fooList.stream()
      +    //クラスFooのフィールドStrの値で昇順にソート
      +    .sorted(Comparator.comparing(Foo::getStr))
      +    //フィールドStrの要素を取得
      +    .map (Foo::getStr)
      +    //処理
      +    .forEach(this::proc);
    • Stream は極力変数代入しないこと
      Stream は中間処理、末端処理を行うと使用済みとなり、以降同じインスタンスは利用できない。
      変数代入はほとんどの場合意味をなさず、むしろミスの元となるため極力変数代入はしないこと。

      良い例:

      java
      List<String> list1 = Stream.of("A", "B", "C")
      +        .map(String::toLowerCase)
      +        .collect(Collectors.toList());
      +
      +List<String> list2 = Stream.of("A", "B", "C")
      +        .map(s -> s + s)
      +        .collect(Collectors.toList());

      悪い例:

      java
      Stream<String> stream = Stream.of("A", "B", "C");
      +Stream<String> stream1 = stream.map(String::toLowerCase);
      +List<String> list1 = stream1.collect(Collectors.toList());
      +
      +Stream<String> stream2 = stream.map(s -> s + s);//コーディングミス streamは使用済のためエラーになる
      +List<String> list2 = stream2.collect(Collectors.toList());

    Optional

    • Optional は同メソッド内で値を取り出す場合は極力変数代入しないこと
      Optional とその値の変数は同じものを示す名前となり、同じ意味の変数名が複数現れることで可読性が下がるため、Optional の変数代入は行わないこととする。

      良い例:

      java
      Employee employee = findEmployee(employeeId)
      +        .orElseThrow(IllegalArgumentException::new);

      悪い例:

      java
      Optional<Employee> employeeOpt = findEmployee(employeeId);
      +Employee employee = employeeOpt.orElseThrow(IllegalArgumentException::new);

      直接、値を取り出すことなくOptionalでのみ扱う場合はOptionalを変数代入してもよい。

      良い例:

      java
      Optional<Employee> employee = findEmployee(employeeId);
      +
      +Dept dept = employee.map(Employee::getDivision)
      +        .map(Division::getDept)
      +        .orElse(null);
      +
      +Role role = employee.map(Employee::getRole)
      +        .orElse(null);
      +
      +//-----
      +
      +Optional<Employee> employee = findEmployee(employeeId);
      +//・・・処理
      +return employee;

    ストリーム(InputStream OutputStream)

    • ストリームを扱う API を利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • ObjectOutputStream ではreset()を利用する

    リソースの解放

    • リソース解放を必要とするクラスを利用するときは、try-with-resources 文で後処理をする

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //inputStreamに対する処理を記載
      +}
    • リソース解放を必要とするクラスを作成する場合はAutoCloseableimplementsする
      AutoCloseableimplementsすることで try-with-resources 文が利用できるようになります。

    例外

    • catch 文で受け取る例外は、詳細な例外クラスで受け取る

      良い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (IOException e) {
      +    log.error("Error", e);
      +    throw e;
      +}

      悪い例:

      java
      try (InputStream inputStream = Files.newInputStream(Paths.get("foo.txt")) {
      +    //・・・
      +} catch (Exception e) {//範囲が広すぎる例外クラスの利用はNG
      +    log.error("Error", e);
      +    throw e;
      +}
    • Exception クラスのオブジェクトを生成してスローしない

    • catch ブロックでは基本、例外処理をする。ただし処理を書いてはいけない部分もあるので、その部分については、"// ignore" というコメントを記述すること。

    • 例外クラスは無駄に定義しない

    ガベージコレクション

    • 原則finalize()のオーバーライド実装は禁止
    • もしfinalize()をオーバーライドした場合はsuper.finalize() を呼び出す
    • アプリケーションからfinalize()を呼び出さない

    コメント規約

    よいコメントの鉄則

    • コードを明確化するコメントを書く
      コードにコメントを書く理由は、自分自身、一緒に仕事をしている人、後に関わる開発者にとってコードをより理解しやすいものにするためである。

    • コメント化する価値がないプログラムならば、実行するに値しない
      有用な格言。コメントは必須。

    • 過剰な装飾は使わない (例:見出し状のコメント)
      1960 年代から 1970 年代の典型的な COBOL プログラマにはアスタリスク( * )でコメントを囲った箱を書く習慣があった。彼らの芸術的な主張を表わしているのかもしれないが、率直に言えばそれは製品に加わるちょっとした価値に比べれば大きな時間の無駄である。かわいいコードではなくきれいなコードを書くはずである。さらに、コードを表示するディスプレイや印刷するプリントに使われるフォントはプロポーショナルだったりそうでなかったりして、箱をきれいに整列させることは難しい。

    • コメントはシンプルに
      かつて見たもっとも最良のコメントは、シンプルな要点をまとめた注釈であった。なにも本を書く必要はなく、他の人がコードを理解するに十分な情報を提供するだけでよいのである。

    • コードを書く前に先にコメントを記述する
      コードをコメント化する最良の方法は、コードを書く前にコメントを書くことである。それが、コードを書く前にコードがどのように動作するかについて考えるよい機会となり、コメントの存在を保障することにもつながる。少なくともコードを書いた時にコメントすべきである。コメントによってコードが理解しやすくなることで、コードの開発中にアドバンテージを得ることができる。コードにコメントを書く時間を費やせば、それによって得られるものがある。

    • コメントには、なぜそうなのかを書く。コードを読めば分かることを書かない
      基本的に、コードの一部分を見ればそれが何かを理解することはできる。例えば、以下のコードを見て、$1000 以上の注文については 5%ディスカウントされることは理解できる。なぜそうなのか?大きな注文ではディスカウントがつきものだというビジネスルールがあるのだろうか?大きな注文に時間限定サービスがあるのか、それともずっとサービスがあるのか?これを書いたプログラマの気前がよかったのか?
      どこかソースコード中か別な文書にコメントされていない限り、それがなぜなのかを知ることはできない。

      java
      if (grandTotal >= 1000.00) {
      +    grandTotal = grandTotal * 0.95;
      +}

      なお、メソッドコメントには、適切な javadoc コメント(タグ)のほかに、以下の内容も可能な限り明記すること。

      • 副作用のある処理の場合は、その内容 (→ メソッドの引数オブジェクトがメソッド内で変更されるケースなど)
      • 既知のバグ (→ 判明しているが修正しないことにした場合など)
      • 影響のある事前条件、事後条件 (→ メソッドが正しく動作するための前提について)
      • 並行性 (→  マルチスレッドでアクセスされた場合の動作について)
      • 該当メソッドの使用例やサンプルコード
    • TODO コメント
      設計者確認待ち、共通処理の作成待ちなどの理由により、実装時に TODO がある場合、下記のようにコメントを記述する。
      (Eclipse の TODO コメント形式を採用)
      例)

      //TODO:ワークフローの仕様決定待ち 関連チケット#12345

    Java コメント(3 種類)の使い分け

    Java では 3 種類のコメントが使える。javadoc コメントは/**で開始され、*/で終わる。C 風コメントは/*で開始され*/で終わる。単一行コメントは//で開始され、そのソースコード行が終わるまで続く。以下の表ではコメントの使い方とその例を示す。(コメントのスタイルに関しては、前述の「標準規約に準拠したコーディング例」を参照)

    コメント種類使用方法
    javadoc コメント
    /** comment */
    interface、class、メソッド、フィールドの直前に書く。コメントは javadoc によって処理され、外部ドキュメント(HTML)として生成される。(この形式以外のコメントはドキュメントとして出力されないことに注意)/*_
    _ 顧客(Customer)-
    _ 顧客はわれわれがサービスまたは製品を売った人物
    _ もしくは組織のいずれかである。
    _ @author 開発太郎
    _/
    C 風コメント
    /* comment */
    特定のコードを無効化したいが、後で使用するかもしれないので残しておくためにコメント化する時や、デバッグ時に一時的に無効化するときに使用する。/_
    このコードは J.T.Kirk によって 1997.12.9 に前述のコードと置き換えたためコメント化した。2 年間不要であるならば削除せよ。
    ... (ソースコード)
    _/
    単一行コメント
    // comment
    メソッド内にて、ビジネスロジック、コードの概要、一時変数の定義内容などを記述する。// 1995 年 2 月に開始された X 氏の寛大なキャンペーンで
    // 定められた通り 1000$を超える請求には、全て 5%割引を
    // 適用する。

    ※ ロジック中に、頻繁に C 風コメントでコメントを書くとまとめてコメントアウトする場合に不便なため、基本的にロジック中では単一行コメントを利用すること。

    パフォーマンス

    パフォーマンスを考慮した Java のコーディングについて以下に示す。

    ※ パフォーマンスは jre のバージョンやスペックによって変化します。本内容は jre1.8.0_74 での検証結果を元にした内容です。

    ※ 性能計測結果についての記載がありますが、あくまでも参考値です。性能を保証するものではありません。

    Stream API

    Java8 で追加された Stream API での記述は、可読性も高く、簡潔に書けますが、パフォーマンス・性能面で注意が必要な場合があります。

    List の処理を行う際、拡張 for 文で処理する場合は Iterator インスタンスが 1 つだけ生成されますが、Stream API で処理する場合、最初の Stream インスタンスに加え、各中間処理ごとにも Stream インスタンスが生成され、その分の性能劣化が懸念されます。
    以下に処理例と計測結果を記載します。

    • 拡張 for 文

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = new ArrayList<>();
      +for (String string : list) {
      +    if (string.endsWith("0")) {
      +        resultList.add(string);
      +    }
      +}
      +return resultList;
    • Stream API

      java
      List<String> list = //数値文字列のList
      +List<String> resultList = list.stream()
      +    .filter(s -> s.endsWith("0"))
      +    .collect(Collectors.toList());
      +return resultList;
    • 計測結果

      処理する List の件数拡張 for 文 (ms)StreamAPI (ms)
      100 万件79
      1,000 万件88114
      1 億件9491,026
      2 億件1,8222,081

    小中規模の処理量であれば考慮するほどの性能差はありませんが、大量の処理が見込まれる場合は考慮が必要です。
    また、Stream API は並列処理(スレッド処理)の機能をサポートしていますので、利用できる場合は並列処理も含めての検証が必要です。

    ラムダ式・メソッド参照・コンストラクタ参照

    Java8 で追加されたラムダ式・メソッド参照・コンストラクタ参照は、匿名クラスを利用するよりも効率的です。
    積極的な利用を推奨します。

    以下に Comparator を生成した場合の計測結果を記載します。

    • 匿名クラス

      java
      Comparator<String> c = new Comparator<String>() {
      +    @Override
      +    public int compare(String o1, String o2) {
      +        return o1.compareToIgnoreCase(o2);
      +    }
      +};
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> o1.compareToIgnoreCase(o2);
    • メソッド参照

      java
      Comparator<String> c = String::compareToIgnoreCase;
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)メソッド参照 (ms)
      10 億回3800(計測不能)0(計測不能)
      100 億回6,3740(計測不能)0(計測不能)
      1 京回(30 秒以上)1410

    ラムダ式は外部の変数を利用する場合、匿名クラスとほぼ同じ動作をします。

    • 匿名クラス

      java
      new Comparator<String>() {
      +        @Override
      +        public int compare(String o1, String o2) {
      +            return arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                            : o1.compareToIgnoreCase(o2);
      +        }
      +    }
    • ラムダ式

      java
      Comparator<String> c = (o1, o2) -> arg.equals("DESC") ? o2.compareToIgnoreCase(o1)
      +                                    : o1.compareToIgnoreCase(o2);
    • 計測結果

      処理件数匿名クラス (ms)ラムダ式 (ms)
      10 億回(パラメータあり)571572
      100 億回(パラメータあり)9,9009,864

    文字列連結

    文字列連結(繰り返し)

    文字列連結を繰り返し処理中で行う際、+演算子で処理することはアンチパターンとして知られています。
    繰り返し処理中の文字列連結は、 StringBuilderStringJoinerStringBuffer を利用します。
    また、コレクション要素の結合であればString#joinが利用できます。

    以下に処理例と計測結果を記載します。

    • +演算子

      java
      String s = "";
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        s += ",";
      +    }
      +    s += string;
      +}
      +return s;
    • StringBuilder

      java
      StringBuilder sb = new StringBuilder();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • StringBuffer

      java
      StringBuffer sb = new StringBuffer();
      +for (int i = 0; i < list.size(); i++) {
      +    String string = list.get(i);
      +    if (i > 0) {
      +        sb.append(",");
      +    }
      +    sb.append(string);
      +}
      +return sb.toString();
    • String#join

      java
      return String.join(",", list);
    • 計測結果

      処理する List の件数+演算子 (ms)StringBuilder (ms)StringBuffer (ms)String#join (ms)
      1,000 件50(計測不能)0(計測不能)0(計測不能)
      1 万件1,016111
      10 万件(30 秒以上)255
      100 万件(30 秒以上)294251

    文字列連結(定数)

    基本的に処理中の文字列連結では+演算子は使わないで処理するほうがパフォーマンスが高くなりますが、定数の場合は+演算子で定義するほうがパフォーマンスが高いです。

    たとえば以下のように、処理したい場合、

    java
    private static final String CONST_A = "A";
    +private static final String CONST_B = "B";
    +private static final String CONST_AB = CONST_A + CONST_B;

    StringBuilder で処理しようとすると以下のようになります。

    java
    private static final String CONST_AB = new StringBuilder(CONST_A).append(CONST_B).toString();

    しかし、これらをバイトコード上で確認するとそれぞれ以下のようになります。

    • +演算子

      java
      private static final java.lang.String CONST_AB = "AB";
    • StringBuilder

      java
      private static final java.lang.String CONST_AB;
      +
      +static {};
      +   0  new java.lang.StringBuilder [20]
      +   3  dup
      +   4  ldc <String "A"> [8]
      +   6  invokespecial java.lang.StringBuilder(java.lang.String) [22]
      +   9  ldc <String "B"> [11]
      +  11  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [26]
      +  14  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [30]
      +  17  putstatic jp.co.packagename.ClassName.CONST_AB : java.lang.String [34]
      +  20  return

    +演算子を利用した場合コンパイル時に最適化され、文字列"A""B"をあらかじめ結合して class が作成されます。
    StringBuilderを利用した場合は最適化はされず、記述した通りの処理が行われます。

    計測した場合、下記のようになります。

    • 計測結果

      処理回数StringBuilder (ms)+演算子 (ms)
      5,000 万回5590(計測不能)
      1 億回1,0590(計測不能)

    通常、定数処理を大量に処理することは考えられないので性能問題になることはありませんが、+演算子を利用したほうがパフォーマンスが高いこともあるということを理解してください。

    List の種類

    ListにはArrayListのようなRandomAccessを implements した、ランダムアクセスをサポートしているクラスと、
    LinkedListのようなランダムアクセスをサポートしていない(シーケンシャルアクセス)クラスが存在します。
    RandomAccessではないListは、List#getなどインデックスを利用するような操作のパフォーマンスが低いので注意してください。

    以下に処理例と計測結果を記載します。

    • for 文(List#get(int)によるループ)

      java
      int size = list.size();
      +for (int i = 0; i < size; i++) {
      +    String s = list.get(i);
      +    //処理
      +}
    • 拡張 for 文

      java
      for (String s : list) {
      +    //処理
      +}
    • forEach

      java
      list.forEach(this::処理);
    • 計測結果

      処理する List の件数ArrayList
      for 文(List#get(int)によるループ) (ms)
      LinkedList
      for 文(List#get(int)によるループ) (ms)
      ArrayList
      拡張 for 文 (ms)
      LinkedList
      拡張 for 文 (ms)
      ArrayList
      forEach (ms)
      LinkedList
      forEach (ms)
      1 万件0(計測不能)730(計測不能)0(計測不能)0(計測不能)0(計測不能)
      10 万件0(計測不能)7,5760(計測不能)0(計測不能)12
      20 万件0(計測不能)17,7400(計測不能)0(計測不能)0(計測不能)0(計測不能)
      50 万件0(計測不能)(30 秒以上)0(計測不能)20(計測不能)2
      100 万件1(30 秒以上)0(計測不能)40(計測不能)4
      1,000 万件16(30 秒以上)845644

    ランダムアクセスをサポートしているListがシーケンシャルアクセス(iterator を利用した処理など)で遅いということはないので、
    ループの処理は拡張 for 文等、Iterator によるループで記述するのが無難です。
    List#getでの処理をすべて禁止することはできませんが、高いパフォーマンスが求められる場合はListの種類にも注目してみてください。

    String から Integer・Long への変換

    数値文字列のStringIntegerに変換するには、Integer#valueOf(String)を利用して下記のように記述します。

    java
    String s = "1";
    +Integer value = Integer.valueOf(s);

    しかし、下記のようにも記述できます。

    java
    String s = "1";
    +Integer value = new Integer(s);

    これらの違いは、
    new Integer(s)とした場合、必ず Integer インスタンスが生成されますが、
    Integer.valueOf(s)とした場合は -128 から 127 の間の数値であればキャッシュから取り出すためインスタンスを生成しません。

    このため、前者のInteger#valueOf(String)を利用した記述のほうが効率的です。
    Long#valueOf(String)も同様です。

    性能差が少ないため、ほとんど問題にはなりませんが、FindBugs 等、静的解析で検出される問題のため、理解が必要です。

    また、String からの変換だけでなく、int や long からの変換も#valueOfが効率的ですが、オートボクシングを利用した場合、コンパイルで自動的にこれらの処理に変換されるため、記述することはありません。

    String から int・long への変換

    数値文字列のStringintに変換するには、Integer#parseInt(String)を利用して下記のように記述します。

    java
    String s = "1";
    +int value = Integer.parseInt(s);

    しかし、オートボクシングが利用できるため、意図せず下記のように記述ミスをする場合があります。

    java
    String s = "1";
    +int value = Integer.valueOf(s);//取得したIntegerインスタンスをオートボクシングでintにcastしている
    java
    String s = "1";
    +int value = new Integer(s);//生成したIntegerインスタンスをオートボクシングでintにcastしている

    「オートボクシング」の説明に記載した通り、性能に差が出るだけでなく、
    記述から明らかにミスであることが解るため、FindBugs 等、静的解析で検出されるコードです。

    longへの変換の場合はLong#parseLong(String)を利用します

    以下に計測結果を記載します。

    • 計測結果

      処理回数Integer.valueOf(String) (ms)Integer#parseInt(String) (ms)
      1,000 万回396318
      1 億回4,0603,077

    BigDecimal の ZERO との比較

    BigDecimal の正・負・ZERO の判定はBigDecimal#signumを利用します。
    compareToを利用してBigDecimal.ZEROと比較しても同じことができますが、signumを利用したほうが効率的です。

    以下に処理例と計測結果を記載します。

    • compareTo 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.compareTo(BigDecimal.ZERO) == 0) {
    • signum 利用

      java
      BigDecimal value = new BigDecimal("0.0");
      +if (value.signum() == 0) {
    • 計測結果

      (単位:マイクロ秒)

      処理回数compareTo 利用 (マイクロ秒)signum 利用 (マイクロ秒)
      1 京回527
      max:26,367
      min:0
      424
      max:21,213
      min:0

    性能差が少ないので、必ずしも signum を利用する必要はありませんが、大量に処理する場合など、高いパフォーマンスが求められる場合は意識してください。


    License

    CC-By-4.0

    `,175))])}const b=a(h,[["render",k]]);export{y as __pageData,b as default}; diff --git a/assets/documents_forJava_index.md.BLl0-jdn.js b/assets/documents_forJava_index.md.BLl0-jdn.js new file mode 100644 index 00000000..d804c9f1 --- /dev/null +++ b/assets/documents_forJava_index.md.BLl0-jdn.js @@ -0,0 +1 @@ +import{_ as r,c as e,a3 as t,o}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"Java Coding Standards","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Javaコーディング規約","tagline":"Future Enterprise Coding Standards for Java","image":{"src":"/images/JBee.png","alt":"Logo"},"actions":[{"theme":"brand","text":"Javaコーディング規約","link":"./Javaコーディング規約.md"}]}},"headers":[],"relativePath":"documents/forJava/index.md","filePath":"documents/forJava/index.md"}'),l={name:"documents/forJava/index.md"};function i(s,a,n,d,c,h){return o(),e("div",null,a[0]||(a[0]=[t('

    一般的に行われているコーディング規約から、Stream API やラムダ式、最新の Java17 で追加された構文にも対応しています。

    Java Coding Standards

    Old Versions

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。
    (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',10)]))}const E=r(l,[["render",i]]);export{f as __pageData,E as default}; diff --git a/assets/documents_forJava_index.md.BLl0-jdn.lean.js b/assets/documents_forJava_index.md.BLl0-jdn.lean.js new file mode 100644 index 00000000..d804c9f1 --- /dev/null +++ b/assets/documents_forJava_index.md.BLl0-jdn.lean.js @@ -0,0 +1 @@ +import{_ as r,c as e,a3 as t,o}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"Java Coding Standards","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Javaコーディング規約","tagline":"Future Enterprise Coding Standards for Java","image":{"src":"/images/JBee.png","alt":"Logo"},"actions":[{"theme":"brand","text":"Javaコーディング規約","link":"./Javaコーディング規約.md"}]}},"headers":[],"relativePath":"documents/forJava/index.md","filePath":"documents/forJava/index.md"}'),l={name:"documents/forJava/index.md"};function i(s,a,n,d,c,h){return o(),e("div",null,a[0]||(a[0]=[t('

    一般的に行われているコーディング規約から、Stream API やラムダ式、最新の Java17 で追加された構文にも対応しています。

    Java Coding Standards

    Old Versions

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。
    (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',10)]))}const E=r(l,[["render",i]]);export{f as __pageData,E as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.js" new file mode 100644 index 00000000..5e8c8024 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.js" @@ -0,0 +1 @@ +import{_ as e,c as d,j as t,a as r,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const b=JSON.parse('{"title":"[UIM01] ログイン","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md"};function h(n,a,s,u,c,m){return i(),d("div",null,a[0]||(a[0]=[t("h1",{id:"uim01-ログイン",tabindex:"-1"},[r("[UIM01] ログイン "),t("a",{class:"header-anchor",href:"#uim01-ログイン","aria-label":'Permalink to "[UIM01] ログイン"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-5&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • ログインや会員登録導線を提供する

    機能概要:

    • ログイン処理
    • 会員登録への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2ログインするボタン押下
    3会員登録ボタン押下

    イベント詳細

    1. 初期表示

    モーダルを起動。初期パラメータは無し。

    2. ログインする

    利用API:

    IDURLParameter
    API001POST /login入力フォームの値を取得

    画面表示制御:

    • HTTPステータスが400系
      • 「IDまたはパスワードが異なります」を表示
    • HTTPステータスが500系
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200

    3. 会員登録

    ...

    ',17)]))}const _=e(o,[["render",h]]);export{b as __pageData,_ as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.lean.js" new file mode 100644 index 00000000..5e8c8024 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM01_index.md.CkNMWidb.lean.js" @@ -0,0 +1 @@ +import{_ as e,c as d,j as t,a as r,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const b=JSON.parse('{"title":"[UIM01] ログイン","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM01/index.md"};function h(n,a,s,u,c,m){return i(),d("div",null,a[0]||(a[0]=[t("h1",{id:"uim01-ログイン",tabindex:"-1"},[r("[UIM01] ログイン "),t("a",{class:"header-anchor",href:"#uim01-ログイン","aria-label":'Permalink to "[UIM01] ログイン"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-5&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • ログインや会員登録導線を提供する

    機能概要:

    • ログイン処理
    • 会員登録への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2ログインするボタン押下
    3会員登録ボタン押下

    イベント詳細

    1. 初期表示

    モーダルを起動。初期パラメータは無し。

    2. ログインする

    利用API:

    IDURLParameter
    API001POST /login入力フォームの値を取得

    画面表示制御:

    • HTTPステータスが400系
      • 「IDまたはパスワードが異なります」を表示
    • HTTPステータスが500系
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200

    3. 会員登録

    ...

    ',17)]))}const _=e(o,[["render",h]]);export{b as __pageData,_ as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.js" new file mode 100644 index 00000000..1ea3b00e --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.js" @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as l,a3 as d,o as i}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"[UIM02] トレーナー検索","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md"};function n(h,e,s,u,c,m){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uim02-トレーナー検索",tabindex:"-1"},[l("[UIM02] トレーナー検索 "),t("a",{class:"header-anchor",href:"#uim02-トレーナー検索","aria-label":'Permalink to "[UIM02] トレーナー検索"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=233-907&embed-host=share",allowfullscreen:""},null,-1),d('

    概要

    機能目的:

    • パーソナルトレーナーを検索する

    機能概要:

    • 行きつけのジムの絞り込み
    • 店舗名の検索
    • トレーニング時間/予算の絞り込み
    • トレーニングコースの絞り込み

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2検索ボタン押下

    イベント詳細

    1. 初期表示

    モーダルを起動。初期パラメータは無し。

    2. 検索

    利用API:

    IDURLParameter
    API007GET /trainersモーダルに指定された値をクエリパラメータに設定する

    画面表示制御:

    • 入力チェック
      • favorite_gym_name, store_nameが未設定の場合は、フロントエンド側でチェックし「行きつけのジム名・店舗名は必須項目です」と表示する
    • 応答が0件の場合
      • 「条件に一致するコーチは存在しませんでした」と表示する
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
    ',15)]))}const b=a(o,[["render",n]]);export{p as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.lean.js" new file mode 100644 index 00000000..1ea3b00e --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM02_index.md.9UdZUB06.lean.js" @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as l,a3 as d,o as i}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"[UIM02] トレーナー検索","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM02/index.md"};function n(h,e,s,u,c,m){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uim02-トレーナー検索",tabindex:"-1"},[l("[UIM02] トレーナー検索 "),t("a",{class:"header-anchor",href:"#uim02-トレーナー検索","aria-label":'Permalink to "[UIM02] トレーナー検索"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=233-907&embed-host=share",allowfullscreen:""},null,-1),d('

    概要

    機能目的:

    • パーソナルトレーナーを検索する

    機能概要:

    • 行きつけのジムの絞り込み
    • 店舗名の検索
    • トレーニング時間/予算の絞り込み
    • トレーニングコースの絞り込み

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2検索ボタン押下

    イベント詳細

    1. 初期表示

    モーダルを起動。初期パラメータは無し。

    2. 検索

    利用API:

    IDURLParameter
    API007GET /trainersモーダルに指定された値をクエリパラメータに設定する

    画面表示制御:

    • 入力チェック
      • favorite_gym_name, store_nameが未設定の場合は、フロントエンド側でチェックし「行きつけのジム名・店舗名は必須項目です」と表示する
    • 応答が0件の場合
      • 「条件に一致するコーチは存在しませんでした」と表示する
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
    ',15)]))}const b=a(o,[["render",n]]);export{p as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.js" new file mode 100644 index 00000000..531cacaf --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.js" @@ -0,0 +1 @@ +import{_ as l,c as d,j as t,a as r,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const b=JSON.parse('{"title":"[UIM03] カレンダー予約","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md"};function o(u,e,h,s,c,_){return i(),d("div",null,e[0]||(e[0]=[t("h1",{id:"uim03-カレンダー予約",tabindex:"-1"},[r("[UIM03] カレンダー予約 "),t("a",{class:"header-anchor",href:"#uim03-カレンダー予約","aria-label":'Permalink to "[UIM03] カレンダー予約"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=115-295&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニーやパーソナルトレーナの空き時間を表示し、予約を行えるようにする

    機能概要:

    • 本日以降の週間カレンダーを表示する
    • すでに予約済みの時間がわかるようにする

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示指定されたトレーナーと、ログイン中のトレーニーのスケジュールを表示
    2日時設定カレンダーを選択ドラッグ&ドロップで範囲指定
    3日時指定設定された日時で予約を指定する

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")]),t("tr",null,[t("td",null,"trainee_id"),t("td",{"trainee_id:<trainee_id":""}),t("td")])])],-1),t("p",null,"利用API:",-1),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"URL"),t("th",null,"Parameter")])]),t("tbody",null,[t("tr",null,[t("td",null,"API011"),t("td",null,"GET /trainers/{trainer_id}/schedule"),t("td",null,"初期パラメータを設定")]),t("tr",null,[t("td",null,"API013"),t("td",{trainee_id:""},"GET /bookings/"),t("td",null,"初期パラメータを設定")])])],-1),a('

    画面表示制御:

    • API011
      • 0件の場合は何もしない
      • 1件以上存在した場合は、カレンダーには「ブロック」と表示する
    • API026
      • 0件の場合は何もしない
      • 1件以上存在した場合は、カレンダーに「予約あり」と表示する

    2. 日時設定

    選択された日付がカレンダーに追加される。

    3. 日時指定

    UIM04 を起動する。

    ',6)]))}const p=l(n,[["render",o]]);export{b as __pageData,p as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.lean.js" new file mode 100644 index 00000000..531cacaf --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM03_index.md.CGpQSTSf.lean.js" @@ -0,0 +1 @@ +import{_ as l,c as d,j as t,a as r,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const b=JSON.parse('{"title":"[UIM03] カレンダー予約","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM03/index.md"};function o(u,e,h,s,c,_){return i(),d("div",null,e[0]||(e[0]=[t("h1",{id:"uim03-カレンダー予約",tabindex:"-1"},[r("[UIM03] カレンダー予約 "),t("a",{class:"header-anchor",href:"#uim03-カレンダー予約","aria-label":'Permalink to "[UIM03] カレンダー予約"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=115-295&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニーやパーソナルトレーナの空き時間を表示し、予約を行えるようにする

    機能概要:

    • 本日以降の週間カレンダーを表示する
    • すでに予約済みの時間がわかるようにする

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示指定されたトレーナーと、ログイン中のトレーニーのスケジュールを表示
    2日時設定カレンダーを選択ドラッグ&ドロップで範囲指定
    3日時指定設定された日時で予約を指定する

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")]),t("tr",null,[t("td",null,"trainee_id"),t("td",{"trainee_id:<trainee_id":""}),t("td")])])],-1),t("p",null,"利用API:",-1),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"URL"),t("th",null,"Parameter")])]),t("tbody",null,[t("tr",null,[t("td",null,"API011"),t("td",null,"GET /trainers/{trainer_id}/schedule"),t("td",null,"初期パラメータを設定")]),t("tr",null,[t("td",null,"API013"),t("td",{trainee_id:""},"GET /bookings/"),t("td",null,"初期パラメータを設定")])])],-1),a('

    画面表示制御:

    • API011
      • 0件の場合は何もしない
      • 1件以上存在した場合は、カレンダーには「ブロック」と表示する
    • API026
      • 0件の場合は何もしない
      • 1件以上存在した場合は、カレンダーに「予約あり」と表示する

    2. 日時設定

    選択された日付がカレンダーに追加される。

    3. 日時指定

    UIM04 を起動する。

    ',6)]))}const p=l(n,[["render",o]]);export{b as __pageData,p as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.js" new file mode 100644 index 00000000..17b34eb6 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.js" @@ -0,0 +1 @@ +import{_ as d,c as r,j as t,a as l,a3 as a,o as n}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIM04] 決済","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md"}'),i={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md"};function o(h,e,u,s,c,m){return n(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uim04-決済",tabindex:"-1"},[l("[UIM04] 決済 "),t("a",{class:"header-anchor",href:"#uim04-決済","aria-label":'Permalink to "[UIM04] 決済"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=249-925&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニング予約内容を表示し、決済によって確定する

    機能概要:

    • トレーニングのコース/日時/料金を表示
    • クレジット決済に必要な項目の入力
    • 決済の確定

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2日時指定に戻るボタン押下UIM003に遷移
    2決済するボタン押下

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")]),t("tr",null,[t("td",null,"menu_id"),t("td",{"menu_id:<menu_id":""}),t("td")])])],-1),a('

    利用API:

    IDURLParameter
    APIxxxトレーニングメニュー取得初期パラメータを設定

    2. 日時指定に戻る

    UIM03に遷移

    3. 決済

    ...

    ',6)]))}const p=d(i,[["render",o]]);export{_ as __pageData,p as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.lean.js" new file mode 100644 index 00000000..17b34eb6 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIM04_index.md.Dz300Y5z.lean.js" @@ -0,0 +1 @@ +import{_ as d,c as r,j as t,a as l,a3 as a,o as n}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIM04] 決済","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md"}'),i={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIM04/index.md"};function o(h,e,u,s,c,m){return n(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uim04-決済",tabindex:"-1"},[l("[UIM04] 決済 "),t("a",{class:"header-anchor",href:"#uim04-決済","aria-label":'Permalink to "[UIM04] 決済"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=249-925&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニング予約内容を表示し、決済によって確定する

    機能概要:

    • トレーニングのコース/日時/料金を表示
    • クレジット決済に必要な項目の入力
    • 決済の確定

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示
    2日時指定に戻るボタン押下UIM003に遷移
    2決済するボタン押下

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")]),t("tr",null,[t("td",null,"menu_id"),t("td",{"menu_id:<menu_id":""}),t("td")])])],-1),a('

    利用API:

    IDURLParameter
    APIxxxトレーニングメニュー取得初期パラメータを設定

    2. 日時指定に戻る

    UIM03に遷移

    3. 決済

    ...

    ',6)]))}const p=d(i,[["render",o]]);export{_ as __pageData,p as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.js" new file mode 100644 index 00000000..075cd507 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.js" @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as d,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS01] トップページ","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md"};function u(o,e,h,s,c,p){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uis01-トップページ",tabindex:"-1"},[d("[UIS01] トップページ "),t("a",{class:"header-anchor",href:"#uis01-トップページ","aria-label":'Permalink to "[UIS01] トップページ"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=1-2&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • トップページ

    機能概要:

    • ログインへの導線
    • パーソナルトレーナーの検索への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示ログイン済みである場合、「会員登録/ログイン」が「マイページ」に変わる
    2トレーナーを探すボタン押下パーソナルトレーナー検索モーダル起動
    3会員登録/ログインボタン押下ログインモーダル起動

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"userState"),t("td",{"user_id:<user_id":""}),t("td",null,"ログイン状態")])])],-1),t("p",null,"初期表示イベント:",-1),t("ul",null,[t("li",null,"ログイン済み判定")],-1),t("p",null,"利用API:",-1),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"URL"),t("th",null,"Parameter")])]),t("tbody",null,[t("tr",null,[t("td",null,"API-005"),t("td",{trainee_id:""},"GET /profile/"),t("td",null,"trainee_id=userState.user_id")])])],-1),l('

    画面表示制御:

    • HTTPステータスが500系
      • 何もしない(無視で良い)、初期表示のまま
    • HTTPステータスが400系
      • 未ログインとして、初期表示のまま
    • HTTPステータスが200
      • すでにログイン中と判断し、(画面表示制御1)へ

    画面表示制御1:

    • 「会員登録/ログイン」表示を、サムネイル画像(thumbnail_url)に書き換える

    2. トレーナーを探す

    UIM002 呼び出し

    3. 会員登録/ログイン

    UIM001 呼び出し

    ',8)]))}const b=a(n,[["render",u]]);export{_ as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.lean.js" new file mode 100644 index 00000000..075cd507 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS01_index.md.BClx-h5K.lean.js" @@ -0,0 +1 @@ +import{_ as a,c as r,j as t,a as d,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS01] トップページ","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS01/index.md"};function u(o,e,h,s,c,p){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uis01-トップページ",tabindex:"-1"},[d("[UIS01] トップページ "),t("a",{class:"header-anchor",href:"#uis01-トップページ","aria-label":'Permalink to "[UIS01] トップページ"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=1-2&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • トップページ

    機能概要:

    • ログインへの導線
    • パーソナルトレーナーの検索への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示ログイン済みである場合、「会員登録/ログイン」が「マイページ」に変わる
    2トレーナーを探すボタン押下パーソナルトレーナー検索モーダル起動
    3会員登録/ログインボタン押下ログインモーダル起動

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"userState"),t("td",{"user_id:<user_id":""}),t("td",null,"ログイン状態")])])],-1),t("p",null,"初期表示イベント:",-1),t("ul",null,[t("li",null,"ログイン済み判定")],-1),t("p",null,"利用API:",-1),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"ID"),t("th",null,"URL"),t("th",null,"Parameter")])]),t("tbody",null,[t("tr",null,[t("td",null,"API-005"),t("td",{trainee_id:""},"GET /profile/"),t("td",null,"trainee_id=userState.user_id")])])],-1),l('

    画面表示制御:

    • HTTPステータスが500系
      • 何もしない(無視で良い)、初期表示のまま
    • HTTPステータスが400系
      • 未ログインとして、初期表示のまま
    • HTTPステータスが200
      • すでにログイン中と判断し、(画面表示制御1)へ

    画面表示制御1:

    • 「会員登録/ログイン」表示を、サムネイル画像(thumbnail_url)に書き換える

    2. トレーナーを探す

    UIM002 呼び出し

    3. 会員登録/ログイン

    UIM001 呼び出し

    ',8)]))}const b=a(n,[["render",u]]);export{_ as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.js" new file mode 100644 index 00000000..5a1bc0db --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.js" @@ -0,0 +1 @@ +import{_ as d,c as r,j as l,a as t,a3 as a,o as u}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"[UIS02] マイページ","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md"};function i(o,e,h,s,c,_){return u(),r("div",null,e[0]||(e[0]=[l("h1",{id:"uis02-マイページ",tabindex:"-1"},[t("[UIS02] マイページ "),l("a",{class:"header-anchor",href:"#uis02-マイページ","aria-label":'Permalink to "[UIS02] マイページ"'},"​")],-1),l("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-2&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニーのマイページを表示し、受講予定・受講済みのトレーニング一覧を表示する

    機能概要:

    • 受講状況の表示
    • パーソナルトレーナーの検索への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示初期検索条件に従いAPIを実行し、履歴表示する
    2トレーナーを探すボタン押下パーソナルトレーナー検索モーダル起動
    3受講完了確認ボタン押下予約済みトレーニングを受講完了に切り替えるためのモーダル起動
    4受講完了ボタン押下予約済みトレーニングを完了済みのトレーニングに更新

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Value"),l("th",null,"Memo")])]),l("tbody",null,[l("tr",null,[l("td",null,"userState"),l("td",{"user_id:<user_id":""}),l("td",null,"ログイン状態")])])],-1),l("p",null,"初期表示イベント:",-1),l("ul",null,[l("li",null,"マイページ表示")],-1),l("p",null,"利用API:",-1),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API-005"),l("td",{trainee_id:""},"GET /profile/"),l("td",null,"trainee_id=userState.user_id")])])],-1),l("p",null,"画面表示制御:",-1),l("ul",null,[l("li",null,[t("HTTPステータスが500系 "),l("ul",null,[l("li",null,"メッセージID(MSG_BIZ_111)表示")])]),l("li",null,[t("HTTPステータスが400系 "),l("ul",null,[l("li",null,"トップページにリダイレクト")])])],-1),l("p",null,"利用API:",-1),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API013"),l("td",{trainee_id:""},"GET /bookings/"),l("td",null,"trainee_id=userState.user_id")])])],-1),a('

    画面表示制御:

    • 起動条件
      • API016が有効な場合
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示

    2. トレーナーを探す

    UIM002 を起動。

    3. 受講完了確認

    ${トレーニングメニュー} は完了しましたか?」ダイアログを表示する。

    キャンセルの場合は閉じる。

    4. 受講完了

    ${トレーニングメニュー} は完了しましたか?」ダイアログがOKの場合。

    利用API:

    IDURLParameter
    API016PUT /booking/{booking_id}/status選択されたトレーニング予約ID

    画面表示制御:

    • クリック可否判定
      • 予約済み+現在時間<=受講時間になっている場合に、クリック可能とする
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • 次のAPIを呼び出し

    利用API:

    ',14),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API-012"),l("td",{trainee_id:""},"GET /bookings/"),l("td",null,"trainee_id=userState.user_id")])])],-1),l("p",null,"画面表示制御:",-1),l("ul",null,[l("li",null,[t("起動条件 "),l("ul",null,[l("li",null,"API016が有効な場合")])]),l("li",null,[t("HTTPステータスが200以外 "),l("ul",null,[l("li",null,"メッセージID(MSG_BIZ_111)表示")])])],-1)]))}const P=d(n,[["render",i]]);export{p as __pageData,P as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.lean.js" new file mode 100644 index 00000000..5a1bc0db --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS02_index.md.CsBAI1kJ.lean.js" @@ -0,0 +1 @@ +import{_ as d,c as r,j as l,a as t,a3 as a,o as u}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"[UIS02] マイページ","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md"}'),n={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS02/index.md"};function i(o,e,h,s,c,_){return u(),r("div",null,e[0]||(e[0]=[l("h1",{id:"uis02-マイページ",tabindex:"-1"},[t("[UIS02] マイページ "),l("a",{class:"header-anchor",href:"#uis02-マイページ","aria-label":'Permalink to "[UIS02] マイページ"'},"​")],-1),l("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-2&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • トレーニーのマイページを表示し、受講予定・受講済みのトレーニング一覧を表示する

    機能概要:

    • 受講状況の表示
    • パーソナルトレーナーの検索への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示初期検索条件に従いAPIを実行し、履歴表示する
    2トレーナーを探すボタン押下パーソナルトレーナー検索モーダル起動
    3受講完了確認ボタン押下予約済みトレーニングを受講完了に切り替えるためのモーダル起動
    4受講完了ボタン押下予約済みトレーニングを完了済みのトレーニングに更新

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"Name"),l("th",null,"Value"),l("th",null,"Memo")])]),l("tbody",null,[l("tr",null,[l("td",null,"userState"),l("td",{"user_id:<user_id":""}),l("td",null,"ログイン状態")])])],-1),l("p",null,"初期表示イベント:",-1),l("ul",null,[l("li",null,"マイページ表示")],-1),l("p",null,"利用API:",-1),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API-005"),l("td",{trainee_id:""},"GET /profile/"),l("td",null,"trainee_id=userState.user_id")])])],-1),l("p",null,"画面表示制御:",-1),l("ul",null,[l("li",null,[t("HTTPステータスが500系 "),l("ul",null,[l("li",null,"メッセージID(MSG_BIZ_111)表示")])]),l("li",null,[t("HTTPステータスが400系 "),l("ul",null,[l("li",null,"トップページにリダイレクト")])])],-1),l("p",null,"利用API:",-1),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API013"),l("td",{trainee_id:""},"GET /bookings/"),l("td",null,"trainee_id=userState.user_id")])])],-1),a('

    画面表示制御:

    • 起動条件
      • API016が有効な場合
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示

    2. トレーナーを探す

    UIM002 を起動。

    3. 受講完了確認

    ${トレーニングメニュー} は完了しましたか?」ダイアログを表示する。

    キャンセルの場合は閉じる。

    4. 受講完了

    ${トレーニングメニュー} は完了しましたか?」ダイアログがOKの場合。

    利用API:

    IDURLParameter
    API016PUT /booking/{booking_id}/status選択されたトレーニング予約ID

    画面表示制御:

    • クリック可否判定
      • 予約済み+現在時間<=受講時間になっている場合に、クリック可能とする
    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • 次のAPIを呼び出し

    利用API:

    ',14),l("table",{tabindex:"0"},[l("thead",null,[l("tr",null,[l("th",null,"ID"),l("th",null,"URL"),l("th",null,"Parameter")])]),l("tbody",null,[l("tr",null,[l("td",null,"API-012"),l("td",{trainee_id:""},"GET /bookings/"),l("td",null,"trainee_id=userState.user_id")])])],-1),l("p",null,"画面表示制御:",-1),l("ul",null,[l("li",null,[t("起動条件 "),l("ul",null,[l("li",null,"API016が有効な場合")])]),l("li",null,[t("HTTPステータスが200以外 "),l("ul",null,[l("li",null,"メッセージID(MSG_BIZ_111)表示")])])],-1)]))}const P=d(n,[["render",i]]);export{p as __pageData,P as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.js" new file mode 100644 index 00000000..924e3ab5 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.js" @@ -0,0 +1 @@ +import{_ as e,c as r,j as t,a as d,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS03] トレーナー一覧","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md"};function h(n,a,s,u,c,m){return i(),r("div",null,a[0]||(a[0]=[t("h1",{id:"uis03-トレーナー一覧",tabindex:"-1"},[d("[UIS03] トレーナー一覧 "),t("a",{class:"header-anchor",href:"#uis03-トレーナー一覧","aria-label":'Permalink to "[UIS03] トレーナー一覧"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-11&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • 検索条件に一致する順にパーソナルトレーナーを表示する

    機能概要:

    • パーソナルトレーナーの一覧表示
    • パーソナルトレーナーの再検索を指定可能とする
    • 興味が湧いたパーソナルトレーナーについて、詳細画面への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示検索条件に従いAPIを実行し、一覧表示する
    2トレーナー詳細ボタン押下UIS04に遷移
    3トレーナー検索ボタン押下入力された条件で検索

    イベント詳細

    1. 初期表示

    利用API:

    IDURLParameter
    API007GET /trainersfavorite_gym_nameなど、各クエリパラメータ指定されたパラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • 応答結果が0件の場合
      • 「条件に一致するパーソナルトレーナーが見つかりませんでした。」を表示する
    • 応答結果が1件以上の場合
      • リスト表示する(ページングは不要。応答順に最大100件表示する)

    2. トレーナー詳細

    UIS04に遷移

    3. トレーナー検索

    初期表示と同等の処理を実行する。

    ',17)]))}const b=e(o,[["render",h]]);export{_ as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.lean.js" new file mode 100644 index 00000000..924e3ab5 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS03_index.md.H2UeALcL.lean.js" @@ -0,0 +1 @@ +import{_ as e,c as r,j as t,a as d,a3 as l,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS03] トレーナー一覧","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS03/index.md"};function h(n,a,s,u,c,m){return i(),r("div",null,a[0]||(a[0]=[t("h1",{id:"uis03-トレーナー一覧",tabindex:"-1"},[d("[UIS03] トレーナー一覧 "),t("a",{class:"header-anchor",href:"#uis03-トレーナー一覧","aria-label":'Permalink to "[UIS03] トレーナー一覧"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=4-11&embed-host=share",allowfullscreen:""},null,-1),l('

    概要

    機能目的:

    • 検索条件に一致する順にパーソナルトレーナーを表示する

    機能概要:

    • パーソナルトレーナーの一覧表示
    • パーソナルトレーナーの再検索を指定可能とする
    • 興味が湧いたパーソナルトレーナーについて、詳細画面への導線

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示検索条件に従いAPIを実行し、一覧表示する
    2トレーナー詳細ボタン押下UIS04に遷移
    3トレーナー検索ボタン押下入力された条件で検索

    イベント詳細

    1. 初期表示

    利用API:

    IDURLParameter
    API007GET /trainersfavorite_gym_nameなど、各クエリパラメータ指定されたパラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • 応答結果が0件の場合
      • 「条件に一致するパーソナルトレーナーが見つかりませんでした。」を表示する
    • 応答結果が1件以上の場合
      • リスト表示する(ページングは不要。応答順に最大100件表示する)

    2. トレーナー詳細

    UIS04に遷移

    3. トレーナー検索

    初期表示と同等の処理を実行する。

    ',17)]))}const b=e(o,[["render",h]]);export{_ as __pageData,b as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.js" new file mode 100644 index 00000000..2bbaaedf --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.js" @@ -0,0 +1 @@ +import{_ as l,c as r,j as t,a as d,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS04] トレーナー詳細","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md"}'),h={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md"};function n(o,e,u,s,c,b){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uis04-トレーナー詳細",tabindex:"-1"},[d("[UIS04] トレーナー詳細 "),t("a",{class:"header-anchor",href:"#uis04-トレーナー詳細","aria-label":'Permalink to "[UIS04] トレーナー詳細"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=115-284&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • パーソナルトレーナーが提供するトレーニング一覧を表示する

    機能概要:

    • パーソナルトレーナー情報を表示
    • トレーニング一覧を表示する

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示初期検索条件に従いAPIを実行し、履歴表示する
    2トレーニングコース決定ボタン押下予約のためカレンダーモーダルを起動

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")])])],-1),a('

    利用API:

    IDURLParameter
    API009GET /trainers/{trainer_id}/profile起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • プロフィールを更新
      • API008を呼び出し

    利用API:

    IDURLParameter
    API008GET /trainers/{trainer_id}/menus起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • メニューを一覧表示
      • 0件の場合は「現在、提供できるメニューが存在しません。」と表示
      • API010を呼び出し

    利用API:

    IDURLParameter
    API010/trainers/{trainer_id}/reviews起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • 0件の場合は、「レビューがありません」を表示する
      • 1件以上存在する場合は、最大5件まで表示する

    2. トレーニングコース決定

    UIM03 を起動する。

    ',14)]))}const m=l(h,[["render",n]]);export{_ as __pageData,m as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.lean.js" new file mode 100644 index 00000000..2bbaaedf --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_UIS04_index.md.CRtGDRJQ.lean.js" @@ -0,0 +1 @@ +import{_ as l,c as r,j as t,a as d,a3 as a,o as i}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"[UIS04] トレーナー詳細","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md"}'),h={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/UIS04/index.md"};function n(o,e,u,s,c,b){return i(),r("div",null,e[0]||(e[0]=[t("h1",{id:"uis04-トレーナー詳細",tabindex:"-1"},[d("[UIS04] トレーナー詳細 "),t("a",{class:"header-anchor",href:"#uis04-トレーナー詳細","aria-label":'Permalink to "[UIS04] トレーナー詳細"'},"​")],-1),t("iframe",{style:{border:"1px solid rgba(0, 0, 0, 0.1)"},width:"800",height:"450",src:"https://embed.figma.com/design/kLgdi4xdGRpQudMEoZYwvq/%E3%80%90FMP%E3%80%91Future-Muscle-Partner_%E7%94%BB%E9%9D%A2%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3?node-id=115-284&embed-host=share",allowfullscreen:""},null,-1),a('

    概要

    機能目的:

    • パーソナルトレーナーが提供するトレーニング一覧を表示する

    機能概要:

    • パーソナルトレーナー情報を表示
    • トレーニング一覧を表示する

    イベント概要

    Noイベント名イベント分類処理説明
    1初期表示初期表示初期検索条件に従いAPIを実行し、履歴表示する
    2トレーニングコース決定ボタン押下予約のためカレンダーモーダルを起動

    イベント詳細

    1. 初期表示

    起動パラメータ:

    ',10),t("table",{tabindex:"0"},[t("thead",null,[t("tr",null,[t("th",null,"Name"),t("th",null,"Value"),t("th",null,"Memo")])]),t("tbody",null,[t("tr",null,[t("td",null,"trainer_id"),t("td",{"trainer_id:<trainer_id":""}),t("td")])])],-1),a('

    利用API:

    IDURLParameter
    API009GET /trainers/{trainer_id}/profile起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • プロフィールを更新
      • API008を呼び出し

    利用API:

    IDURLParameter
    API008GET /trainers/{trainer_id}/menus起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • メニューを一覧表示
      • 0件の場合は「現在、提供できるメニューが存在しません。」と表示
      • API010を呼び出し

    利用API:

    IDURLParameter
    API010/trainers/{trainer_id}/reviews起動パラメータを設定

    画面表示制御:

    • HTTPステータスが200以外
      • メッセージID(MSG_BIZ_111)表示
    • HTTPステータスが200
      • 0件の場合は、「レビューがありません」を表示する
      • 1件以上存在する場合は、最大5件まで表示する

    2. トレーニングコース決定

    UIM03 を起動する。

    ',14)]))}const m=l(h,[["render",n]]);export{_ as __pageData,m as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.js" new file mode 100644 index 00000000..98717094 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.js" @@ -0,0 +1 @@ +import{_ as d,c as a,a3 as e,o as r}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"画面","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md"};function n(h,t,i,l,s,c){return r(),a("div",null,t[0]||(t[0]=[e('

    画面

    標準画面

    ID論理名備考
    UIS01トップページ
    UIS02マイページ
    UIS03トレーナー一覧
    UIS04トレーナー詳細

    モーダル画面

    ID論理名備考
    UIM01ログイン
    UIM02トレーナー検索
    UIM03カレンダー予約
    UIM04決済
    ',6)]))}const m=d(o,[["render",n]]);export{f as __pageData,m as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.lean.js" new file mode 100644 index 00000000..98717094 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_01_\347\224\273\351\235\242_index.md.CGJLJLQP.lean.js" @@ -0,0 +1 @@ +import{_ as d,c as a,a3 as e,o as r}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"画面","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md"}'),o={name:"documents/forMarkdown/future_muscle_partner/docs/01_画面/index.md"};function n(h,t,i,l,s,c){return r(),a("div",null,t[0]||(t[0]=[e('

    画面

    標準画面

    ID論理名備考
    UIS01トップページ
    UIS02マイページ
    UIS03トレーナー一覧
    UIS04トレーナー詳細

    モーダル画面

    ID論理名備考
    UIM01ログイン
    UIM02トレーナー検索
    UIM03カレンダー予約
    UIM04決済
    ',6)]))}const m=d(o,[["render",n]]);export{f as __pageData,m as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.js b/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.js new file mode 100644 index 00000000..d5f7a57b --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.js @@ -0,0 +1 @@ +import{_ as r,c as t,j as e,a as n,o}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md"}'),s={name:"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md"};function d(c,a,i,p,l,m){return o(),t("div",null,a[0]||(a[0]=[e("h2",{id:"web-api",tabindex:"-1"},[n("Web API "),e("a",{class:"header-anchor",href:"#web-api","aria-label":'Permalink to "Web API"'},"​")],-1),e("p",null,[e("a",{href:"openapi.yaml"},"openapi.yaml")],-1)]))}const f=r(s,[["render",d]]);export{_ as __pageData,f as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.lean.js b/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.lean.js new file mode 100644 index 00000000..d5f7a57b --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_docs_02_WebAPI_index.md.D3BLQ8oq.lean.js @@ -0,0 +1 @@ +import{_ as r,c as t,j as e,a as n,o}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md"}'),s={name:"documents/forMarkdown/future_muscle_partner/docs/02_WebAPI/index.md"};function d(c,a,i,p,l,m){return o(),t("div",null,a[0]||(a[0]=[e("h2",{id:"web-api",tabindex:"-1"},[n("Web API "),e("a",{class:"header-anchor",href:"#web-api","aria-label":'Permalink to "Web API"'},"​")],-1),e("p",null,[e("a",{href:"openapi.yaml"},"openapi.yaml")],-1)]))}const f=r(s,[["render",d]]);export{_ as __pageData,f as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.js" new file mode 100644 index 00000000..191ee4f8 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.js" @@ -0,0 +1 @@ +import{_ as t,c as n,j as e,a as r,o}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"テーブル一覧","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md"}'),s={name:"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md"};function d(c,a,l,u,i,m){return o(),n("div",null,a[0]||(a[0]=[e("h1",{id:"テーブル一覧",tabindex:"-1"},[r("テーブル一覧 "),e("a",{class:"header-anchor",href:"#テーブル一覧","aria-label":'Permalink to "テーブル一覧"'},"​")],-1),e("p",null,[e("a",{href:"https://a5m2.mmatsubara.com/",target:"_blank",rel:"noreferrer"},"A5:SQL Mk-2"),r(" で管理している。")],-1),e("ul",null,[e("li",null,[e("a",{href:"https://github.com/future-architect/coding-standards/raw/gh-pages/example-resources/erd.a5er",target:"_blank",rel:"noreferrer"},"erd.a5er"),r(" を参照")])],-1)]))}const p=t(s,[["render",d]]);export{_ as __pageData,p as default}; diff --git "a/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.lean.js" "b/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.lean.js" new file mode 100644 index 00000000..191ee4f8 --- /dev/null +++ "b/assets/documents_forMarkdown_future_muscle_partner_docs_03_\343\203\207\343\203\274\343\202\277_index.md.C-2zAbuT.lean.js" @@ -0,0 +1 @@ +import{_ as t,c as n,j as e,a as r,o}from"./chunks/framework.BDUoXecB.js";const _=JSON.parse('{"title":"テーブル一覧","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md"}'),s={name:"documents/forMarkdown/future_muscle_partner/docs/03_データ/index.md"};function d(c,a,l,u,i,m){return o(),n("div",null,a[0]||(a[0]=[e("h1",{id:"テーブル一覧",tabindex:"-1"},[r("テーブル一覧 "),e("a",{class:"header-anchor",href:"#テーブル一覧","aria-label":'Permalink to "テーブル一覧"'},"​")],-1),e("p",null,[e("a",{href:"https://a5m2.mmatsubara.com/",target:"_blank",rel:"noreferrer"},"A5:SQL Mk-2"),r(" で管理している。")],-1),e("ul",null,[e("li",null,[e("a",{href:"https://github.com/future-architect/coding-standards/raw/gh-pages/example-resources/erd.a5er",target:"_blank",rel:"noreferrer"},"erd.a5er"),r(" を参照")])],-1)]))}const p=t(s,[["render",d]]);export{_ as __pageData,p as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.js b/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.js new file mode 100644 index 00000000..1bbfcac3 --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.js @@ -0,0 +1,6 @@ +import{_ as t,c as s,a3 as i,o as e}from"./chunks/framework.BDUoXecB.js";const u=JSON.parse('{"title":"docs","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/README.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/README.md"}'),d={name:"documents/forMarkdown/future_muscle_partner/docs/README.md"};function l(n,a,r,h,p,o){return e(),s("div",null,a[0]||(a[0]=[i(`

    docs

    設計ドキュメントを管理する。

    フォルダ階層

    sh
    docs
    +├── 01_画面      # Figma、画面アクション
    +├── 02_WebAPI   # openapi.yaml、API処理設計
    +├── 03_データ    # erd.a5er(ERD)、区分値
    +├── ...
    +└── README.md

    設計書

    コード体系

    機能IDのコード体系は以下に従う。

    種別種別備考
    UIS通常画面UIS01、UIS02UI Standard から
    UIMモーダル画面UIM01、UIM02UI Mordal から
    APIWeb APIAPI01、API02
    IFSシステムI/F 送信IFS01、IFS02InterFace Send から
    IFRシステムI/F 受信IFR01、IFR02InterFace Receive から
    BATバッチBAT01、BAT02BATch から
    RPT帳票RPT01、RPT02RePorT から

    コード体系について補足:

    • UISであれば、 UIS(0[1-9]{1}|[0-9]{2} といったフォーマットに従うこと
    • Future Muscle Partnerのプロダクト規模であれば、機能数が爆発しないという想定で2桁とする
      • 万が一あぶれた場合、16進数と見なしてA~Fを導入する拡張を行う

    機能IDの採番について注意点:

    • 採番後の変更は許可しない
    • 連番とする(数字部分に新しい体系を作らない)

    画面設計書の記載方針

    • Web API の応答項目が、画面項目のどこにマッピングすべきかという情報は、多くの業務画面で重要である
      • 理由は、類似名称の項目がWeb API応答項目にも画面項目多く、紐づけの認識の齟齬が生じやすいからである
    • future muscle partnerにおいては、項目数は多くなくFigmaを見れば自明であるため、画面項目定義を省略する
    `,15)]))}const k=t(d,[["render",l]]);export{u as __pageData,k as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.lean.js b/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.lean.js new file mode 100644 index 00000000..1bbfcac3 --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_docs_README.md.DSJLw6x7.lean.js @@ -0,0 +1,6 @@ +import{_ as t,c as s,a3 as i,o as e}from"./chunks/framework.BDUoXecB.js";const u=JSON.parse('{"title":"docs","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/docs/README.md","filePath":"documents/forMarkdown/future_muscle_partner/docs/README.md"}'),d={name:"documents/forMarkdown/future_muscle_partner/docs/README.md"};function l(n,a,r,h,p,o){return e(),s("div",null,a[0]||(a[0]=[i(`

    docs

    設計ドキュメントを管理する。

    フォルダ階層

    sh
    docs
    +├── 01_画面      # Figma、画面アクション
    +├── 02_WebAPI   # openapi.yaml、API処理設計
    +├── 03_データ    # erd.a5er(ERD)、区分値
    +├── ...
    +└── README.md

    設計書

    コード体系

    機能IDのコード体系は以下に従う。

    種別種別備考
    UIS通常画面UIS01、UIS02UI Standard から
    UIMモーダル画面UIM01、UIM02UI Mordal から
    APIWeb APIAPI01、API02
    IFSシステムI/F 送信IFS01、IFS02InterFace Send から
    IFRシステムI/F 受信IFR01、IFR02InterFace Receive から
    BATバッチBAT01、BAT02BATch から
    RPT帳票RPT01、RPT02RePorT から

    コード体系について補足:

    • UISであれば、 UIS(0[1-9]{1}|[0-9]{2} といったフォーマットに従うこと
    • Future Muscle Partnerのプロダクト規模であれば、機能数が爆発しないという想定で2桁とする
      • 万が一あぶれた場合、16進数と見なしてA~Fを導入する拡張を行う

    機能IDの採番について注意点:

    • 採番後の変更は許可しない
    • 連番とする(数字部分に新しい体系を作らない)

    画面設計書の記載方針

    • Web API の応答項目が、画面項目のどこにマッピングすべきかという情報は、多くの業務画面で重要である
      • 理由は、類似名称の項目がWeb API応答項目にも画面項目多く、紐づけの認識の齟齬が生じやすいからである
    • future muscle partnerにおいては、項目数は多くなくFigmaを見れば自明であるため、画面項目定義を省略する
    `,15)]))}const k=t(d,[["render",l]]);export{u as __pageData,k as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.js b/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.js new file mode 100644 index 00000000..b9428c12 --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.js @@ -0,0 +1,5 @@ +import{_ as a,c as e,a3 as i,o as n}from"./chunks/framework.BDUoXecB.js";const l="/coding-standards/assets/future_muscle_partner_abstract.CX2VLXG2.png",k=JSON.parse('{"title":"Future Muscle Partner","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/index.md","filePath":"documents/forMarkdown/future_muscle_partner/index.md"}'),t={name:"documents/forMarkdown/future_muscle_partner/index.md"};function r(p,s,h,d,u,c){return n(),e("div",null,s[0]||(s[0]=[i('

    Future Muscle Partner

    「いきつけのジムでパーソナルトレーニングを受けよう」のFuture Muscle Partnerのリポジトリ。

    サービスコンセプト

    パーソナルトレーナーを身近なものにして、質が高く安全で楽しいフィットネス体験を提供する。

    アプリを通してトレーニがトレーナに予約し、トレーニングを実施するフロー

    サービス概要:

    • アプリ上でジム公認のトレーナーを検索&予約し、いきつけのジムでトレーニングを受けることができる

    主なアクターとメリット:

    • トレーニー
      • 自分が通っているジムでパーソナル受けられる
      • トレーナーの得意分野ごとにトレーナーを使い分けられる
    • パーソナルトレーニー
      • 24H型ジムでサービスを提供できる
      • いつ/誰に/どんなメニューでトレーニングしたかを管理できる

    フォルダ階層

    sh
    .
    +├── backend    # バックエンド系のコード
    +├── docs       # 設計書
    +├── frontend   # フロントエンド系のコード
    +├── infra      # インフラ系のコード

    設計書

    docs を参照。

    `,13)]))}const m=a(t,[["render",r]]);export{k as __pageData,m as default}; diff --git a/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.lean.js b/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.lean.js new file mode 100644 index 00000000..b9428c12 --- /dev/null +++ b/assets/documents_forMarkdown_future_muscle_partner_index.md.D8-gl5sc.lean.js @@ -0,0 +1,5 @@ +import{_ as a,c as e,a3 as i,o as n}from"./chunks/framework.BDUoXecB.js";const l="/coding-standards/assets/future_muscle_partner_abstract.CX2VLXG2.png",k=JSON.parse('{"title":"Future Muscle Partner","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forMarkdown/future_muscle_partner/index.md","filePath":"documents/forMarkdown/future_muscle_partner/index.md"}'),t={name:"documents/forMarkdown/future_muscle_partner/index.md"};function r(p,s,h,d,u,c){return n(),e("div",null,s[0]||(s[0]=[i('

    Future Muscle Partner

    「いきつけのジムでパーソナルトレーニングを受けよう」のFuture Muscle Partnerのリポジトリ。

    サービスコンセプト

    パーソナルトレーナーを身近なものにして、質が高く安全で楽しいフィットネス体験を提供する。

    アプリを通してトレーニがトレーナに予約し、トレーニングを実施するフロー

    サービス概要:

    • アプリ上でジム公認のトレーナーを検索&予約し、いきつけのジムでトレーニングを受けることができる

    主なアクターとメリット:

    • トレーニー
      • 自分が通っているジムでパーソナル受けられる
      • トレーナーの得意分野ごとにトレーナーを使い分けられる
    • パーソナルトレーニー
      • 24H型ジムでサービスを提供できる
      • いつ/誰に/どんなメニューでトレーニングしたかを管理できる

    フォルダ階層

    sh
    .
    +├── backend    # バックエンド系のコード
    +├── docs       # 設計書
    +├── frontend   # フロントエンド系のコード
    +├── infra      # インフラ系のコード

    設計書

    docs を参照。

    `,13)]))}const m=a(t,[["render",r]]);export{k as __pageData,m as default}; diff --git a/assets/documents_forMarkdown_index.md.BX5VlSyJ.js b/assets/documents_forMarkdown_index.md.BX5VlSyJ.js new file mode 100644 index 00000000..16c11c6f --- /dev/null +++ b/assets/documents_forMarkdown_index.md.BX5VlSyJ.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as t,o as n}from"./chunks/framework.BDUoXecB.js";const m=JSON.parse('{"title":"Markdown設計ドキュメント規約","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Markdown設計ドキュメント規約","tagline":"Future Enterprise Markdown Design Document Standards","actions":[{"theme":"brand","text":"Markdown設計ドキュメント規約","link":"./markdown_design_document.md"}]}},"headers":[],"relativePath":"documents/forMarkdown/index.md","filePath":"documents/forMarkdown/index.md"}'),o={name:"documents/forMarkdown/index.md"};function d(s,r,i,c,l,u){return n(),a("div",null,r[0]||(r[0]=[t('

    Markdown設計ドキュメント規約

    Markdown ベースの設計ドキュメントの規約をまとめる。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    ',6)]))}const E=e(o,[["render",d]]);export{m as __pageData,E as default}; diff --git a/assets/documents_forMarkdown_index.md.BX5VlSyJ.lean.js b/assets/documents_forMarkdown_index.md.BX5VlSyJ.lean.js new file mode 100644 index 00000000..16c11c6f --- /dev/null +++ b/assets/documents_forMarkdown_index.md.BX5VlSyJ.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as t,o as n}from"./chunks/framework.BDUoXecB.js";const m=JSON.parse('{"title":"Markdown設計ドキュメント規約","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Markdown設計ドキュメント規約","tagline":"Future Enterprise Markdown Design Document Standards","actions":[{"theme":"brand","text":"Markdown設計ドキュメント規約","link":"./markdown_design_document.md"}]}},"headers":[],"relativePath":"documents/forMarkdown/index.md","filePath":"documents/forMarkdown/index.md"}'),o={name:"documents/forMarkdown/index.md"};function d(s,r,i,c,l,u){return n(),a("div",null,r[0]||(r[0]=[t('

    Markdown設計ドキュメント規約

    Markdown ベースの設計ドキュメントの規約をまとめる。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    ',6)]))}const E=e(o,[["render",d]]);export{m as __pageData,E as default}; diff --git a/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.js b/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.js new file mode 100644 index 00000000..d58bd9c3 --- /dev/null +++ b/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.js @@ -0,0 +1,280 @@ +import{_ as a,c as i,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"Markdown設計ドキュメント規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Markdown設計ドキュメント規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Slack"}]]},"headers":[],"relativePath":"documents/forMarkdown/markdown_design_document.md","filePath":"documents/forMarkdown/markdown_design_document.md"}'),h={name:"documents/forMarkdown/markdown_design_document.md"};function r(k,s,d,E,c,b){const n=e("page-title");return t(),i("div",null,[l(n),s[0]||(s[0]=p(`

    本規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    Markdown ベースの設計ドキュメントの規約をまとめる。

    システム開発にて利用する設計ドキュメントを Markdown ベースにすることで、コーディングと同じ慣れたツールを用いて、Git によるバージョン管理、レビュープロセス、CI/CD などに自動化(静的解析、自動生成)を行いやすくし、ドキュメントを陳腐化させず、俊敏な設計開発を目指す。

    Markdown に限った話では無いが、どういった内容を設計書に記載すべきかは悩むポイントは多い。

    本規約では、アプリケーションの種別ごとに記載すべき内容と、それをどのような Markdown の構造で記載するかを規約化し、各チームで悩む余地を減らし、注力すべきことに集中できる環境を提供することを目的とする。

    前提

    本規約は以下の前提で作成されている

    • チーム/プロジェクトが 3 ~ 10 名程度の規模
    • Git(GitHub, GitLab)で管理され、コードと設計書が同一リポジトリで管理される
    • システム開発で必要なアプリケーション開発

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された運営方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している
    • 自社のセキュリティポリシーや外部サービス利用ポリシーがある場合は、そちらを優先すること
    • Slack Enterprise Grid/Google Workspaceを利用しているため、それらの機能を前提にしている記述がある

    本規約で紹介する設計ドキュメントの位置付け

    設計ドキュメントは様々な前提条件/制約/経緯で作成され、Excel/Word/パワーポイントなどのファイル形式で作成することが多い。

    本規約はそれらを否定するものではなく、様々な利害関係者の要求に応え洗練され続けた上記の設計ドキュメントのテンプレートには、強く敬意を表する。

    一方で、設計ドキュメントを精緻に管理していく優先度より、プロダクト開発の効率とビジネスピードをより重視する場合もあり、それらの開発チームでは設計ドキュメントが存在さえない、あっても設計書が実装と乖離しているなどの問題が世間で課題提起されることも多い。

    本規約では、後者のプロダクト開発の効率性を重視し、設計ドキュメントが開発以外の観点から求められない場合において、必要最低限必要だと思われるレベルの記載のサンプルを提供する。

    また、設計ドキュメントのファイル形式に制約は無いという前提に立つため、設計ドキュメントの陳腐化を防ぐのに有効だと思われる、テキストベース(Markdown)でGit管理するという思想を採用する。

    本規約で紹介した各設計ドキュメントの記載内容を参考にしつつ、各開発チームにおいて必要な情報を追加/削除して利用するという、テンプレートとしての利用を想定する。

    テキストベースにおける設計書の注意点

    特に扱いで留意すべき点として、列数が多い表形式で設計ドキュメントを記載するケースがある。

    Markdownで表を記載することは可能ですが、列数が多い場合は保守性が非常に低くなり、git diffを用いた差分が見れるメリットも下がる。

    例えば、1つの画面の利用項目数が数十以上になり得る場合は、Excelなどのファイル形式を利用することを推奨する。

    フォルダ階層の推奨

    リポジトリ直下に docs フォルダを作成し、その配下に設計ドキュメントとなる Markdown ファイルを配備する。

    次はバックエンド、フロントエンド、インフラのコードをモノリポで管理している例である。

    sh
    .
    +├── backend # バックエンド系のコード
    +├── docs
    +├── frontend # フロントエンド系のコード
    +├── infrastructure # インフラ系のコード

    docs 配下は以下のルールにしたがった構造を取る。

    • 01_02_ といったプレフィックスを持つ
    • 番号には体系をもたせず、必要になったタイミングでインクリメントさせる
    • オンボーディングコストを抑えるため、なるべく先頭に新規参画者が欲する情報を配備する

    構成例を次にあげる。

    sh
    docs
    +├── 01_キャッチアップ # ドメイン知識など抑えておくべき前提知識
    +├── 02_環境構築     #
    +├── 03_開発規約     # GitFlowなど、リリース方式、CI/CD周り
    +├── 04_ユーザーストーリー
    +├── 05_UI設計      # Figmaのパスなど
    +├── 06_画面設計書
    +├── 07_API設計書   # OpenAPIのパス+各BL設計
    +├── 08_データモデル # ERD, テーブル定義
    +├── 09_IF設計書    # I/F定義+受信/送信BL設計
    +├── 10_バッチ設計書 # タイマー、イベント起動の非同期処理のBL設計
    +├── 11_インフラ設計 # 監視、キャパシティサイジング、コスト
    +├── ...
    +└── README.md

    システム構成図

    図は基本的に変更差分がGitと相性が良い、PlantUML(またはMermaid.js)で作成すること。PlantUMLの場合、テーマは toy を指定すること。

    plantuml
    @startuml
    +!theme toy
    +
    +participant Participant as Foo
    +note over Foo: Event
    +actor       Actor       as Foo1
    +boundary    Boundary    as Foo2
    +control     Control     as Foo3
    +entity      Entity      as Foo4
    +database    Database    as Foo5
    +collections Collections as Foo6
    +queue       Queue       as Foo7
    +Foo -> Foo1 : To actor
    +Foo -> Foo2 : To boundary
    +Foo -> Foo3 : To control
    +Foo -> Foo4 : To entity
    +Foo -> Foo5 : To database
    +Foo -> Foo6 : To collections
    +Foo -> Foo7: To queue
    +
    +@enduml

    システム構成図などは上記では対応しにくいことが多いため、diagrams.net(draw.io)で作成する。

    diagrams.netの場合は、拡張子は以下のいずれかで作成する。

    • .drawio.png
    • .drawio.jpg
    • .drawio.svg

    フロントエンド

    以下の方針を取る。

    • Figmaを用いて、画面遷移、画面表示項目を定義する
    • Markdown設計書には、Figmaで判断可能な見た目の情報は 記載しない
    • Markdown設計書には、Web APIの呼び出しやイベントの定義、パラメータの受け渡し、バリデーションロジックなどを定義する。

    サンプル設計書を参考にする。

    バックエンド

    テーブル定義書

    A5:SQL Mk-2を用い、erd.a5er という名称で管理する。

    以下の情報の管理は erd.a5er で行えないため、別で定義する。

    • 保持期限
    • 個人情報有無

    区分値

    設計書サンプルを以下に示す。

    区分値設計書サンプル

    md
    # ENUM01 ユーザー権限
    +
    +## 区分値概要
    +
    +- 目的: 画面のモードの切り替えに利用する
    +- 物理名: user permission level
    +- 型: string
    +- スコープ: frontend, backend
    +- マスターテーブル: m_user_role
    +
    +## 区分値定義
    +
    +| 論理名             | 物理名          | 値  | バージョン | コメント |
    +| ------------------ | --------------- | --- | ---------- | -------- |
    +| ゲスト             | guest           | 01  | 1          |          |
    +| 未認証ユーザー     | unauthenticated | 02  | 1          |          |
    +| 登録ユーザー       | user            | 03  | 1          |          |
    +| プレミアムユーザー | premium_user    | 04  | 2          |          |
    +| 開発者             | developer       | 05  | 0          |          |
    +| テスター           | tester          | 06  | 0          |          |
    +| 管理者             | administrator   | 07  | 0          |          |

    メッセージ定義

    メッセージ定義サンプル

    md
    ## メッセージ定義
    +
    +| 識別子 | レベル | ステータス | メッセージ                                 | コメント                     |
    +| ------ | ------ | ---------- | ------------------------------------------ | ---------------------------- |
    +| 10001  | E      | 400        | ユーザー名またはパスワードが間違っています | ログイン画面で発生           |
    +| 10002  | W      |            | 文字数オーバーです                         | ログイン画面で発生           |
    +| 10003  | E      | 500        | {domain}は無効なユーザードメインです       | ユーザーの所属が異なっている |
    +| 10004  | F      | 500        | EntraIDに接続できません                    | ログインのバックエンドで発生 |

    Web API 設計書

    API 定義書は openapi.yaml で記載すること。

    詳細はOpenAPI Specification 3.0.3規約 を参考にする。

    プログラム設計書(バッチ、非同期タスクなど)

    プログラム設計書サンプル

    md
    # BAT01 xxx 計算
    +
    +## 処理概要
    +
    +- xxx(なぜこれが必要なのか)
    +- xxx受信の後続処理で起動し、xxx計算を行いxxxトランに登録する(処理の概略)
    +
    +## 処理シーケンス
    +
    +\`\`\`plantuml
    +@startuml
    +!theme toy
    +
    +participant システム
    +database DB
    +
    +note over システム: 各種インプット取得
    +
    +システム -> DB: 業務日付取得 [日付マスタ]
    +システム -> DB: 計算対象抽出xxx\\n[xxx受信管理トラン]\\n[xxx受信ワーク]\\n[xxxマスタ]\\n[yyyマスタ]\\n[zzzマスタ]
    +システム -> システム: 支払い差し引き金額計算(※ビジネスロジック1)
    +システム -> DB: 登録\\n[xxxトラン]
    +システム -> DB: 更新\\n[xxx予測ワーク]
    +
    +@enduml
    +\`\`\`
    +
    +## ビジネスロジック
    +
    +### ビジネスロジック1
    +
    +\`\`\`txt
    +支払金額 = 受信ワーク.商品コード * xxx * xxx - yyyy
    +
    +IF xxx 区分
    +  支払金額 = 支払金額 * 支払い係数 + (支払金額 - 前回発注金額)/2
    +END
    +\`\`\`
    +
    +## DB 項目
    +
    +### 取得
    +
    +- xxxマスタ.支払い金額
    +- xxxマスタ.特定商品区分
    +- yyyマスタ.新古品フラグ
    +- zzzマスタ.前回発注金額
    +
    +抽出条件:
    +
    +- xxx受信管理トラン.業務日付 = 業務日付
    +- xxx受信管理トラン.処理連番 = xxx受信管理トラン の最新の処理連番
    +
    +### 登録
    +
    +- xxxトラン.会社コード = xxx
    +- xxxトラン.処理日付 = xxx
    +- xxxトラン.xxx区分 = xxx
    +- xxxトラン.支払金額 = ビジネスロジック1計算結果
    +
    +### 更新
    +
    +xxx 予測ワーク:
    +
    +- xxx 予測ワーク.優先度
    +- xxx 予測ワーク.処理予定日

    プログラム設計書(Web API)

    Web APIについても、プログラム設計書(バッチ、非同期タスクなど)と同様に機能ID単位で作成する。

    ただし、Web APIにおいては openapi.yaml と重複する部分で自明な内容(例えば、リクエストパラメータの定義や、レスポンス項目)については、重複するため記載を省略する。

    もし、検索APIで複数のテーブルを参照して結果を応答する場合に、項目の由来を示すため、下表のような形式を定義すること。

    Web API応答例

    ParameterDescriptionSettingsNote
    last_name氏名 (姓)m_user
    first_name氏名 (名)m_user
    last_name_kana氏名カナ (姓)m_user
    first_name_kana氏名カナ (名)m_user
    date_of_birth生年月日m_user_detail
    gender_type性別区分m_user_detail
    tel電話番号m_user_detail
    occupation_type職業区分m_user_detail
    zipcode郵便番号m_user_detail

    ※Descriptionは openapi.yaml 側の description で記載済みであれば、省略すること ※Noteは何かしら加工処理により生み出された項目であれば、計算ロジックを記載する

    I/F 定義書

    I/F 定義書は、システム間の連携について定義と、その受信/配信処理の設計書です。

    システム I/F は連携先の対向システムが存在するため、認識齟齬が無いように、どのようなプロトコル・項目であるかを定義する必要がある。

    I/F設計書サンプル

    md
    # IF01 設備有効開始受信
    +
    +設備有効開始の取り込みを行う。
    +
    +## 対向システム
    +
    +| 連携元     | 連携先 |
    +| ---------- | ------ |
    +| A システム | Future |
    +
    +## 環境情報
    +
    +### Input
    +
    +| Item             | Value                                          |
    +| ---------------- | ---------------------------------------------- |
    +| 連携 S3 バケット | \`\${env}-example-import\`                        |
    +| プレフィックス   | \`activate/year=\${yyyy}/month=\${MM}/day=\${dd}/\` |
    +| ファイル名       | \`\${yyyy}-\${mm}-\${dd}-\${hh}-\${MM}-\${SS}.csv\`    |
    +| 保持期限         | 3 年                                           |
    +
    +### Output
    +
    +| Item             | Value                                          |
    +| ---------------- | ---------------------------------------------- |
    +| 連携 S3 バケット | \`\${env}-example-import\`                        |
    +| プレフィックス   | \`activate/year=\${yyyy}/month=\${MM}/day=\${dd}/\` |
    +| ファイル名       | \`\${yyyy}-\${mm}-\${dd}-\${hh}-\${MM}-\${SS}.csv\`    |
    +| 保持期限         | 3 年                                           |
    +
    +## 連携元定義
    +
    +| Category | Item                                | Value     | Memo                 |
    +| -------- | ----------------------------------- | --------- | -------------------- |
    +| Protocol | 連携方式(ファイル/API/ストリーム) | ファイル  |                      |
    +|          | 連携タイミング(随時/定時)         | 定時      |                      |
    +|          | 頻度                                | 1 回/日   |                      |
    +|          | 起動時間                            | **16:00** |                      |
    +|          | 処理完了期限                        | **16:00** |                      |
    +|          | 未着チェック(なし/WARN/ERROR)     | WARN      |                      |
    +|          | 全件/差分                           | 差分      |                      |
    +|          | 0 件時連携                          | あり      |                      |
    +| Format   | ファイル種別                        | **CSV**   |                      |
    +|          | レイアウト                          | RFC 8259  |                      |
    +|          | 文字コード                          | UTF-8     |                      |
    +|          | 改行コード                          | LF        |                      |
    +|          | 圧縮                                | -         |                      |
    +|          | 暗号化                              | -         |                      |
    +|          | ヘッダ行                            | あり      |                      |
    +|          | 項目順                              | 固定      | 項目順は入れ替え不可 |
    +|          | 機密情報                            | -         |                      |
    +
    +### 項目定義
    +
    +| Name       | Physical Name   | Type   | Length | Precision | Enum | Format     | Sensitive | Example    | Memo |
    +| ---------- | --------------- | ------ | ------ | --------- | ---- | ---------- | --------- | ---------- | ---- |
    +| 会社コード | company_cd      | string | 5      | -         | -    | -          | -         | 00001      |      |
    +| 設備コード | device_cd       | string | 8      | -         | -    | -          | -         | 00000052   |      |
    +| 有効開始日 | activation_date | string | 10     | -         | -    | YYYY-MM-DD | -         | 2022-10-16 | [^1] |
    +
    +[^1]: 現在日以降である必要があるが、受信ではテスト観点で過去日も許容する
    +
    +#### サンプル
    +
    +\`\`\`csv
    +company_cd,device_cd,activation_date
    +12121,00000052,2022-03-01
    +12121,00000053,2022-03-30
    +\`\`\`
    +
    +## 連携先定義
    +
    +| Category | Item                                | Value     | Memo                 |
    +| -------- | ----------------------------------- | --------- | -------------------- |
    +| Protocol | 連携方式(ファイル/API/ストリーム) | ファイル  |                      |
    +|          | 連携タイミング(随時/定時)         | 定時      |                      |
    +|          | 頻度                                | 1 回/日   |                      |
    +|          | 起動時間                            | **16:00** |                      |
    +|          | 処理完了期限                        | **16:00** |                      |
    +|          | 未着チェック(なし/WARN/ERROR)     | WARN      |                      |
    +|          | 全件/差分                           | 差分      |                      |
    +|          | 0 件時連携                          | あり      |                      |
    +| Format   | ファイル種別                        | **CSV**   |                      |
    +|          | レイアウト                          | RFC 8259  |                      |
    +|          | 文字コード                          | UTF-8     |                      |
    +|          | 改行コード                          | LF        |                      |
    +|          | 圧縮                                | -         |                      |
    +|          | 暗号化                              | -         |                      |
    +|          | ヘッダ行                            | あり      |                      |
    +|          | 項目順                              | 固定      | 項目順は入れ替え不可 |
    +|          | 機密情報                            | -         |                      |
    +
    +## 処理概要
    +
    +- ファイル定義に則ったバリデーションを実施
    +- 次の項目変換定義に従い加工し、出力先テーブルに Merge する
    +- 受信完了後、 Completed: YYYY-MM-DDTHH:MI:SS.SSS のタグを追加する
    +
    +## 処理シーケンス
    +
    +\`\`\`plantuml
    +@startuml
    +!theme toy
    +
    +participant システム
    +participant S3
    +database DB
    +
    +システム -> DB: 処理日付取得\\n[日付管理]
    +システム -> S3: 対象ファイルの存在チェック
    +alt ファイルが存在しなかった場合
    +   システム -> システム: 処理終了して、次の処理を待機
    +end
    +システム -> DB: シーケンスの取得\\n[シーケンスオブジェクト]
    +システム -> DB: 1.実行開始レコード追加\\n[IF受信管理]
    +システム -> S3: 対象ファイルを取得
    +システム -> DB: 対象マスタのTruncate
    +システム -> DB: ファイル連携処理
    +システム -> システム: 連携件数確認
    +システム -> S3: 処理済対象ファイルを格納
    +システム -> DB: 2.実行終了状態の更新\\n[IF受信管理]
    +@enduml
    +\`\`\`
    +
    +## DB 項目
    +
    +### 参照
    +
    +なし
    +
    +### 登録
    +
    +リストワークに以下のカラムでレコードを登録する
    +
    +- xxx ワーク.会社コード
    +- xxx ワーク.処理日付
    +- xxx ワーク.yyy 区分
    +
    +### 更新
    +
    +なし
    +
    +## ビジネスロジック
    +
    +特記事項なし
    +
    +## エラー処理
    +
    +| Pattern            | Description                                | recovery                               |
    +| ------------------ | ------------------------------------------ | -------------------------------------- |
    +| フォーマットエラー | 連携元から提供されているデータ形式が想定外 | 連携元またはIFの処理内容の修正と再実行 |
    `,66))])}const u=a(h,[["render",r]]);export{o as __pageData,u as default}; diff --git a/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.lean.js b/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.lean.js new file mode 100644 index 00000000..d58bd9c3 --- /dev/null +++ b/assets/documents_forMarkdown_markdown_design_document.md.C0X3FSHP.lean.js @@ -0,0 +1,280 @@ +import{_ as a,c as i,G as l,a3 as p,B as e,o as t}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"Markdown設計ドキュメント規約","description":"","frontmatter":{"sidebarDepth":4,"title":"Markdown設計ドキュメント規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Slack"}]]},"headers":[],"relativePath":"documents/forMarkdown/markdown_design_document.md","filePath":"documents/forMarkdown/markdown_design_document.md"}'),h={name:"documents/forMarkdown/markdown_design_document.md"};function r(k,s,d,E,c,b){const n=e("page-title");return t(),i("div",null,[l(n),s[0]||(s[0]=p(`

    本規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    Markdown ベースの設計ドキュメントの規約をまとめる。

    システム開発にて利用する設計ドキュメントを Markdown ベースにすることで、コーディングと同じ慣れたツールを用いて、Git によるバージョン管理、レビュープロセス、CI/CD などに自動化(静的解析、自動生成)を行いやすくし、ドキュメントを陳腐化させず、俊敏な設計開発を目指す。

    Markdown に限った話では無いが、どういった内容を設計書に記載すべきかは悩むポイントは多い。

    本規約では、アプリケーションの種別ごとに記載すべき内容と、それをどのような Markdown の構造で記載するかを規約化し、各チームで悩む余地を減らし、注力すべきことに集中できる環境を提供することを目的とする。

    前提

    本規約は以下の前提で作成されている

    • チーム/プロジェクトが 3 ~ 10 名程度の規模
    • Git(GitHub, GitLab)で管理され、コードと設計書が同一リポジトリで管理される
    • システム開発で必要なアプリケーション開発

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された運営方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している
    • 自社のセキュリティポリシーや外部サービス利用ポリシーがある場合は、そちらを優先すること
    • Slack Enterprise Grid/Google Workspaceを利用しているため、それらの機能を前提にしている記述がある

    本規約で紹介する設計ドキュメントの位置付け

    設計ドキュメントは様々な前提条件/制約/経緯で作成され、Excel/Word/パワーポイントなどのファイル形式で作成することが多い。

    本規約はそれらを否定するものではなく、様々な利害関係者の要求に応え洗練され続けた上記の設計ドキュメントのテンプレートには、強く敬意を表する。

    一方で、設計ドキュメントを精緻に管理していく優先度より、プロダクト開発の効率とビジネスピードをより重視する場合もあり、それらの開発チームでは設計ドキュメントが存在さえない、あっても設計書が実装と乖離しているなどの問題が世間で課題提起されることも多い。

    本規約では、後者のプロダクト開発の効率性を重視し、設計ドキュメントが開発以外の観点から求められない場合において、必要最低限必要だと思われるレベルの記載のサンプルを提供する。

    また、設計ドキュメントのファイル形式に制約は無いという前提に立つため、設計ドキュメントの陳腐化を防ぐのに有効だと思われる、テキストベース(Markdown)でGit管理するという思想を採用する。

    本規約で紹介した各設計ドキュメントの記載内容を参考にしつつ、各開発チームにおいて必要な情報を追加/削除して利用するという、テンプレートとしての利用を想定する。

    テキストベースにおける設計書の注意点

    特に扱いで留意すべき点として、列数が多い表形式で設計ドキュメントを記載するケースがある。

    Markdownで表を記載することは可能ですが、列数が多い場合は保守性が非常に低くなり、git diffを用いた差分が見れるメリットも下がる。

    例えば、1つの画面の利用項目数が数十以上になり得る場合は、Excelなどのファイル形式を利用することを推奨する。

    フォルダ階層の推奨

    リポジトリ直下に docs フォルダを作成し、その配下に設計ドキュメントとなる Markdown ファイルを配備する。

    次はバックエンド、フロントエンド、インフラのコードをモノリポで管理している例である。

    sh
    .
    +├── backend # バックエンド系のコード
    +├── docs
    +├── frontend # フロントエンド系のコード
    +├── infrastructure # インフラ系のコード

    docs 配下は以下のルールにしたがった構造を取る。

    • 01_02_ といったプレフィックスを持つ
    • 番号には体系をもたせず、必要になったタイミングでインクリメントさせる
    • オンボーディングコストを抑えるため、なるべく先頭に新規参画者が欲する情報を配備する

    構成例を次にあげる。

    sh
    docs
    +├── 01_キャッチアップ # ドメイン知識など抑えておくべき前提知識
    +├── 02_環境構築     #
    +├── 03_開発規約     # GitFlowなど、リリース方式、CI/CD周り
    +├── 04_ユーザーストーリー
    +├── 05_UI設計      # Figmaのパスなど
    +├── 06_画面設計書
    +├── 07_API設計書   # OpenAPIのパス+各BL設計
    +├── 08_データモデル # ERD, テーブル定義
    +├── 09_IF設計書    # I/F定義+受信/送信BL設計
    +├── 10_バッチ設計書 # タイマー、イベント起動の非同期処理のBL設計
    +├── 11_インフラ設計 # 監視、キャパシティサイジング、コスト
    +├── ...
    +└── README.md

    システム構成図

    図は基本的に変更差分がGitと相性が良い、PlantUML(またはMermaid.js)で作成すること。PlantUMLの場合、テーマは toy を指定すること。

    plantuml
    @startuml
    +!theme toy
    +
    +participant Participant as Foo
    +note over Foo: Event
    +actor       Actor       as Foo1
    +boundary    Boundary    as Foo2
    +control     Control     as Foo3
    +entity      Entity      as Foo4
    +database    Database    as Foo5
    +collections Collections as Foo6
    +queue       Queue       as Foo7
    +Foo -> Foo1 : To actor
    +Foo -> Foo2 : To boundary
    +Foo -> Foo3 : To control
    +Foo -> Foo4 : To entity
    +Foo -> Foo5 : To database
    +Foo -> Foo6 : To collections
    +Foo -> Foo7: To queue
    +
    +@enduml

    システム構成図などは上記では対応しにくいことが多いため、diagrams.net(draw.io)で作成する。

    diagrams.netの場合は、拡張子は以下のいずれかで作成する。

    • .drawio.png
    • .drawio.jpg
    • .drawio.svg

    フロントエンド

    以下の方針を取る。

    • Figmaを用いて、画面遷移、画面表示項目を定義する
    • Markdown設計書には、Figmaで判断可能な見た目の情報は 記載しない
    • Markdown設計書には、Web APIの呼び出しやイベントの定義、パラメータの受け渡し、バリデーションロジックなどを定義する。

    サンプル設計書を参考にする。

    バックエンド

    テーブル定義書

    A5:SQL Mk-2を用い、erd.a5er という名称で管理する。

    以下の情報の管理は erd.a5er で行えないため、別で定義する。

    • 保持期限
    • 個人情報有無

    区分値

    設計書サンプルを以下に示す。

    区分値設計書サンプル

    md
    # ENUM01 ユーザー権限
    +
    +## 区分値概要
    +
    +- 目的: 画面のモードの切り替えに利用する
    +- 物理名: user permission level
    +- 型: string
    +- スコープ: frontend, backend
    +- マスターテーブル: m_user_role
    +
    +## 区分値定義
    +
    +| 論理名             | 物理名          | 値  | バージョン | コメント |
    +| ------------------ | --------------- | --- | ---------- | -------- |
    +| ゲスト             | guest           | 01  | 1          |          |
    +| 未認証ユーザー     | unauthenticated | 02  | 1          |          |
    +| 登録ユーザー       | user            | 03  | 1          |          |
    +| プレミアムユーザー | premium_user    | 04  | 2          |          |
    +| 開発者             | developer       | 05  | 0          |          |
    +| テスター           | tester          | 06  | 0          |          |
    +| 管理者             | administrator   | 07  | 0          |          |

    メッセージ定義

    メッセージ定義サンプル

    md
    ## メッセージ定義
    +
    +| 識別子 | レベル | ステータス | メッセージ                                 | コメント                     |
    +| ------ | ------ | ---------- | ------------------------------------------ | ---------------------------- |
    +| 10001  | E      | 400        | ユーザー名またはパスワードが間違っています | ログイン画面で発生           |
    +| 10002  | W      |            | 文字数オーバーです                         | ログイン画面で発生           |
    +| 10003  | E      | 500        | {domain}は無効なユーザードメインです       | ユーザーの所属が異なっている |
    +| 10004  | F      | 500        | EntraIDに接続できません                    | ログインのバックエンドで発生 |

    Web API 設計書

    API 定義書は openapi.yaml で記載すること。

    詳細はOpenAPI Specification 3.0.3規約 を参考にする。

    プログラム設計書(バッチ、非同期タスクなど)

    プログラム設計書サンプル

    md
    # BAT01 xxx 計算
    +
    +## 処理概要
    +
    +- xxx(なぜこれが必要なのか)
    +- xxx受信の後続処理で起動し、xxx計算を行いxxxトランに登録する(処理の概略)
    +
    +## 処理シーケンス
    +
    +\`\`\`plantuml
    +@startuml
    +!theme toy
    +
    +participant システム
    +database DB
    +
    +note over システム: 各種インプット取得
    +
    +システム -> DB: 業務日付取得 [日付マスタ]
    +システム -> DB: 計算対象抽出xxx\\n[xxx受信管理トラン]\\n[xxx受信ワーク]\\n[xxxマスタ]\\n[yyyマスタ]\\n[zzzマスタ]
    +システム -> システム: 支払い差し引き金額計算(※ビジネスロジック1)
    +システム -> DB: 登録\\n[xxxトラン]
    +システム -> DB: 更新\\n[xxx予測ワーク]
    +
    +@enduml
    +\`\`\`
    +
    +## ビジネスロジック
    +
    +### ビジネスロジック1
    +
    +\`\`\`txt
    +支払金額 = 受信ワーク.商品コード * xxx * xxx - yyyy
    +
    +IF xxx 区分
    +  支払金額 = 支払金額 * 支払い係数 + (支払金額 - 前回発注金額)/2
    +END
    +\`\`\`
    +
    +## DB 項目
    +
    +### 取得
    +
    +- xxxマスタ.支払い金額
    +- xxxマスタ.特定商品区分
    +- yyyマスタ.新古品フラグ
    +- zzzマスタ.前回発注金額
    +
    +抽出条件:
    +
    +- xxx受信管理トラン.業務日付 = 業務日付
    +- xxx受信管理トラン.処理連番 = xxx受信管理トラン の最新の処理連番
    +
    +### 登録
    +
    +- xxxトラン.会社コード = xxx
    +- xxxトラン.処理日付 = xxx
    +- xxxトラン.xxx区分 = xxx
    +- xxxトラン.支払金額 = ビジネスロジック1計算結果
    +
    +### 更新
    +
    +xxx 予測ワーク:
    +
    +- xxx 予測ワーク.優先度
    +- xxx 予測ワーク.処理予定日

    プログラム設計書(Web API)

    Web APIについても、プログラム設計書(バッチ、非同期タスクなど)と同様に機能ID単位で作成する。

    ただし、Web APIにおいては openapi.yaml と重複する部分で自明な内容(例えば、リクエストパラメータの定義や、レスポンス項目)については、重複するため記載を省略する。

    もし、検索APIで複数のテーブルを参照して結果を応答する場合に、項目の由来を示すため、下表のような形式を定義すること。

    Web API応答例

    ParameterDescriptionSettingsNote
    last_name氏名 (姓)m_user
    first_name氏名 (名)m_user
    last_name_kana氏名カナ (姓)m_user
    first_name_kana氏名カナ (名)m_user
    date_of_birth生年月日m_user_detail
    gender_type性別区分m_user_detail
    tel電話番号m_user_detail
    occupation_type職業区分m_user_detail
    zipcode郵便番号m_user_detail

    ※Descriptionは openapi.yaml 側の description で記載済みであれば、省略すること ※Noteは何かしら加工処理により生み出された項目であれば、計算ロジックを記載する

    I/F 定義書

    I/F 定義書は、システム間の連携について定義と、その受信/配信処理の設計書です。

    システム I/F は連携先の対向システムが存在するため、認識齟齬が無いように、どのようなプロトコル・項目であるかを定義する必要がある。

    I/F設計書サンプル

    md
    # IF01 設備有効開始受信
    +
    +設備有効開始の取り込みを行う。
    +
    +## 対向システム
    +
    +| 連携元     | 連携先 |
    +| ---------- | ------ |
    +| A システム | Future |
    +
    +## 環境情報
    +
    +### Input
    +
    +| Item             | Value                                          |
    +| ---------------- | ---------------------------------------------- |
    +| 連携 S3 バケット | \`\${env}-example-import\`                        |
    +| プレフィックス   | \`activate/year=\${yyyy}/month=\${MM}/day=\${dd}/\` |
    +| ファイル名       | \`\${yyyy}-\${mm}-\${dd}-\${hh}-\${MM}-\${SS}.csv\`    |
    +| 保持期限         | 3 年                                           |
    +
    +### Output
    +
    +| Item             | Value                                          |
    +| ---------------- | ---------------------------------------------- |
    +| 連携 S3 バケット | \`\${env}-example-import\`                        |
    +| プレフィックス   | \`activate/year=\${yyyy}/month=\${MM}/day=\${dd}/\` |
    +| ファイル名       | \`\${yyyy}-\${mm}-\${dd}-\${hh}-\${MM}-\${SS}.csv\`    |
    +| 保持期限         | 3 年                                           |
    +
    +## 連携元定義
    +
    +| Category | Item                                | Value     | Memo                 |
    +| -------- | ----------------------------------- | --------- | -------------------- |
    +| Protocol | 連携方式(ファイル/API/ストリーム) | ファイル  |                      |
    +|          | 連携タイミング(随時/定時)         | 定時      |                      |
    +|          | 頻度                                | 1 回/日   |                      |
    +|          | 起動時間                            | **16:00** |                      |
    +|          | 処理完了期限                        | **16:00** |                      |
    +|          | 未着チェック(なし/WARN/ERROR)     | WARN      |                      |
    +|          | 全件/差分                           | 差分      |                      |
    +|          | 0 件時連携                          | あり      |                      |
    +| Format   | ファイル種別                        | **CSV**   |                      |
    +|          | レイアウト                          | RFC 8259  |                      |
    +|          | 文字コード                          | UTF-8     |                      |
    +|          | 改行コード                          | LF        |                      |
    +|          | 圧縮                                | -         |                      |
    +|          | 暗号化                              | -         |                      |
    +|          | ヘッダ行                            | あり      |                      |
    +|          | 項目順                              | 固定      | 項目順は入れ替え不可 |
    +|          | 機密情報                            | -         |                      |
    +
    +### 項目定義
    +
    +| Name       | Physical Name   | Type   | Length | Precision | Enum | Format     | Sensitive | Example    | Memo |
    +| ---------- | --------------- | ------ | ------ | --------- | ---- | ---------- | --------- | ---------- | ---- |
    +| 会社コード | company_cd      | string | 5      | -         | -    | -          | -         | 00001      |      |
    +| 設備コード | device_cd       | string | 8      | -         | -    | -          | -         | 00000052   |      |
    +| 有効開始日 | activation_date | string | 10     | -         | -    | YYYY-MM-DD | -         | 2022-10-16 | [^1] |
    +
    +[^1]: 現在日以降である必要があるが、受信ではテスト観点で過去日も許容する
    +
    +#### サンプル
    +
    +\`\`\`csv
    +company_cd,device_cd,activation_date
    +12121,00000052,2022-03-01
    +12121,00000053,2022-03-30
    +\`\`\`
    +
    +## 連携先定義
    +
    +| Category | Item                                | Value     | Memo                 |
    +| -------- | ----------------------------------- | --------- | -------------------- |
    +| Protocol | 連携方式(ファイル/API/ストリーム) | ファイル  |                      |
    +|          | 連携タイミング(随時/定時)         | 定時      |                      |
    +|          | 頻度                                | 1 回/日   |                      |
    +|          | 起動時間                            | **16:00** |                      |
    +|          | 処理完了期限                        | **16:00** |                      |
    +|          | 未着チェック(なし/WARN/ERROR)     | WARN      |                      |
    +|          | 全件/差分                           | 差分      |                      |
    +|          | 0 件時連携                          | あり      |                      |
    +| Format   | ファイル種別                        | **CSV**   |                      |
    +|          | レイアウト                          | RFC 8259  |                      |
    +|          | 文字コード                          | UTF-8     |                      |
    +|          | 改行コード                          | LF        |                      |
    +|          | 圧縮                                | -         |                      |
    +|          | 暗号化                              | -         |                      |
    +|          | ヘッダ行                            | あり      |                      |
    +|          | 項目順                              | 固定      | 項目順は入れ替え不可 |
    +|          | 機密情報                            | -         |                      |
    +
    +## 処理概要
    +
    +- ファイル定義に則ったバリデーションを実施
    +- 次の項目変換定義に従い加工し、出力先テーブルに Merge する
    +- 受信完了後、 Completed: YYYY-MM-DDTHH:MI:SS.SSS のタグを追加する
    +
    +## 処理シーケンス
    +
    +\`\`\`plantuml
    +@startuml
    +!theme toy
    +
    +participant システム
    +participant S3
    +database DB
    +
    +システム -> DB: 処理日付取得\\n[日付管理]
    +システム -> S3: 対象ファイルの存在チェック
    +alt ファイルが存在しなかった場合
    +   システム -> システム: 処理終了して、次の処理を待機
    +end
    +システム -> DB: シーケンスの取得\\n[シーケンスオブジェクト]
    +システム -> DB: 1.実行開始レコード追加\\n[IF受信管理]
    +システム -> S3: 対象ファイルを取得
    +システム -> DB: 対象マスタのTruncate
    +システム -> DB: ファイル連携処理
    +システム -> システム: 連携件数確認
    +システム -> S3: 処理済対象ファイルを格納
    +システム -> DB: 2.実行終了状態の更新\\n[IF受信管理]
    +@enduml
    +\`\`\`
    +
    +## DB 項目
    +
    +### 参照
    +
    +なし
    +
    +### 登録
    +
    +リストワークに以下のカラムでレコードを登録する
    +
    +- xxx ワーク.会社コード
    +- xxx ワーク.処理日付
    +- xxx ワーク.yyy 区分
    +
    +### 更新
    +
    +なし
    +
    +## ビジネスロジック
    +
    +特記事項なし
    +
    +## エラー処理
    +
    +| Pattern            | Description                                | recovery                               |
    +| ------------------ | ------------------------------------------ | -------------------------------------- |
    +| フォーマットエラー | 連携元から提供されているデータ形式が想定外 | 連携元またはIFの処理内容の修正と再実行 |
    `,66))])}const u=a(h,[["render",r]]);export{o as __pageData,u as default}; diff --git a/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.js b/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.js new file mode 100644 index 00000000..ce80c263 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.js @@ -0,0 +1 @@ +import{_ as a,c as o,a3 as t,o as i}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"Web API 設計標準","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/API_Design.md","filePath":"documents/forOpenAPISpecification/API_Design.md"}'),l={name:"documents/forOpenAPISpecification/API_Design.md"};function r(d,e,c,n,h,s){return i(),o("div",null,e[0]||(e[0]=[t('

    Web API 設計標準

    OpenAPI Specification 規約を利用するに当たり、想定する Web API の設計ルールをまとめる。このルールに必ずしも準じる必要は無いが、このような設計を暗黙的に考慮し OpenAPI Specification 規約を作成している。

    HTTP メソッド

    実現したい操作により、以下のような使い分けを想定する。HEAD(リソースの存在チェック)、GET(参照)、POST(新規作成)、PUT(更新)、PATCH(一部更新)、DELETE(削除)。

    HTTP ステータス

    RFC 7231で定義されているレスポンスステータスコードを利用します。

    RFC9205日本語訳)の方針に原則則る。ユースケース別に利用すべき HTTP ステータスコードを記載します。

    共通

    • バリデーションエラー:400 Bad Request
    • 業務エラー:400 Bad Request
    • 認証エラー:401 Unauthorized
    • 認可エラー:403 Forbidden
    • システムエラー:500 Internal Server Error

    GET

    • 正常系:200 OK
      • 検索系 API で結果 0 件の場合も、 200 OK を返すとする
    • パスキー検索系 API で対象リソースが存在しないエラー:404 Not Found

    POST

    • 正常系(同期):201 Created
    • 正常系(非同期):202 Accepted
    • 一意制約違反エラー:409 Conflict
    • 親リソースが存在しないエラー:404 Not Found

    PUT

    • 正常系(同期):200 OK
    • 正常系(非同期):202 Accepted
    • 対象リソースが存在しないエラー:404 Not Found

    DELETE

    • 正常系:204 No Content
      • もし、削除した項目の情報を応答する場合は 200 OK とする
    • 対象リソースが存在しないエラー:404 Not Found

    API バージョン管理

    • /v1, /v2 といったパスで表現する
    • 型名変更、必須パラメータの追加、レスポンスの桁数変更、などをするときはバージョンを上げることを検討する

    パラメータの命名

    boolean 型である場合、 [a-zA-Z0-9-_]+_flag という命名は非推奨とする。

    is_[a-zA-Z0-9-_]+has_[a-zA-Z0-9-_]+ などの命名を代わりに検討する

    ',22)]))}const P=a(l,[["render",r]]);export{p as __pageData,P as default}; diff --git a/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.lean.js b/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.lean.js new file mode 100644 index 00000000..ce80c263 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_API_Design.md.zqx7gHFS.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,a3 as t,o as i}from"./chunks/framework.BDUoXecB.js";const p=JSON.parse('{"title":"Web API 設計標準","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/API_Design.md","filePath":"documents/forOpenAPISpecification/API_Design.md"}'),l={name:"documents/forOpenAPISpecification/API_Design.md"};function r(d,e,c,n,h,s){return i(),o("div",null,e[0]||(e[0]=[t('

    Web API 設計標準

    OpenAPI Specification 規約を利用するに当たり、想定する Web API の設計ルールをまとめる。このルールに必ずしも準じる必要は無いが、このような設計を暗黙的に考慮し OpenAPI Specification 規約を作成している。

    HTTP メソッド

    実現したい操作により、以下のような使い分けを想定する。HEAD(リソースの存在チェック)、GET(参照)、POST(新規作成)、PUT(更新)、PATCH(一部更新)、DELETE(削除)。

    HTTP ステータス

    RFC 7231で定義されているレスポンスステータスコードを利用します。

    RFC9205日本語訳)の方針に原則則る。ユースケース別に利用すべき HTTP ステータスコードを記載します。

    共通

    • バリデーションエラー:400 Bad Request
    • 業務エラー:400 Bad Request
    • 認証エラー:401 Unauthorized
    • 認可エラー:403 Forbidden
    • システムエラー:500 Internal Server Error

    GET

    • 正常系:200 OK
      • 検索系 API で結果 0 件の場合も、 200 OK を返すとする
    • パスキー検索系 API で対象リソースが存在しないエラー:404 Not Found

    POST

    • 正常系(同期):201 Created
    • 正常系(非同期):202 Accepted
    • 一意制約違反エラー:409 Conflict
    • 親リソースが存在しないエラー:404 Not Found

    PUT

    • 正常系(同期):200 OK
    • 正常系(非同期):202 Accepted
    • 対象リソースが存在しないエラー:404 Not Found

    DELETE

    • 正常系:204 No Content
      • もし、削除した項目の情報を応答する場合は 200 OK とする
    • 対象リソースが存在しないエラー:404 Not Found

    API バージョン管理

    • /v1, /v2 といったパスで表現する
    • 型名変更、必須パラメータの追加、レスポンスの桁数変更、などをするときはバージョンを上げることを検討する

    パラメータの命名

    boolean 型である場合、 [a-zA-Z0-9-_]+_flag という命名は非推奨とする。

    is_[a-zA-Z0-9-_]+has_[a-zA-Z0-9-_]+ などの命名を代わりに検討する

    ',22)]))}const P=a(l,[["render",r]]);export{p as __pageData,P as default}; diff --git a/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.js b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.js new file mode 100644 index 00000000..efce26de --- /dev/null +++ b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.js @@ -0,0 +1,426 @@ +import{_ as t,c as k,G as i,a3 as a,b as r,w as n,a4 as E,B as l,o as p,a as d}from"./chunks/framework.BDUoXecB.js";const A=JSON.parse('{"title":"OpenAPI Specification 2.0規約","description":"","frontmatter":{"sidebarDepth":4,"title":"OpenAPI Specification 2.0規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"OpenAPI,Swagger,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md","filePath":"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md"}'),c={name:"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md"};function g(y,s,o,b,u,m){const e=l("page-title"),h=l("Mermaid");return p(),k("div",null,[i(e),s[1]||(s[1]=a(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。 ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。 また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    OpenAPI Specification 2.0(Swagger, OAS2)定義についてのコーディング規約をまとめます。より新しいバージョンとして OAS 3.0.3 規約(作成中)がありますので、ご注意ください。

    本規約の前提条件に従い作成されています。ToC 向けの LSUDs(Large Set of Unknown Developers)な Web API にはマッチしない可能性があります。

    Web API 自体の設計については範囲外としますが、API 設計標準に利用するステータスコードなどは記載しています。

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    ファイルフォーマット

    ファイルフォーマット規約に準じる。

    要素規約

    Swagger の基本構造は以下の、swagger・info・host・basePath・schemes・paths・definitions から構成される。

    要素の並び順は、原則 OpenAPI Specification 2.0(Swagger, OAS2) に記載された順番に記載する。

    yaml
    swagger: "2.0"
    +info:
    +  title: サンプルAPI
    +  description: サンプルAPIはシステムにおけるユーザーのアカウント、契約、支払い、注文履歴などを管理できます
    +  version: 1.0.0
    +host: api.example.com
    +basePath: /v1
    +schemes:
    +  - https
    +consumes:
    +  - application/json
    +produces:
    +  - application/json
    +tags:
    +  - name: user
    +    description: ユーザー
    +paths:
    +  /users/{user_id}/account:
    +    get:
    +      tags:
    +        - user
    +      summary: API-001 ユーザーアカウント取得
    +      description: ユーザーのアカウント情報を取得します
    +      operationId: getUserAccount
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            $ref: "#/definitions/UserAccount"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "404":
    +          description: リソースが存在しない
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: 内部エラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: その他予期せぬエラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +definitions:
    +  UserAccount:
    +    required: [user_id, user_name, account_type, register_at]
    +    properties:
    +      user_id:
    +        type: string
    +        description: ユーザーID
    +        minLength: 4
    +        maxLength: 16
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        description: ユーザー名
    +        minLength: 1
    +        maxLength: 128
    +        example: 未来太郎
    +      account_type:
    +        type: string
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        minLength: 1
    +        maxLength: 1
    +        example: "1"
    +      register_at:
    +        type: string
    +        description: 登録日時
    +        format: date-time
    +        example: "2023-04-01T11:30:45.000Z"

    swagger

    • 2.0 固定とする

    info

    info オブジェクトには Web API に関するメタデータを記載する。 title, description, version を必須項目とする。

    フィールド名必須記載内容
    titleWeb API の総称
    descriptionWeb API の簡単な説明
    versionOpenAPI ドキュメントのバージョン
    termsOfService利用規約の URL
    contact連絡先情報
    licenseライセンス情報

    title

    WebAPI の総称を記載する。システム名やサービス名 + API のような命名とすることを推奨する。 例. X System API

    desctiption

    Web API が提供する機能の概要・想定する利用者やユースケース・制約などを記載する。

    version

    この API 仕様のドキュメントのバージョンを記載する。アプリケーションのバージョン(git tag やリリースで管理するようなバージョン)とは別である。

    本規約の推奨は major.minor 形式である。 0.1 固定で開発を進め、サービスのリリース時に 1.0 とし、その後の項目やオプション、パスの追加ごとに 1.1 などインクリメントしていく。もし他チームへのドキュメントの頻繁な共有が必要だれば、1.0 のかわりに 2023.03.26 といった形式も許容する。

    host

    OpenAPI 3 系と異なり、 Swagger では複数のホストを指定できない。そのため host には開発環境(local, develop, staging, production というステージ区別であれば、develop)で用いる IP、ポート番号を指定する。他チームに提供するサンドボックス環境を用意する場合は、そのエンドポイントを指定しても良い。localhost などのローカル開発への向き先変更は、ツール側で対応している事が多く上書き可能なため記載しない。API 定義書は予期せぬタイミングで他チームに展開する必要がしばしばあり、お試しで触っても良い環境があることを示すことで情報量を増やし、円滑なコミュニケーションを促進することを狙いとする。

    yaml
    # OK
    +host: dev.api.example.com:80
    +host: sandbox.api.example.com:80
    +
    +# NG(ローカル開発で用いる環境を指定する)
    +host: localhost:8001
    +
    +# NG(LSUDs向けのWeb API開発では不用意に本番環境を触られたくないときが多く、避けるべきである)
    +host: prod.api.example.com:80

    basePath

    作成する Swagger 定義の URL パスの全てで、共通するプレフィックスを持つ場合に指定する。Swagger の仕様上、先頭には / が必須であるため、以下のように定義する。

    yaml
    # OK
    +basePath: /v1
    +basePAth: /api/v2
    +
    +# NG
    +basePath: v2

    schemes

    最終的に利用するスキーマのみを記載する。通常、HTTP 通信での Web API 提供は行わないと考えられるため、 https 固定で設定する。ローカル開発では http を指定することも多いが、ツールで生成されたコードのオプションで通常書き換えが可能なため、http の併記は許可しない。ただし、サーバサイドのマイクロサービス同士の通信で、VPC(プライベートセグメント)内であり、SSL 通信を本当に利用しない場合は http と記載する。

    yaml
    # OK
    +schemes:
    +  - https
    +
    +# NG(httpの指定は通常、Web APIサーバアプリケーションの開発時を除いて不要であるためわざわざ追加しない)
    +schemes:
    +  - http
    +  - https

    もし、WebSocket スキームを提供するサービスの定義である場合は、wss を(追加で)指定する。定義上は https 側との共存ができないため、ファイル定義を分けるようにする。

    security, securityDefinitions

    Swagger では、次の認証タイプを記載できる(詳細)。

    1. ベーシック認証
    2. API キー(リクエストヘッダ, クエリパラメータ)
    3. OAuth2

    もし、認証が必須であれば記載する。全ての Web API で未認証を受け入れる場合は記載しない。認証の要否が API ごとに異なる場合は、各 API 側で security: [] と記載しして上書き定義する必要がある。

    yaml
    # OK
    +securityDefinitions:
    +  OAuth2:
    +    type: oauth2
    +    flow: accessCode
    +    authorizationUrl: https://example.com/authorize
    +    tokenUrl: https://example.com/.well-known/jwks.json
    +
    +# OK(OAuth2認証ありの場合)
    +paths:
    +  /users/{user_id}/account:
    +    get:
    +      ...
    +      security:      # 認証が不要な場合は security: [] と記載する
    +        - OAuth2: []

    produces

    Web API が応答する際の MIME タイプを指定します。未指定の場合に、コード生成などツール側で予期しない動作をすることがあるため、固定で指定する。新規構築の Web API であれば application/xml は不要と通常は考えられるので、application/json を記載する。また、RFC 7807 Problem Details for HTTP APIs では Content-Type に application/problem+json を設定するとあるが、一部のコード生成ツールにおいて、 application/problemapplication/problem+json の使い分けが難しいため、併記を必須としない。OpenAPI Specification の 3 系ではステータスコードごとに Content-Type を指定できるため、3 系への移行も検討する。

    yaml
    # OK(applicaton/problem+json 無しでも良い)
    +produces:
    +  - application/json
    +
    +# OK(利用するツールで複数のContent-Typeの使い分けが実現しやすい場合は以下でも良い)
    +produces:
    +  - application/json
    +  - application/problem+json

    ある API のみ、バイナリ(画像データなど)を返すなどのケースがあれば、 paths 配下で上書き指定する。

    yaml
    paths:
    +  /logo:
    +    get:
    +      summary: API-002 ロゴ画像を取得する
    +      description: サービスのロゴ画像をpng形式で取得します
    +      operationId: getLogoImage
    +      produces:
    +        - image/png
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            type: file

    consumes

    Web API が要求を受け入れる際の MIME タイプを指定する。未指定の場合に、コード生成などツール側で予期しない動作をすることがあるため、固定で指定する。新規構築の Web API であれば application/xml は不要と通常は考えらえるので、application/json だけ記載する。

    仕様上、 consumes は POST, PUT, PATCH を利用した操作のみに影響し、GET などリクエストボディが無い操作では無視される。

    yaml
    # OK
    +consumes:
    +  - application/json

    tags

    タグを用いて、API 操作をグループ化することができる。ドキュメントやツールにとって非常に重要であるため、 必須 で指定する。

    • Swagger UI(HTML ドキュメント)の順序を制御できる
      • 未指定の場合は、登場順で生成されてしまう
    • 命名は、 単数形 で、小文字かつ半角スペース区切り で記載する
      • コード生成で利用され、Go ではパッケージ名や TypeScript の Class 単位となるため、シンプルな命名にする
      • HTML ドキュメントで参照する場合の可読性を上げるため、単語を半角スペース区切りとする
    • タグごとに description も必須で記載する
    yaml
    # NG
    +tags:
    +  - name: product
    +    description: 製品
    +  - name: store
    +    description: 店舗
    +  - name: user account
    +    description: ユーザーアカウント
    +
    +# NG
    +tags:
    +  - name: products
    +  - name: stores
    +  - name: user_account
    +  - name: UserAccount

    paths

    paths 配下に個々の API エンドポイントを記載する。

    paths は根幹となる定義部分であり、以下のように重要な定義が続く。それぞれ重要な要素ごとに規約を示す。

    sh
    Paths              # API定義全体
    + Path           # URLパス
    + Operation    # HTTPメソッド
    + Parameter  # リクエストパラメータ
    + Responses  # レスポンス
    + Response # ステータスコードに応じたレスポンス

    Paths > Path

    記載順は以下のルールである。

    • トップレベルの tags でグルーピングした順番に記載する
    • URL は短いものから並べる
    • HTTP メソッドは、 head, get, post, put, patch, delete の順にする
    yaml
    # 並び順の例(HTTPメソッドの子要素はtags以外を省略)
    +tags:
    +  - user
    +  - item
    +paths:
    +  /users:
    +    get:
    +      tags:
    +        - user
    +      ...
    +  /users/{user_id}/account:
    +    get:
    +      tags:
    +        - user
    +      ...
    +  /users/{user_id}/account:
    +    patch:
    +      tags:
    +        - user
    +      ...
    +  /items:
    +    get:
    +      tags:
    +        - item
    +      ...

    Paths > Path > Operation

    URL に紐づく HTTP メソッドで、1 つの操作を定義します。

    • summary
      • API の操作概要を summary に記載する
      • 機能 ID があるのでれば、ここに記載する
      • 例: API-001 ユーザアカウント取得
    • description
      • API の振る舞いの詳細や注意点(ある条件で区分の値が変わったり、権限についての注意、要素が空になるなど)を記載する
    • operationId
      • コード生成で利用される項目なので、必須で指定する
      • 原則、camelCase\${HTTPメソッド}\${機能物理名} で記載する(例: getUser, postUser, deleteUser)
        • ただし、HTTP メソッドに紐づかない操作であれば、HTTP メソッドの代わりに個別の動詞(例: searchUser, moveItemList, addPermission)を当てはめる
        • コード生成対象によっては、get_user(Python)、GetUser(Go)といった命名規約にしたくなるが、通常はコード生成側で配慮してくれる
    • consumes, produces
      • トップレベルに application/json を記載しているため、同様であれば記載しない
    yaml
    /users:
    +  get:
    +    tags:
    +      - user
    +    summary: API-001 ユーザーアカウント取得
    +    description: |
    +      ユーザーのアカウント情報を取得します。
    +      ログイン情報が不正の場合はアカウントが存在しても404を返すことがあります。
    +      アカウント種別については【別紙】X_定数一覧 を参照ください。
    +    operationId: getUser
    +    parameters: ...
    +    responses: ...

    Paths > Path > Parameter

    リクエストの定義を記載する。

    • name

      • snake_case で物理名を記載します
      • HTTP メソッドが POST/PUT/HTTP の場合は body に固定する
    • in

      • 仕様上、必須で query, header, path, formData, body のどれかを指定する
      • HTTP メソッドが HEAD/GET/DELETE の場合
        • path, query のみの利用を推奨する
      • HTTP メソッドが POST/PUT/HTTP の場合
        • body のみの利用を推奨する
    • required

      • 必須の場合のみ記載する。デフォルト false であるため、任意項目の場合は記載しない
      • POST, PUT で用いるリクエストボディに対しては、 required: true を必ず指定する
        • リクエストボディ自体が未指定だった場合、各項目の required: true を指定していてもサーバサイドのチェックが有効に働かないことがあるため
    • pattern, minLength, maxLength などの条件について

    • schema

      • リクエストボディは、$ref を用いて、#/definitions 配下に記載する。$ref を用いない記載は許可しない。
      yaml
        # OK
      +  - name: body
      +    in: body
      +    required: true
      +    schema:
      +      $ref: "#/definitions/PutUserAccount"
      +
      +  # NG
      +  - name: body
      +    in: body
      +    required: true
      +    type: object
      +    required: [user_name, account_type, register_at, point]
      +    properties:
      +      user_name:
      +        type: string
      +        ...
      +      account_type:
      +        type: string
      +        ...
      • モデル名は、 {HTTPメソッド名}{物理名} の PascalCase で記載する
        • 例: PutUserAccount、PostUserAccount, PatchUserAccount
    • desription

      • 項目の論理名や補足説明を記載する
    yaml
      /users/{user_id}/account:
    +    get:
    +      ...
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +      responses:
    +        ...
    +    put:
    +      ...
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +        - name: body
    +          in: body
    +          required: true
    +          schema:
    +            $ref: "#/definitions/PutUserAccount"
    +      responses:
    +        ...

    Paths > Path > Responses

    レスポンスの定義を記載する。

    • description
      • 必須で記載する
    • ステータスコードは発生し得る全てのパターンを列挙する
      • 正常系の 200 OK201 Created202 Accepted 204 No Content 以外の、異常系も忘れず記載する
      • 通常発生しない、サーバサイドの内部的な予期せぬエラー 500 Internal Server Error は必須で記載する
      • リクエストパラメータが存在する場合は 400 Bad Request が、認証がある場合は 401 Unauthorized403 Forbiddend が考えられる
      • default は必須で指定する
        • 例えば、URL 自体が存在しない場合の 404 NotFound や、提供していない HTTP メソッドを呼び出した場合に 405 Method Not Allowed を、自動生成したサーバサイドの実装が返すことがある。この場合、 default を指定していないとフロントエンド側でパースエラーとなることがあるため。各 API エンドポイントのサーバサイド側の実装が応答しないコードは、 default でまとめて指定させる
    yaml
      /users/{user_id}/account:
    +    get:
    +      ...
    +      parameters:
    +        ...
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            $ref: "#/definitions/Users"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "404":
    +          description: リソースが存在しない
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: 内部エラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: その他予期せぬエラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +    post:
    +      ...
    +      parameters:
    +        ...
    +      responses:
    +        "201":
    +          description: 新規登録に成功
    +          schema:
    +            $ref: "#/definitions/UserAccount"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "409":
    +          description: すでに登録済みのユーザーIDを用いている
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: Internal Server Error
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: "その他予期せぬエラー"
    +          schema:
    +            $ref: "#/definitions/Error"

    definitions

    • モデル名は、PascalCase で記載する

    • 種別が配列の場合、ネストして定義するのではなく、 $ref を活用する

    • もし、リソース名が単複同形で type: array と区別できない場合、 List を末尾に付けて区別する

      • そうではない場合は s を付けて表現する
      yml
      # OK
      +- in: query
      +  name: product_types
      +  type: array
      +  description: プロダクト種別
      +
      +# NG
      +- in: query
      +  name: product_type_list # xxx_listはNG
      +  type: array
      +  description: プロダクト種別
    • リクエストボディ

      • 必須項目は required で項目を全て指定する
      • その他、項目定義として可能であればできる限り細かく指定する
    • レスポンスボディ

      • type, description, exampleが必須。
      • format, minLength, maxLength などの型桁はできる限り細かく指定する
        • 多くのクライアントは RDB をデータストアに持ち、それらの型定義の参考にするためである
      • enum指定してはならない
        • 一部のクライアント側のコード生成で、存在しない区分値を指定するとエラーになる(レスポンスを受信できない)。これはサーバサイドで区分値を増やす必要があるケースで、サーバ・クライアントの同期をとる必要があり困難なケースが多い。例えばクライアントがモバイルである場合、サーバサイドで区分値を追加した場合には、全端末でアプリアップデートが必要となリ、事実上 API 互換性がなくなるため、v1 を保持しつつ、区分値を追加した v2 の Path を追加する必要が出てくる
      • pattern の指定は不要
        • pattern も enum と同様に、サーバサイドが当初よりリクエストのバリデーションを緩めた場合に、古い pattern でクライアントがレスポンスを検証すると動作しなくなるため。クライアントサイドが RDB など書き込み時のスキーマが厳密であったとしても、正規表現レベルの厳格さで書き込みチェックをすることは無いと考えられる
      • example の値は、 例えば Prism でサーバのモックとして動かす場合に返される値になるため、できる限り具体的な値にする
      • 空文字、false, 0 値を返しうる項目に、x-omitempty :false を付与する
        • ツールの実装によっては、0 値や false を返した場合に JSON フィールドから除外される(omit される)ことがある
    • 日付は 2023-04-02 といった ISO 8601 date フォーマットを推奨する。この場合は fromat: date を指定する

    • 日時は 2023-04-02T15:04:05+09:00 といった ISO 8601 datetime フォーマットを推奨する。この場合は、 format: date-time を指定する

    • エラーについて

      • API 全体で一貫したエラーを返すことを推奨とし、そのために "#/definitions/Error" といった共通のエラーモデルを利用を推奨する
      • RFC 7807 Problem Details for HTTP APIs があるため、レイアウトを参考にする
    yaml
    definitions:
    +  UserAccounts:
    +    type: array
    +    items:
    +      $ref: "#/definitions/UserAccount"
    +  UserAccount:
    +    required: [user_id, user_name, account_type, register_at, point]
    +    properties:
    +      user_id:
    +        type: string
    +        description: ユーザーID
    +        minLength: 4
    +        maxLength: 16
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        description: ユーザー名
    +        minLength: 1
    +        maxLength: 128
    +        example: 未来太郎
    +      account_type: # enumは指定しないこと
    +        type: string
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        minLength: 1
    +        maxLength: 1
    +        example: "1"
    +      register_at:
    +        type: string
    +        format: date-time
    +        description: 登録日時
    +        example: "2023-04-01T11:30:45.000Z"
    +      point:
    +        type: integer
    +        format: int64
    +        description: ポイント(0ポイント以上)
    +        exampe: 421
    +  PostUserAccount:
    +    required: [user_id, user_name, account_type, register_at]
    +    properties:
    +      user_id:
    +        type: string
    +        minLength: 4
    +        maxLength: 16
    +        pattern: ^[0-9a-zA-Z_-]*$
    +        description: ユーザーID
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        minLength: 1
    +        maxLength: 128
    +        description: ユーザー名
    +        example: 未来太郎
    +      account_type:
    +        type: string
    +        minLength: 1
    +        maxLength: 1
    +        enum: ["1", "2", "3", "4"]
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        example: "1"
    +      register_at:
    +        type: string
    +        format: date-time
    +        description: 登録日時
    +        example: "2023-04-01T11:30:45.000Z"
    +  Error:
    +    description: エラー (RFC 7807)
    +    type: object
    +    required: [title, status, detail]
    +    properties:
    +      title:
    +        type: string
    +        description: タイトル
    +        minLength: 1
    +        maxLength: 64
    +        example: request validation error
    +      status:
    +        type: integer
    +        format: int32
    +        description: HTTPステータスコード
    +        minimum: 400
    +        maximum: 600
    +        exclusiveMaximum: true
    +        example: 503
    +      message_cd:
    +        type: string
    +        description: 状態の切り分けとアクションが一意に特定できるメッセージコード
    +        minLength: 1
    +        maxLength: 16
    +        example: APPERR-0001
    +      detail:
    +        type: string
    +        description: エラーメッセージ詳細
    +        minLength: 1
    +        maxLength: 128
    +        example: user name is too long

    バリデーションについて

    OpenAPI 定義を記載するにあたり、バリデーションをどこまで厳密に定義すべきかという議論はよく行いがちである。

    リクエストパラメータの各項目に対して、必須・型・桁・区分値・日付・正規表現のチェックが行える。レスポンスで用いるモデルについても同様に設定でき、enum, pattern 以外は API の利用者(クライアント)側の DB 設計などに必要な型桁情報を渡すのに有用であるため、できる限り詳しく指定する。

    必須

    必須パラメータのみ required: true を定義する

    デフォルト値

    パラメータにデフォルト値がある場合はdefault を定義する。

    yaml
    # ex. enum
    +name: limit
    +type: number
    +format: integer
    +minimum: 1
    +maximum: 100
    +default: 20
    +description: 検索結果の項目数上限(1~100が指定可能)

    【注意】API 公開後に、default 値を変更してはならない(API の互換性が崩れるため)。もし変更する場合は、API のバージョンを上げること。

    型・フォーマット

    型(type)は string(文字列), number(数値), integer(整数値), boolean(真偽値) array(配列), file(ファイル) のうちどれか指定する.

    フォーマット(format) は以下の型の詳細情報を示すもので、可能な限り設定する。

    • integer (整数)
      • int32, int64
    • number (数値)
      • float, double
    • string (バイナリ)
      • byte: Base64 でエンコードされた文字列
      • binary: バイト配列
    • string (日付)
      • date: RFC3339 full-date(例: 2023-07-21)
        • 項目名は _on を接尾辞につけることを推奨とする
      • date-time: RFC3339 date-time(例: 2023-07-21T17:32:28Z)
        • 項目名は _at を接尾辞につけることを推奨とする
    • string (その他)
      • password: Swagger UI で入力が隠される
      • その他、 email, uuid など Open API 仕様に存在しない任意のフォーマットを独自のドキュメント生成などのために記載しても良い

    データ型によって、利用できる桁を指定する項目が異なる。可能な限り設定する。

    • 文字列
      • 最大桁数:maxLength
      • 最小桁数:minLength
    • 数値または整数値
      • 最小値(境界値を含む):minimum
      • 最大値(境界値を含む):maximum
      • 境界値を含まない場合のみexclusiveMinimum: trueまたはexclusiveMaximum: trueを定義する。minimum, maximum で代用できる場合は利用しない
    • 配列:
      • 最大要素数:maxItems
      • 最小要素数:minItems
      • required: trueの場合は原則としてminItems: 1を定義する
      • uniqueItems は必須で指定する(通常は一意であるべき)

    【注意】API 公開後に、レスポンスの maxLength を以前より大きい値に変更してはならない。レスポンスの maxLength など API 利用者側システムの DB の ERD 定義のインプットになる事が多いため。もし行う場合は API のバージョンを上げることや、連携先に桁数変更の旨を調整するなどの考慮を行う。

    区分値

    区分値の場合は enum 属性を利用し、descriptionには区分値の論理名を記載する。

    yaml
    name: gender
    +type: string
    +enum: ["0", "1", "2", "9"]
    +description: |
    +  性別
    +    0: 不明
    +    1: 男
    +    2: 女
    +    9: 適用不能

    固定値

    固定値 の場合も enum を 1 つだけ指定して表現する。この場合もレスポンスで利用する場合は指定しない

    yaml
    name: file_layout
    +type: string
    +enum: ["json"]
    +description: ファイルレイアウト

    その他(正規表現)

    正規表現で表現できる文字列はpatternを利用して定義する。桁や区分値で代替できる場合は、pattern を用いない

    例:

    yaml
    remind_time:
    +  type: string
    +  description: リマインド時刻。(hh:mm)形式
    +  example: 23:59
    +  pattern: "^(2[0-3]|[01][0-9]):([0-5][0-9])$"

    ファイルアップロード

    Web API におけるファイルアップロードのよく利用される実装手段は、大きく分けて以下の 3 手法に分類できます

    1. ファイルのコンテンツを Base64 などにエンコードして、JSON の項目として設定し、リクエストボディで送る
      • メリット: 通常の JSON を扱うのとほぼ変わらないため楽。サムネイルなど限定されたユースケースの場合に向く
      • デメリット: 巨大なファイルを扱う場合などサーバリソース負荷が懸念。Base64 に変換する分 CPU 負荷は余計にかかる。ペイロードが膨れるためモバイルなどのクライアントでは帯域利用での懸念がある
    2. multipart/form-data ファイルを送信する
      • メリット: ファイルを Base64 に変換するといった作業が不要
      • デメリット: ブラウザ以外のクライアントにとって手間がかかる
    3. アップロード用に用いる、オブジェクトストレージの Signed URL を発行し、クライアントから直接ファイルをアップロードしてもらう

    本規約でファイルアップロードについて上記の 3. Signed URL を推奨する。API 呼び出しとしては次のようなフローとする。

    `,107)),(p(),r(E,null,{default:n(()=>[i(h,{id:"mermaid-1038",class:"mermaid",graph:"sequenceDiagram%0Aparticipant%20A%20as%20%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%0Aparticipant%20B%20as%20Web%20API%E3%82%B5%E3%83%BC%E3%83%90%0Aparticipant%20C%20as%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%0A%0AA-%3E%3EB%3A%20%E2%91%A0%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%85%88URL%E5%8F%96%E5%BE%97%0A%20%20B-%3E%3EC%3A%20Signed%20URL%E7%99%BA%E8%A1%8C%0A%20%20C--%3E%3EB%3A%20Signed%20URL%0A%20%20B--%3E%3EA%3A%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89URL%E3%80%81%E5%8F%97%E4%BB%98ID%EF%BC%88%E5%8A%A0%E3%81%88%E3%81%A6%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%81%84HTTP%20Method%E3%82%84%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E5%BF%9C%E7%AD%94%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%EF%BC%89%0A%0AA-%3E%3EC%3A%20%E2%91%A1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%0A%0AA-%3E%3EB%3A%20%E2%91%A2%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86(%E5%8F%97%E4%BB%98ID%E3%80%81%E3%82%AD%E3%83%BC%E3%80%81%E5%B1%9E%E6%80%A7)%0A%20%20B--%3E%3EA%3A%20%E5%8F%97%E4%BB%98%E5%AE%8C%E4%BA%86%0A"})]),fallback:n(()=>s[0]||(s[0]=[d(" Loading... ")])),_:1})),s[2]||(s[2]=a(`

    フローの ①、② はアプリケーション固有の紐づけルールにおいて Web API を設計すれば良いため、本規約で YAML の設定例は記載しない。フロー ② については Signed URL を用いたアップロードであり、アプリケーションの Web API 定義を書く必要はない。もし、監査ログなどのガバナンス上、直接オブジェクトストレージへの書き込みを許容されないケースは、B で Signed URL に相当する書き込み先を提供し、B を経由してファイルをアップロードする。

    上記どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    ファイルダウンロード

    ファイルアップロードと同様、オブジェクトストレージの Signed URL 経由を経由してのダウンロードさせる手法を推奨する。Web API としてはオブジェクトストレージにダウンロード用のファイルを書き込み、クライアントが取得するための Signed URL をレスポンスの JSON 項目に渡す方式である。

    もし、サムネイルやアイコン画像など、ファイル容量がごく小さい場合は Base64 にエンコードして JSON に埋め込んで渡しても良い。線引をどこに設置するかは本規約で定義しない。

    どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    CORS

    CORS(Cross-Origin Resource Sharing)のために、options メソッドの追記は 原則不要 とする。

    理由は以下である。

    • サーバ側
      • options メソッド対応は、API 使用ではなく実装レベルの機能横断的な処理(Java における Servlet Filter や Spring の Interceptor、Go における Middleware など)で行うことが大半であり、コード生成が不要
    • クライアント側
      • options メソッドを用いるのはクライアントがブラウザであり、クライアントのアプリケーションコードが明示的にアクセスしないため、コード生成が不要
    • 使用面として
      • Access-Control-Allow-Origin がどのような値を返すか、呼び出し元によって動的な値を返したい場合があり、記載が困難なケースがある

    ただし、Amazon API Gateway のようなサービスを利用する場合は、options メソッドの記載が必須である場合は除く[1]

    OpenTelemetry Traceparent HTTP Header

    OpenOpenTelemetry で用いるられるtraceparent のリクエストヘッダーは OpenAPI で 原則不要 とする。

    理由は以下である。

    • OpenTelemetry が定めるヘッダー類は、API 横断的に設定されるべきものであり、ミドルウェアやフレームワーク側などでの一律の制御を推奨するため
    • 記載することにより、OpenOpenTelemetry に対応していることを明記し開発者に周知できるメリットより、各アプリ開発者が生成されたコードで悩んだり、誤解されることを回避したいため

    API のバージョン管理

    Swagger 定義で以下の変更を行う場合は、利用するコード生成の動作によってはクライアントにとって互換性を失う破壊的変更であることがあるため、変更は調整の上で行うか、バージョンを上げることを考える。

    • リクエスト項目
      • フィールドの型を変更する
      • 桁数を小さくする
      • enum の種類を減らす
      • 正規表現のチェックを厳しくする
      • 必須フィールドを後から追加する
      • デフォルト値を後から変更する
    • レスポンス項目
      • フィールドの型を変更する
      • 桁数を大きくする
      • デフォルト値を後から変更する

    ファイル単位

    TODO v3 の作成タイミングと合わせて追記する

    推奨ツール

    本当に使ってよかった OpenAPI (Swagger) ツール にあるように、様々なツールで開発ができる。VS Code を用いる場合は以下のプラグインを推奨する。

    editorconfig を用いる場合は、以下の定義を推奨する。

    ini
    root = true
    +
    +[*]
    +charset = utf-8
    +insert_final_newline = true
    +trim_trailing_whitespace = true
    +end_of_line = lf
    +
    +[*.{json,yaml}]
    +indent_size = 2
    +indent_style = space

    License

    CC-By-4.0


    1. https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/enable-cors-for-resource-using-swagger-importer-tool.html ↩︎

    `,30))])}const C=t(c,[["render",g]]);export{A as __pageData,C as default}; diff --git a/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.lean.js b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.lean.js new file mode 100644 index 00000000..efce26de --- /dev/null +++ b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_2.0.md.DykEO7Il.lean.js @@ -0,0 +1,426 @@ +import{_ as t,c as k,G as i,a3 as a,b as r,w as n,a4 as E,B as l,o as p,a as d}from"./chunks/framework.BDUoXecB.js";const A=JSON.parse('{"title":"OpenAPI Specification 2.0規約","description":"","frontmatter":{"sidebarDepth":4,"title":"OpenAPI Specification 2.0規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"OpenAPI,Swagger,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md","filePath":"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md"}'),c={name:"documents/forOpenAPISpecification/OpenAPI_Specification_2.0.md"};function g(y,s,o,b,u,m){const e=l("page-title"),h=l("Mermaid");return p(),k("div",null,[i(e),s[1]||(s[1]=a(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。 ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。 また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    OpenAPI Specification 2.0(Swagger, OAS2)定義についてのコーディング規約をまとめます。より新しいバージョンとして OAS 3.0.3 規約(作成中)がありますので、ご注意ください。

    本規約の前提条件に従い作成されています。ToC 向けの LSUDs(Large Set of Unknown Developers)な Web API にはマッチしない可能性があります。

    Web API 自体の設計については範囲外としますが、API 設計標準に利用するステータスコードなどは記載しています。

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    ファイルフォーマット

    ファイルフォーマット規約に準じる。

    要素規約

    Swagger の基本構造は以下の、swagger・info・host・basePath・schemes・paths・definitions から構成される。

    要素の並び順は、原則 OpenAPI Specification 2.0(Swagger, OAS2) に記載された順番に記載する。

    yaml
    swagger: "2.0"
    +info:
    +  title: サンプルAPI
    +  description: サンプルAPIはシステムにおけるユーザーのアカウント、契約、支払い、注文履歴などを管理できます
    +  version: 1.0.0
    +host: api.example.com
    +basePath: /v1
    +schemes:
    +  - https
    +consumes:
    +  - application/json
    +produces:
    +  - application/json
    +tags:
    +  - name: user
    +    description: ユーザー
    +paths:
    +  /users/{user_id}/account:
    +    get:
    +      tags:
    +        - user
    +      summary: API-001 ユーザーアカウント取得
    +      description: ユーザーのアカウント情報を取得します
    +      operationId: getUserAccount
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            $ref: "#/definitions/UserAccount"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "404":
    +          description: リソースが存在しない
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: 内部エラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: その他予期せぬエラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +definitions:
    +  UserAccount:
    +    required: [user_id, user_name, account_type, register_at]
    +    properties:
    +      user_id:
    +        type: string
    +        description: ユーザーID
    +        minLength: 4
    +        maxLength: 16
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        description: ユーザー名
    +        minLength: 1
    +        maxLength: 128
    +        example: 未来太郎
    +      account_type:
    +        type: string
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        minLength: 1
    +        maxLength: 1
    +        example: "1"
    +      register_at:
    +        type: string
    +        description: 登録日時
    +        format: date-time
    +        example: "2023-04-01T11:30:45.000Z"

    swagger

    • 2.0 固定とする

    info

    info オブジェクトには Web API に関するメタデータを記載する。 title, description, version を必須項目とする。

    フィールド名必須記載内容
    titleWeb API の総称
    descriptionWeb API の簡単な説明
    versionOpenAPI ドキュメントのバージョン
    termsOfService利用規約の URL
    contact連絡先情報
    licenseライセンス情報

    title

    WebAPI の総称を記載する。システム名やサービス名 + API のような命名とすることを推奨する。 例. X System API

    desctiption

    Web API が提供する機能の概要・想定する利用者やユースケース・制約などを記載する。

    version

    この API 仕様のドキュメントのバージョンを記載する。アプリケーションのバージョン(git tag やリリースで管理するようなバージョン)とは別である。

    本規約の推奨は major.minor 形式である。 0.1 固定で開発を進め、サービスのリリース時に 1.0 とし、その後の項目やオプション、パスの追加ごとに 1.1 などインクリメントしていく。もし他チームへのドキュメントの頻繁な共有が必要だれば、1.0 のかわりに 2023.03.26 といった形式も許容する。

    host

    OpenAPI 3 系と異なり、 Swagger では複数のホストを指定できない。そのため host には開発環境(local, develop, staging, production というステージ区別であれば、develop)で用いる IP、ポート番号を指定する。他チームに提供するサンドボックス環境を用意する場合は、そのエンドポイントを指定しても良い。localhost などのローカル開発への向き先変更は、ツール側で対応している事が多く上書き可能なため記載しない。API 定義書は予期せぬタイミングで他チームに展開する必要がしばしばあり、お試しで触っても良い環境があることを示すことで情報量を増やし、円滑なコミュニケーションを促進することを狙いとする。

    yaml
    # OK
    +host: dev.api.example.com:80
    +host: sandbox.api.example.com:80
    +
    +# NG(ローカル開発で用いる環境を指定する)
    +host: localhost:8001
    +
    +# NG(LSUDs向けのWeb API開発では不用意に本番環境を触られたくないときが多く、避けるべきである)
    +host: prod.api.example.com:80

    basePath

    作成する Swagger 定義の URL パスの全てで、共通するプレフィックスを持つ場合に指定する。Swagger の仕様上、先頭には / が必須であるため、以下のように定義する。

    yaml
    # OK
    +basePath: /v1
    +basePAth: /api/v2
    +
    +# NG
    +basePath: v2

    schemes

    最終的に利用するスキーマのみを記載する。通常、HTTP 通信での Web API 提供は行わないと考えられるため、 https 固定で設定する。ローカル開発では http を指定することも多いが、ツールで生成されたコードのオプションで通常書き換えが可能なため、http の併記は許可しない。ただし、サーバサイドのマイクロサービス同士の通信で、VPC(プライベートセグメント)内であり、SSL 通信を本当に利用しない場合は http と記載する。

    yaml
    # OK
    +schemes:
    +  - https
    +
    +# NG(httpの指定は通常、Web APIサーバアプリケーションの開発時を除いて不要であるためわざわざ追加しない)
    +schemes:
    +  - http
    +  - https

    もし、WebSocket スキームを提供するサービスの定義である場合は、wss を(追加で)指定する。定義上は https 側との共存ができないため、ファイル定義を分けるようにする。

    security, securityDefinitions

    Swagger では、次の認証タイプを記載できる(詳細)。

    1. ベーシック認証
    2. API キー(リクエストヘッダ, クエリパラメータ)
    3. OAuth2

    もし、認証が必須であれば記載する。全ての Web API で未認証を受け入れる場合は記載しない。認証の要否が API ごとに異なる場合は、各 API 側で security: [] と記載しして上書き定義する必要がある。

    yaml
    # OK
    +securityDefinitions:
    +  OAuth2:
    +    type: oauth2
    +    flow: accessCode
    +    authorizationUrl: https://example.com/authorize
    +    tokenUrl: https://example.com/.well-known/jwks.json
    +
    +# OK(OAuth2認証ありの場合)
    +paths:
    +  /users/{user_id}/account:
    +    get:
    +      ...
    +      security:      # 認証が不要な場合は security: [] と記載する
    +        - OAuth2: []

    produces

    Web API が応答する際の MIME タイプを指定します。未指定の場合に、コード生成などツール側で予期しない動作をすることがあるため、固定で指定する。新規構築の Web API であれば application/xml は不要と通常は考えられるので、application/json を記載する。また、RFC 7807 Problem Details for HTTP APIs では Content-Type に application/problem+json を設定するとあるが、一部のコード生成ツールにおいて、 application/problemapplication/problem+json の使い分けが難しいため、併記を必須としない。OpenAPI Specification の 3 系ではステータスコードごとに Content-Type を指定できるため、3 系への移行も検討する。

    yaml
    # OK(applicaton/problem+json 無しでも良い)
    +produces:
    +  - application/json
    +
    +# OK(利用するツールで複数のContent-Typeの使い分けが実現しやすい場合は以下でも良い)
    +produces:
    +  - application/json
    +  - application/problem+json

    ある API のみ、バイナリ(画像データなど)を返すなどのケースがあれば、 paths 配下で上書き指定する。

    yaml
    paths:
    +  /logo:
    +    get:
    +      summary: API-002 ロゴ画像を取得する
    +      description: サービスのロゴ画像をpng形式で取得します
    +      operationId: getLogoImage
    +      produces:
    +        - image/png
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            type: file

    consumes

    Web API が要求を受け入れる際の MIME タイプを指定する。未指定の場合に、コード生成などツール側で予期しない動作をすることがあるため、固定で指定する。新規構築の Web API であれば application/xml は不要と通常は考えらえるので、application/json だけ記載する。

    仕様上、 consumes は POST, PUT, PATCH を利用した操作のみに影響し、GET などリクエストボディが無い操作では無視される。

    yaml
    # OK
    +consumes:
    +  - application/json

    tags

    タグを用いて、API 操作をグループ化することができる。ドキュメントやツールにとって非常に重要であるため、 必須 で指定する。

    • Swagger UI(HTML ドキュメント)の順序を制御できる
      • 未指定の場合は、登場順で生成されてしまう
    • 命名は、 単数形 で、小文字かつ半角スペース区切り で記載する
      • コード生成で利用され、Go ではパッケージ名や TypeScript の Class 単位となるため、シンプルな命名にする
      • HTML ドキュメントで参照する場合の可読性を上げるため、単語を半角スペース区切りとする
    • タグごとに description も必須で記載する
    yaml
    # NG
    +tags:
    +  - name: product
    +    description: 製品
    +  - name: store
    +    description: 店舗
    +  - name: user account
    +    description: ユーザーアカウント
    +
    +# NG
    +tags:
    +  - name: products
    +  - name: stores
    +  - name: user_account
    +  - name: UserAccount

    paths

    paths 配下に個々の API エンドポイントを記載する。

    paths は根幹となる定義部分であり、以下のように重要な定義が続く。それぞれ重要な要素ごとに規約を示す。

    sh
    Paths              # API定義全体
    + Path           # URLパス
    + Operation    # HTTPメソッド
    + Parameter  # リクエストパラメータ
    + Responses  # レスポンス
    + Response # ステータスコードに応じたレスポンス

    Paths > Path

    記載順は以下のルールである。

    • トップレベルの tags でグルーピングした順番に記載する
    • URL は短いものから並べる
    • HTTP メソッドは、 head, get, post, put, patch, delete の順にする
    yaml
    # 並び順の例(HTTPメソッドの子要素はtags以外を省略)
    +tags:
    +  - user
    +  - item
    +paths:
    +  /users:
    +    get:
    +      tags:
    +        - user
    +      ...
    +  /users/{user_id}/account:
    +    get:
    +      tags:
    +        - user
    +      ...
    +  /users/{user_id}/account:
    +    patch:
    +      tags:
    +        - user
    +      ...
    +  /items:
    +    get:
    +      tags:
    +        - item
    +      ...

    Paths > Path > Operation

    URL に紐づく HTTP メソッドで、1 つの操作を定義します。

    • summary
      • API の操作概要を summary に記載する
      • 機能 ID があるのでれば、ここに記載する
      • 例: API-001 ユーザアカウント取得
    • description
      • API の振る舞いの詳細や注意点(ある条件で区分の値が変わったり、権限についての注意、要素が空になるなど)を記載する
    • operationId
      • コード生成で利用される項目なので、必須で指定する
      • 原則、camelCase\${HTTPメソッド}\${機能物理名} で記載する(例: getUser, postUser, deleteUser)
        • ただし、HTTP メソッドに紐づかない操作であれば、HTTP メソッドの代わりに個別の動詞(例: searchUser, moveItemList, addPermission)を当てはめる
        • コード生成対象によっては、get_user(Python)、GetUser(Go)といった命名規約にしたくなるが、通常はコード生成側で配慮してくれる
    • consumes, produces
      • トップレベルに application/json を記載しているため、同様であれば記載しない
    yaml
    /users:
    +  get:
    +    tags:
    +      - user
    +    summary: API-001 ユーザーアカウント取得
    +    description: |
    +      ユーザーのアカウント情報を取得します。
    +      ログイン情報が不正の場合はアカウントが存在しても404を返すことがあります。
    +      アカウント種別については【別紙】X_定数一覧 を参照ください。
    +    operationId: getUser
    +    parameters: ...
    +    responses: ...

    Paths > Path > Parameter

    リクエストの定義を記載する。

    • name

      • snake_case で物理名を記載します
      • HTTP メソッドが POST/PUT/HTTP の場合は body に固定する
    • in

      • 仕様上、必須で query, header, path, formData, body のどれかを指定する
      • HTTP メソッドが HEAD/GET/DELETE の場合
        • path, query のみの利用を推奨する
      • HTTP メソッドが POST/PUT/HTTP の場合
        • body のみの利用を推奨する
    • required

      • 必須の場合のみ記載する。デフォルト false であるため、任意項目の場合は記載しない
      • POST, PUT で用いるリクエストボディに対しては、 required: true を必ず指定する
        • リクエストボディ自体が未指定だった場合、各項目の required: true を指定していてもサーバサイドのチェックが有効に働かないことがあるため
    • pattern, minLength, maxLength などの条件について

    • schema

      • リクエストボディは、$ref を用いて、#/definitions 配下に記載する。$ref を用いない記載は許可しない。
      yaml
        # OK
      +  - name: body
      +    in: body
      +    required: true
      +    schema:
      +      $ref: "#/definitions/PutUserAccount"
      +
      +  # NG
      +  - name: body
      +    in: body
      +    required: true
      +    type: object
      +    required: [user_name, account_type, register_at, point]
      +    properties:
      +      user_name:
      +        type: string
      +        ...
      +      account_type:
      +        type: string
      +        ...
      • モデル名は、 {HTTPメソッド名}{物理名} の PascalCase で記載する
        • 例: PutUserAccount、PostUserAccount, PatchUserAccount
    • desription

      • 項目の論理名や補足説明を記載する
    yaml
      /users/{user_id}/account:
    +    get:
    +      ...
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +      responses:
    +        ...
    +    put:
    +      ...
    +      parameters:
    +        - name: user_id
    +          in: path
    +          type: string
    +          pattern: ^[0-9a-zA-Z_-]*$
    +          minLength: 4
    +          maxLength: 16
    +          required: true
    +          description: 登録時に設定されたユーザーID
    +        - name: body
    +          in: body
    +          required: true
    +          schema:
    +            $ref: "#/definitions/PutUserAccount"
    +      responses:
    +        ...

    Paths > Path > Responses

    レスポンスの定義を記載する。

    • description
      • 必須で記載する
    • ステータスコードは発生し得る全てのパターンを列挙する
      • 正常系の 200 OK201 Created202 Accepted 204 No Content 以外の、異常系も忘れず記載する
      • 通常発生しない、サーバサイドの内部的な予期せぬエラー 500 Internal Server Error は必須で記載する
      • リクエストパラメータが存在する場合は 400 Bad Request が、認証がある場合は 401 Unauthorized403 Forbiddend が考えられる
      • default は必須で指定する
        • 例えば、URL 自体が存在しない場合の 404 NotFound や、提供していない HTTP メソッドを呼び出した場合に 405 Method Not Allowed を、自動生成したサーバサイドの実装が返すことがある。この場合、 default を指定していないとフロントエンド側でパースエラーとなることがあるため。各 API エンドポイントのサーバサイド側の実装が応答しないコードは、 default でまとめて指定させる
    yaml
      /users/{user_id}/account:
    +    get:
    +      ...
    +      parameters:
    +        ...
    +      responses:
    +        "200":
    +          description: OK
    +          schema:
    +            $ref: "#/definitions/Users"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "404":
    +          description: リソースが存在しない
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: 内部エラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: その他予期せぬエラー
    +          schema:
    +            $ref: "#/definitions/Error"
    +    post:
    +      ...
    +      parameters:
    +        ...
    +      responses:
    +        "201":
    +          description: 新規登録に成功
    +          schema:
    +            $ref: "#/definitions/UserAccount"
    +        "400":
    +          description: パラメータ不正
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "409":
    +          description: すでに登録済みのユーザーIDを用いている
    +          schema:
    +            $ref: "#/definitions/Error"
    +        "500":
    +          description: Internal Server Error
    +          schema:
    +            $ref: "#/definitions/Error"
    +        default:
    +          description: "その他予期せぬエラー"
    +          schema:
    +            $ref: "#/definitions/Error"

    definitions

    • モデル名は、PascalCase で記載する

    • 種別が配列の場合、ネストして定義するのではなく、 $ref を活用する

    • もし、リソース名が単複同形で type: array と区別できない場合、 List を末尾に付けて区別する

      • そうではない場合は s を付けて表現する
      yml
      # OK
      +- in: query
      +  name: product_types
      +  type: array
      +  description: プロダクト種別
      +
      +# NG
      +- in: query
      +  name: product_type_list # xxx_listはNG
      +  type: array
      +  description: プロダクト種別
    • リクエストボディ

      • 必須項目は required で項目を全て指定する
      • その他、項目定義として可能であればできる限り細かく指定する
    • レスポンスボディ

      • type, description, exampleが必須。
      • format, minLength, maxLength などの型桁はできる限り細かく指定する
        • 多くのクライアントは RDB をデータストアに持ち、それらの型定義の参考にするためである
      • enum指定してはならない
        • 一部のクライアント側のコード生成で、存在しない区分値を指定するとエラーになる(レスポンスを受信できない)。これはサーバサイドで区分値を増やす必要があるケースで、サーバ・クライアントの同期をとる必要があり困難なケースが多い。例えばクライアントがモバイルである場合、サーバサイドで区分値を追加した場合には、全端末でアプリアップデートが必要となリ、事実上 API 互換性がなくなるため、v1 を保持しつつ、区分値を追加した v2 の Path を追加する必要が出てくる
      • pattern の指定は不要
        • pattern も enum と同様に、サーバサイドが当初よりリクエストのバリデーションを緩めた場合に、古い pattern でクライアントがレスポンスを検証すると動作しなくなるため。クライアントサイドが RDB など書き込み時のスキーマが厳密であったとしても、正規表現レベルの厳格さで書き込みチェックをすることは無いと考えられる
      • example の値は、 例えば Prism でサーバのモックとして動かす場合に返される値になるため、できる限り具体的な値にする
      • 空文字、false, 0 値を返しうる項目に、x-omitempty :false を付与する
        • ツールの実装によっては、0 値や false を返した場合に JSON フィールドから除外される(omit される)ことがある
    • 日付は 2023-04-02 といった ISO 8601 date フォーマットを推奨する。この場合は fromat: date を指定する

    • 日時は 2023-04-02T15:04:05+09:00 といった ISO 8601 datetime フォーマットを推奨する。この場合は、 format: date-time を指定する

    • エラーについて

      • API 全体で一貫したエラーを返すことを推奨とし、そのために "#/definitions/Error" といった共通のエラーモデルを利用を推奨する
      • RFC 7807 Problem Details for HTTP APIs があるため、レイアウトを参考にする
    yaml
    definitions:
    +  UserAccounts:
    +    type: array
    +    items:
    +      $ref: "#/definitions/UserAccount"
    +  UserAccount:
    +    required: [user_id, user_name, account_type, register_at, point]
    +    properties:
    +      user_id:
    +        type: string
    +        description: ユーザーID
    +        minLength: 4
    +        maxLength: 16
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        description: ユーザー名
    +        minLength: 1
    +        maxLength: 128
    +        example: 未来太郎
    +      account_type: # enumは指定しないこと
    +        type: string
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        minLength: 1
    +        maxLength: 1
    +        example: "1"
    +      register_at:
    +        type: string
    +        format: date-time
    +        description: 登録日時
    +        example: "2023-04-01T11:30:45.000Z"
    +      point:
    +        type: integer
    +        format: int64
    +        description: ポイント(0ポイント以上)
    +        exampe: 421
    +  PostUserAccount:
    +    required: [user_id, user_name, account_type, register_at]
    +    properties:
    +      user_id:
    +        type: string
    +        minLength: 4
    +        maxLength: 16
    +        pattern: ^[0-9a-zA-Z_-]*$
    +        description: ユーザーID
    +        example: 32AB1aaad100eavV
    +      user_name:
    +        type: string
    +        minLength: 1
    +        maxLength: 128
    +        description: ユーザー名
    +        example: 未来太郎
    +      account_type:
    +        type: string
    +        minLength: 1
    +        maxLength: 1
    +        enum: ["1", "2", "3", "4"]
    +        description: アカウント種別(1:ゲスト 2:登録済み 3:プレミアム 4:管理者)
    +        example: "1"
    +      register_at:
    +        type: string
    +        format: date-time
    +        description: 登録日時
    +        example: "2023-04-01T11:30:45.000Z"
    +  Error:
    +    description: エラー (RFC 7807)
    +    type: object
    +    required: [title, status, detail]
    +    properties:
    +      title:
    +        type: string
    +        description: タイトル
    +        minLength: 1
    +        maxLength: 64
    +        example: request validation error
    +      status:
    +        type: integer
    +        format: int32
    +        description: HTTPステータスコード
    +        minimum: 400
    +        maximum: 600
    +        exclusiveMaximum: true
    +        example: 503
    +      message_cd:
    +        type: string
    +        description: 状態の切り分けとアクションが一意に特定できるメッセージコード
    +        minLength: 1
    +        maxLength: 16
    +        example: APPERR-0001
    +      detail:
    +        type: string
    +        description: エラーメッセージ詳細
    +        minLength: 1
    +        maxLength: 128
    +        example: user name is too long

    バリデーションについて

    OpenAPI 定義を記載するにあたり、バリデーションをどこまで厳密に定義すべきかという議論はよく行いがちである。

    リクエストパラメータの各項目に対して、必須・型・桁・区分値・日付・正規表現のチェックが行える。レスポンスで用いるモデルについても同様に設定でき、enum, pattern 以外は API の利用者(クライアント)側の DB 設計などに必要な型桁情報を渡すのに有用であるため、できる限り詳しく指定する。

    必須

    必須パラメータのみ required: true を定義する

    デフォルト値

    パラメータにデフォルト値がある場合はdefault を定義する。

    yaml
    # ex. enum
    +name: limit
    +type: number
    +format: integer
    +minimum: 1
    +maximum: 100
    +default: 20
    +description: 検索結果の項目数上限(1~100が指定可能)

    【注意】API 公開後に、default 値を変更してはならない(API の互換性が崩れるため)。もし変更する場合は、API のバージョンを上げること。

    型・フォーマット

    型(type)は string(文字列), number(数値), integer(整数値), boolean(真偽値) array(配列), file(ファイル) のうちどれか指定する.

    フォーマット(format) は以下の型の詳細情報を示すもので、可能な限り設定する。

    • integer (整数)
      • int32, int64
    • number (数値)
      • float, double
    • string (バイナリ)
      • byte: Base64 でエンコードされた文字列
      • binary: バイト配列
    • string (日付)
      • date: RFC3339 full-date(例: 2023-07-21)
        • 項目名は _on を接尾辞につけることを推奨とする
      • date-time: RFC3339 date-time(例: 2023-07-21T17:32:28Z)
        • 項目名は _at を接尾辞につけることを推奨とする
    • string (その他)
      • password: Swagger UI で入力が隠される
      • その他、 email, uuid など Open API 仕様に存在しない任意のフォーマットを独自のドキュメント生成などのために記載しても良い

    データ型によって、利用できる桁を指定する項目が異なる。可能な限り設定する。

    • 文字列
      • 最大桁数:maxLength
      • 最小桁数:minLength
    • 数値または整数値
      • 最小値(境界値を含む):minimum
      • 最大値(境界値を含む):maximum
      • 境界値を含まない場合のみexclusiveMinimum: trueまたはexclusiveMaximum: trueを定義する。minimum, maximum で代用できる場合は利用しない
    • 配列:
      • 最大要素数:maxItems
      • 最小要素数:minItems
      • required: trueの場合は原則としてminItems: 1を定義する
      • uniqueItems は必須で指定する(通常は一意であるべき)

    【注意】API 公開後に、レスポンスの maxLength を以前より大きい値に変更してはならない。レスポンスの maxLength など API 利用者側システムの DB の ERD 定義のインプットになる事が多いため。もし行う場合は API のバージョンを上げることや、連携先に桁数変更の旨を調整するなどの考慮を行う。

    区分値

    区分値の場合は enum 属性を利用し、descriptionには区分値の論理名を記載する。

    yaml
    name: gender
    +type: string
    +enum: ["0", "1", "2", "9"]
    +description: |
    +  性別
    +    0: 不明
    +    1: 男
    +    2: 女
    +    9: 適用不能

    固定値

    固定値 の場合も enum を 1 つだけ指定して表現する。この場合もレスポンスで利用する場合は指定しない

    yaml
    name: file_layout
    +type: string
    +enum: ["json"]
    +description: ファイルレイアウト

    その他(正規表現)

    正規表現で表現できる文字列はpatternを利用して定義する。桁や区分値で代替できる場合は、pattern を用いない

    例:

    yaml
    remind_time:
    +  type: string
    +  description: リマインド時刻。(hh:mm)形式
    +  example: 23:59
    +  pattern: "^(2[0-3]|[01][0-9]):([0-5][0-9])$"

    ファイルアップロード

    Web API におけるファイルアップロードのよく利用される実装手段は、大きく分けて以下の 3 手法に分類できます

    1. ファイルのコンテンツを Base64 などにエンコードして、JSON の項目として設定し、リクエストボディで送る
      • メリット: 通常の JSON を扱うのとほぼ変わらないため楽。サムネイルなど限定されたユースケースの場合に向く
      • デメリット: 巨大なファイルを扱う場合などサーバリソース負荷が懸念。Base64 に変換する分 CPU 負荷は余計にかかる。ペイロードが膨れるためモバイルなどのクライアントでは帯域利用での懸念がある
    2. multipart/form-data ファイルを送信する
      • メリット: ファイルを Base64 に変換するといった作業が不要
      • デメリット: ブラウザ以外のクライアントにとって手間がかかる
    3. アップロード用に用いる、オブジェクトストレージの Signed URL を発行し、クライアントから直接ファイルをアップロードしてもらう

    本規約でファイルアップロードについて上記の 3. Signed URL を推奨する。API 呼び出しとしては次のようなフローとする。

    `,107)),(p(),r(E,null,{default:n(()=>[i(h,{id:"mermaid-1038",class:"mermaid",graph:"sequenceDiagram%0Aparticipant%20A%20as%20%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%0Aparticipant%20B%20as%20Web%20API%E3%82%B5%E3%83%BC%E3%83%90%0Aparticipant%20C%20as%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%0A%0AA-%3E%3EB%3A%20%E2%91%A0%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%85%88URL%E5%8F%96%E5%BE%97%0A%20%20B-%3E%3EC%3A%20Signed%20URL%E7%99%BA%E8%A1%8C%0A%20%20C--%3E%3EB%3A%20Signed%20URL%0A%20%20B--%3E%3EA%3A%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89URL%E3%80%81%E5%8F%97%E4%BB%98ID%EF%BC%88%E5%8A%A0%E3%81%88%E3%81%A6%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%81%84HTTP%20Method%E3%82%84%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E5%BF%9C%E7%AD%94%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%EF%BC%89%0A%0AA-%3E%3EC%3A%20%E2%91%A1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%0A%0AA-%3E%3EB%3A%20%E2%91%A2%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86(%E5%8F%97%E4%BB%98ID%E3%80%81%E3%82%AD%E3%83%BC%E3%80%81%E5%B1%9E%E6%80%A7)%0A%20%20B--%3E%3EA%3A%20%E5%8F%97%E4%BB%98%E5%AE%8C%E4%BA%86%0A"})]),fallback:n(()=>s[0]||(s[0]=[d(" Loading... ")])),_:1})),s[2]||(s[2]=a(`

    フローの ①、② はアプリケーション固有の紐づけルールにおいて Web API を設計すれば良いため、本規約で YAML の設定例は記載しない。フロー ② については Signed URL を用いたアップロードであり、アプリケーションの Web API 定義を書く必要はない。もし、監査ログなどのガバナンス上、直接オブジェクトストレージへの書き込みを許容されないケースは、B で Signed URL に相当する書き込み先を提供し、B を経由してファイルをアップロードする。

    上記どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    ファイルダウンロード

    ファイルアップロードと同様、オブジェクトストレージの Signed URL 経由を経由してのダウンロードさせる手法を推奨する。Web API としてはオブジェクトストレージにダウンロード用のファイルを書き込み、クライアントが取得するための Signed URL をレスポンスの JSON 項目に渡す方式である。

    もし、サムネイルやアイコン画像など、ファイル容量がごく小さい場合は Base64 にエンコードして JSON に埋め込んで渡しても良い。線引をどこに設置するかは本規約で定義しない。

    どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    CORS

    CORS(Cross-Origin Resource Sharing)のために、options メソッドの追記は 原則不要 とする。

    理由は以下である。

    • サーバ側
      • options メソッド対応は、API 使用ではなく実装レベルの機能横断的な処理(Java における Servlet Filter や Spring の Interceptor、Go における Middleware など)で行うことが大半であり、コード生成が不要
    • クライアント側
      • options メソッドを用いるのはクライアントがブラウザであり、クライアントのアプリケーションコードが明示的にアクセスしないため、コード生成が不要
    • 使用面として
      • Access-Control-Allow-Origin がどのような値を返すか、呼び出し元によって動的な値を返したい場合があり、記載が困難なケースがある

    ただし、Amazon API Gateway のようなサービスを利用する場合は、options メソッドの記載が必須である場合は除く[1]

    OpenTelemetry Traceparent HTTP Header

    OpenOpenTelemetry で用いるられるtraceparent のリクエストヘッダーは OpenAPI で 原則不要 とする。

    理由は以下である。

    • OpenTelemetry が定めるヘッダー類は、API 横断的に設定されるべきものであり、ミドルウェアやフレームワーク側などでの一律の制御を推奨するため
    • 記載することにより、OpenOpenTelemetry に対応していることを明記し開発者に周知できるメリットより、各アプリ開発者が生成されたコードで悩んだり、誤解されることを回避したいため

    API のバージョン管理

    Swagger 定義で以下の変更を行う場合は、利用するコード生成の動作によってはクライアントにとって互換性を失う破壊的変更であることがあるため、変更は調整の上で行うか、バージョンを上げることを考える。

    • リクエスト項目
      • フィールドの型を変更する
      • 桁数を小さくする
      • enum の種類を減らす
      • 正規表現のチェックを厳しくする
      • 必須フィールドを後から追加する
      • デフォルト値を後から変更する
    • レスポンス項目
      • フィールドの型を変更する
      • 桁数を大きくする
      • デフォルト値を後から変更する

    ファイル単位

    TODO v3 の作成タイミングと合わせて追記する

    推奨ツール

    本当に使ってよかった OpenAPI (Swagger) ツール にあるように、様々なツールで開発ができる。VS Code を用いる場合は以下のプラグインを推奨する。

    editorconfig を用いる場合は、以下の定義を推奨する。

    ini
    root = true
    +
    +[*]
    +charset = utf-8
    +insert_final_newline = true
    +trim_trailing_whitespace = true
    +end_of_line = lf
    +
    +[*.{json,yaml}]
    +indent_size = 2
    +indent_style = space

    License

    CC-By-4.0


    1. https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/enable-cors-for-resource-using-swagger-importer-tool.html ↩︎

    `,30))])}const C=t(c,[["render",g]]);export{A as __pageData,C as default}; diff --git a/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.js b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.js new file mode 100644 index 00000000..a6c75dd7 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.js @@ -0,0 +1,792 @@ +import{_ as h,c as k,G as i,a3 as a,b as r,w as n,a4 as E,B as p,o as l,a as d}from"./chunks/framework.BDUoXecB.js";const A=JSON.parse('{"title":"OpenAPI Specification 3.0.3規約","description":"","frontmatter":{"sidebarDepth":4,"title":"OpenAPI Specification 3.0.3規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"OpenAPI,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md","filePath":"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md"}'),c={name:"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md"};function g(y,s,b,o,u,m){const e=p("page-title"),t=p("Mermaid");return l(),k("div",null,[i(e),s[1]||(s[1]=a(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    本ドキュメントは OpenAPI Specification 3.0.3に則った API ドキュメントを記述する際のコーディング規約をまとめている。 旧バージョンであるOpenAPI Specification 2.0 の規約も存在するため、v2 を使用している場合はそちらを参照されたい。

    本規約は前提条件に基づいて作成されており、ToC 向けの LSUDs(Large Set of Unknown Developers)向けの Web API には適合しない場合もあるのでご留意いただきたい。 Web API の設計自体はこの規約の範囲外であるが、API 設計標準 にステータスコード等の標準を記載しているため、必要に応じて参考にされたい。

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    ファイルフォーマット

    ファイルフォーマット規約に従う。

    OpenAPI ドキュメントの構成要素

    OpenAPI ドキュメントを構成する要素はオブジェクトと呼ばれ、ルートオブジェクトは以下の要素で構成される。

    各種規約を理解する上で、これらの要素を大まかに把握しておくことが重要である。

    各オブジェクトの詳細については公式ドキュメントを参照されたい。

    フィールド名必須説明
    openapiOpenAPI ドキュメントが使用する OpenAPI 仕様のバージョン番号
    infoAPI に関するメタデータ
    serversAPI サーバへの接続情報
    pathsAPI の利用可能なパスと操作方法
    components複数の API における共通の定義
    securityAPI 全体で利用可能なセキュリティ(認証)機構
    tags各種 API をグルーピングするためのタグ
    externalDocs追加の外部ドキュメント

    要素規約

    先述した OpenAPI ドキュメントを構成する要素別に具体的なコーディング規約を記載する。

    openapi

    OpenAPI ドキュメントが使用する OpenAPI 仕様のセマンティックバージョン番号を記載する。

    本規約はバージョン3.0.3を対象としているため、3.0.3とする。

    良い例:

    yaml
    openapi: 3.0.3

    悪い例:

    yaml
    openapi: 3.0

    info

    infoオブジェクトには Web API に関するメタデータを記載する。

    title, description, version を必須項目とする。

    フィールド名必須記載内容
    titleWeb API の総称
    descriptionWeb API の簡単な説明
    versionOpenAPI ドキュメントのバージョン
    termsOfService利用規約の URL
    contact連絡先情報
    licenseライセンス情報

    info > title

    Web API の総称を記載する。

    システム名やサービス名 + API のような命名を推奨する。

    良い例:

    yaml
    info:
    +  title: X System API

    info > description

    Web API が提供する機能の概要・想定する利用者やユースケース・制約などを記載する。

    info > version

    この API 仕様のドキュメントのバージョンを記載する。

    アプリケーションのバージョン(git tag やリリースで管理するようなバージョン)とは別である。

    • major.minor 形式を推奨する

      • 0.1 固定で開発を進め、サービスのリリース時に 1.0 とし、その後の項目やオプション、パスの追加ごとにマイナーバージョンをインクリメントしていく

      良い例:

      yaml
      info:
      +  version: 1.0
    • 他チームへの API ドキュメントの頻繁な共有が必要な場合は YYYY.MM.DD の日付形式も許容する

      良い例:

      yaml
      info:
      +  version: 2023.03.26

    servers

    Web API を提供するサーバの情報を記載する。

    • url, description を必須項目とする
    • ステージ(local, develop, staging など)が複数ある場合は各ステージ分の情報を記載する。
    • SSKDs 向けの Web API 開発においては本番環境の URL を不用意に公開したくないケースが多く、記載は避けるべきである

    良い例:

    yaml
    servers:
    +  - url: http://localhost:8001/
    +    description: Localhost Server
    +  - url: https://dev.api.example.com/v1
    +    description: Development Server
    +  - url: https://staging.api.example.com/v1
    +    description: Staging Server

    悪い例:

    yaml
    servers:
    +  - url: https://prod.api.example.com/v1
    +    description: Production Server

    paths

    API の利用可能なエンドポイントと操作方法を記載する。

    • API ごとに機能 ID を定義している場合、paths 配下の各パスは機能 ID の昇順に定義する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      summary: API-101 ユーザ一覧取得
      +  /products:
      +    get:
      +      summary: API-201 商品一覧取得

      悪い例:

      yaml
      paths:
      +  /products:
      +    get:
      +      summary: API-201 商品一覧取得
      +  /users:
      +    get:
      +      summary: API-101 ユーザ一覧取得
    • URL パスが複数の単語からなる場合、ケバブケースで表現する

      良い例:

      yaml
      paths:
      +  /product-owners:
      +    get: ...

      悪い例:

      yaml
      paths:
      +  /productOwners:
      +    get: ...
    • HTTP メソッドは GET, POST, PUT, PATCH, DELETE の順に定義する

      良い例:

      yaml
      paths:
      +  /products:
      +    get: ...
      +    post: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post: ...
      +    get: ...
    • HTTP メソッドの配下に定義されるオペレーションオブジェクトは、下記の項目を必須項目とする

    フィールド名必須記載内容
    tagsAPI の論理的なグループ
    summaryAPI の操作概要
    descriptionAPI の振る舞いの詳細や注意点
    externalDocsAPI に関する追加の文書
    operationIdAPI の利用可能なエンドポイントと操作方法
    parametersAPI のリクエストパラメータ
    requestBodyAPI のリクエストボディ
    responsesAPI のレスポンス
    callbacks
    deprecatedAPI が非推奨であることの宣言
    securityAPI のセキュリティ機構
    serversAPI に対応する代替サーバ

    paths > {path} > {method} > tags

    API の論理的なグループを指定する。

    • タグオブジェクトとして事前定義したタグの中から選択する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        - users
      +      ...
      +tags:
      +  - name: users

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        # タグオブジェクトとして定義されていないタグが指定されている
      +        - users
      +      ...
      +tags: []
    • 1 API につき 1つのタグを指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        - users
      +      ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      # 複数のタグが指定されている
      +      tags:
      +        - users
      +        - admin
      +      ...

    paths > {path} > {method} > summary

    API の操作概要を記載する。

    • API ごとに機能 ID や機能名があるのであれば記載する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      summary: API-001 ユーザ一覧取得

    paths > {path} > {method} > description

    API の振る舞いの詳細や注意点を記載する。

    別途参照させるべき設計書があるのであれば、設計書へのリンクを記載しても良い。

    良い例:

    yaml
    paths:
    +  /users:
    +    get:
    +      description: [API詳細設計書(API-001)](https://example.com/API-001.md)

    paths > {path} > {method} > operationId

    API を識別するための一意な文字列を記載する。

    • HTTP メソッドと URL パスの組み合わせをキャメルケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      operationId: getUsers
      +      ...
      +  /products/{product_id}:
      +    put:
      +      operationId: putProductsProductId
      +      ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      operationId: get_users
      +      ...
    • OpenAPI ドキュメントエディタとして広く使用される Stoplight が提供するLinterの定義としては、ケバブケースが標準になっているため、Stoplight を使用する場合はケバブケースで表現しても良い

    paths > {path} > {method} > parameters

    API のリクエストパラメータを記載する。

    • クエリパラメータはスネークケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account_type
      +          in: query

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account-type
      +          in: query
    • クエリパラメータは HTTP メソッドが GET, DELETE の場合にのみ指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account_type
      +          in: query

      悪い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: acaccount_type
      +          in: query
    • ヘッダはハイフンを区切り文字とするパスカルケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: Content-Type
      +          in: header

      悪い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: ContentType
      +          in: header

    paths > {path} > {method} > requestBody

    API のリクエストボディを記載する。

    • 標準仕様の describing-request-body の章にも記載がある通り、リクエストボディは HTTP メソッドが POST, PUT, PATCH の場合のみ指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      requestBody:
      +        required: true
      +        content:
      +          application/json:
      +            ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      # HTTP メソッドが GET の場合にリクエストボディを指定
      +      requestBody:
      +        ...
    • リクエストボディそのものは通常複数の API を跨いで再利用されるものではないため、原則 components オブジェクトとして共通化(コンポーネント化)を行わない

      • openapi-generatorを使用する場合は、コンポーネント化をせず、title を指定することで名称の指定が可能となる
      • oapi-codegenを使用する場合は、名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      requestBody:
      +        required: true
      +        content:
      +          application/json:
      +            ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      requestBody:
      +        # コンポーネント化したリクエストボディを参照
      +        $ref: '#/components/requestBodies/ReqPostProductsBody'
      +
      +components:
      +  requestBodies:
      +    ReqPostProductsBody:
      +      content:
      +        application/json:

    paths > {path} > {method} > responses

    API のレスポンスを記載する。

    • 正常系(2xx)のレスポンスは通常複数の API を跨いで再利用されるものではないため、原則 components オブジェクトとして共通化(コンポーネント化)を行わない

      • openapi-generatorを使用する場合は、コンポーネント化をせず、title を指定することで名称の指定が可能となる
      • oapi-codegenを使用する場合は、レスポンスの構造体を出力するために strict-server オプションを true に指定する必要がある。名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する

      良い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "200":
      +          description: 200 OK
      +          content:
      +            application/json: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "200":
      +          # コンポーネント化したレスポンスオブジェクトを参照
      +          $ref: "#/components/responses/RespPostProductsBody"
      +
      +components:
      +  responses:
      +    RespPostProductsBody:
      +      description: 200 OK
      +      content:
      +        application/json: ...
    • 異常系(4xx, 5xx)のレスポンスは個別に定義するのではなく、事前に components オブジェクトとして定義を行い $ref で参照する

      良い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "400":
      +          # コンポーネント化したレスポンスオブジェクトを参照
      +          $ref: "#/components/responses/BadRequest"
      +
      +components:
      +  responses:
      +    BadRequest:
      +      description: 400 Bad Request
      +      content:
      +        application/json: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "400":
      +          # レスポンスオブジェクトを個別に定義
      +          description: 400 Bad Request
      +          content:
      +            application/json: ...

    paths > {path} > {method} > security

    API の認証方式を記載する。

    • 通常はルートレベルの security で API 共通的な認証方式を設定し、個々の API で個別に設定は行わない

    • ヘルスチェックのような認証を通す必要がない API のみ、上書きで定義する

      良い例:

      yaml
      paths:
      +  /session:
      +    post:
      +      ...
      +      # 認証しない場合のみ個別で定義
      +      security: []

    components

    API 定義で利用する共通のデータモデルを定義する。定義方針は下記の通りである。

    フィールド名方針
    schemasAPI 共通的なリソース(例. ユーザや商品など)やエラー等のドメインオブジェクトを定義する
    responsesAPI 共通的なレスポンス(例. 異常系(4xx, 5xx)のレスポンス)を定義する
    parametersAPI 共通的なリクエストパラメータ(HTTP ヘッダやクエリパラメータ等)を定義する
    examples原則何も定義しない
    requestBodies原則何も定義せず、リクエストボディは API 個別に定義する
    headersAPI 共通的なレスポンスヘッダを定義する
    securitySchemes標準で用いる API 認証のスキームを定義する
    links原則何も定義しない
    callbacks原則何も定義しない

    ※ リクエストボディやレスポンスボディにおいてオブジェクトがネストする場合、 API 固有のオブジェクトであっても schemas に定義する。 これは、定義するオブジェクトの properties 配下に更に type: object が定義される場合に、生成ツールによってはうまく型が生成されないためである。 生成ツール上問題ないのであれば、API 固有のオブジェクトを schemas に定義する必要はない。

    components > schemas

    API 共通的なリソースやエラー等のドメインオブジェクトを記載する。

    • 名称はアッパーキャメルケースで定義する
    • 名称は単数形で定義する
    • type に複数の型を定義しない
    • typenull は原則指定しない(null 値を用いる代わりに、キー自体を含めない)
    • allOf, anyOf, oneOf は利用しない

    良い例:

    yaml
    components:
    +  schemas:
    +    # 共通で使用するリソースを表すオブジェクト
    +    Product:
    +      type: object
    +      properties: ...
    +    User:
    +      type: object
    +      properties:
    +    # 共通で使用するエラーを表すオブジェクト
    +    ProblemDetailError:
    +      type: object
    +      properties: ...

    components > responses

    API 共通的なレスポンスを記載する。主に異常系(4xx, 5xx)のレスポンスを定義する。

    • 名称はアッパーキャメルケースで定義する
    • 異常系(4xx, 5xx)のレスポンスの場合、名称にステータスコードの名称(例. BadRequest, Unauthorized)を用いる

    良い例:

    yaml
    components:
    +  schemas:
    +    ProblemDetailError:
    +      type: object
    +      properties:
    +        ...
    +  responses:
    +    # HTTP ステータスコード 400 のレスポンスオブジェクト
    +    BadRequest:
    +      description: 400 Bad Request
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/ProblemDetailError"
    +    # HTTP ステータスコード 401 のレスポンスオブジェクト
    +    Unauthorized:
    +      description: 401 Unauthorized
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/ProblemDetailError"
    +    ...

    正常系のレスポンスの例としてはファイルアップロード・ダウンロードのレスポンスなどが該当する。
    個別のアプリケーション要件でブレが少なく、複数のエンドポイントで用いられる場合に定義する。オブジェクトのスキーマは、schemas に切り出して定義し、コード生成ツールのために型情報を付与させる。

    良い例:

    yaml
    components:
    +  schemas:
    +    SignedURL:
    +      type: object
    +      properties:
    +        signed_url:
    +          type: string
    +          format: uri
    +        expired_at:
    +          type: string
    +          format: date-time
    +  responses:
    +    BlobUpload:
    +      description: BLOB(Binary Large Object) upload using presigned url
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/SignedURL"
    +    BlobDownload:
    +      description: BLOB(Binary Large Object) download using presigned url
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/SignedURL"
    +    ImageBinary:
    +      description: An image
    +      content:
    +        image/*:
    +          schema:
    +            type: string
    +            format: binary

    components > parameters

    API 共通的なリクエストパラメータ(パスパラメータ、クエリパラメータ、ヘッダ, Cookie)を記載する。

    パスパラメータ
    • API 全体で利用されるパスパラメータが必要なケースが想定されないため、原則定義しない
      • 特定リソースの操作(例えば更新と削除)を行う際のリソース ID はパスパラメータとして再利用できるが、コンフリクトを避けるため原則共通化は行わない
    クエリパラメータ
    • API 全体で利用可能な共通のクエリパラメータ(例: 検索数の limit, offset)を定義する
    • 命名はクエリパラメータ名に Query というプレフィックスを付与する形式を推奨する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/QueryLimit"
    +
    +components:
    +  parameters:
    +    QueryLimit:
    +      name: limit
    +      in: query
    +      required: false
    +      schema:
    +        type: integer
    +      description: 検索数上限
    ヘッダ
    • API 全体で利用可能な共通のリクエストヘッダを定義する
    • 命名はヘッダ名に Header というプレフィックスを付与する形式を推奨する

    良い例:

    yaml
    paths:
    +  post:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/HeaderContentType"
    +
    +components:
    +  parameters:
    +    HeaderContentType:
    +      name: Content-Type
    +      in: header
    +      schema:
    +        type: string
    +      required: true
    • API 全体で利用可能な共通の Cookie(例: CSRF 用のトークン)を定義する
    • 命名は Cookie 名に Cookie というプレフィックスを付与する形式を推奨する
    • Cookie 認証を定義する場合は、APIKey を利用する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/CookieCSRFToken"
    +
    +components:
    +  parameters:
    +    CookieCSRFToken:
    +      name: csrftoken
    +      in: cookie
    +      required: true
    +      schema:
    +        type: string
    +      description: CSRFトークン

    components > requestBodies

    原則何も定義せず、リクエストボディは API 個別に記載する。

    components > headers

    API 共通的なレスポンスヘッダを記載する。

    • 命名はヘッダ名からハイフンを除去した形式を推奨する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      responses:
    +        "200":
    +          headers:
    +            XCacheInfo:
    +              $ref: "#/components/headers/XCacheInfo"
    +
    +components:
    +  headers:
    +    XCacheInfo:
    +      description: not cacheable; meta data too large
    +      schema:
    +        type: string

    components > securitySchemes

    標準で用いる API 認証の定義を行う。

    良い例:

    yaml
    components:
    +  securitySchemes:
    +    # Bearer トークンによる認証
    +    Bearer:
    +      type: http
    +      scheme: bearer
    +      bearerFormat: JWT
    +      description: "Bearer トークン認証"

    links は OpenAPI 3.0 の新機能の1つで、ある API レスポンスの値を用いて、別の API を呼び出す方法を明示できるセクションである。

    興味深い機能であり、API のセマンティクスを伝えるのに有用であるが、本規約では記載しないことを推奨とする。

    理由:

    • 業務システムでは、業務フローを抑えておけば、API 操作フローの理解はそこまで難しくないことが多い
      • 逆に、API 同士の関係だけを示すだけでは業務モデリング図とのダブルメンテナンスになったり、中途半端になりうる
    • OAS 3.0 Support Backlog にあるように、2023/12/15時点では Swagger-UI が対応していない
      • links を書いたと言って、API ドキュメントに影響しない

    components > callbacks

    callbacks は OpenAPI 3.0 の新機能の1つで、API サーバ側が指定されたコールバック URL を呼び出すという仕組みである。

    仕様書には、EC ショップで購入のたびにマネージャーに通知を送るといった、何かしらの処理をトリガーにコールバック URL を呼び出す例が示されている。

    利便性は高い仕様だが、本規約では記載しないことを推奨とする。

    理由:

    • コールバック URL 呼び出しの、エラーハンドリングが難しい
    • 業務システムでは欠損が許されない、または将来的に許されなくなる可能性があり、その場合にこの機能に頼ると想定以上の追加作業が発生する

    コールバックのような仕組みを実現するには、別途キューイングのメッセージサービスの利用などを検討する。

    security

    全 API に共通で適用されるセキュリティ設定を定義する。

    業務システムの Web API において認証が全く存在しないケースは考えにくいため、本規約ではルートレベルで認証を設定し、個々の API への適応漏れを無くす。

    良い例:

    yaml
    security:
    +  - Bearer: []

    tags

    API を論理的にグループ化するためのタグを定義する。

    • ドキュメントやツールにとって重要であるため 必須 で指定する
    • name, description を必須項目とする
    • 単数形 で、小文字かつ半角スペース区切りで記載する
      • 半角スペース区切りで記載する理由は HTML ドキュメントで参照する場合の可読性を上げるため
    • コード生成で利用される(Go においてはパッケージ、 TypeScript においてはクラスに相当する)ため、シンプルな命名にする

    良い例:

    yaml
    tags:
    +  - name: product
    +    description: 製品
    +  - name: user account
    +    description: ユーザーアカウント

    悪い例:

    yaml
    tags:
    +  - name: products
    +    description: 製品
    +  - name: user_account
    +    description: ユーザーアカウント

    externalDocs

    参照情報としての URL を記載できる。

    ただし、description にて参考情報となる URL を記載する方が、複数リンクを指定可能であるなど自由度が高く使いやすいため externalDocs は利用せず description の利用を推奨する。

    良い例:

    yaml
    info:
    +  description: |-
    +    Some useful links:
    +    - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
    +    - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)
    +
    +# 特別な場合を除き非推奨
    +externalDocs:
    +  description: Find out more about Swagger
    +  url: http://swagger.io

    設計上のポイント

    OpenAPI ドキュメントを作成する上での設計上ポイントをいくつか記載する。

    ファイルアップロード

    Web API におけるファイルアップロードのよく利用される実装手段は、大きく分けて以下の 3 手法に分類できる。

    1. ファイルのコンテンツを Base64 などにエンコードして、JSON の項目として設定し、リクエストボディで送る
      • メリット: 通常の JSON を扱うのとほぼ変わらないため楽。サムネイルなど限定されたユースケースの場合に向く
      • デメリット: 巨大なファイルを扱う場合などサーバリソース負荷が懸念。Base64 に変換する分 CPU 負荷は余計にかかる。ペイロードが膨れるためモバイルなどのクライアントでは帯域利用での懸念がある
    2. multipart/form-data ファイルを送信する
      • メリット: ファイルを Base64 に変換するといった作業が不要
      • デメリット: ブラウザ以外のクライアントにとって手間がかかる
    3. アップロード用に用いる、オブジェクトストレージの Signed URL を発行し、クライアントから直接ファイルをアップロードしてもらう

    本規約でファイルアップロードについて上記の 3. Signed URL を推奨する。API 呼び出しとしては次のようなフローとする。

    `,152)),(l(),r(E,null,{default:n(()=>[i(t,{id:"mermaid-1319",class:"mermaid",graph:"sequenceDiagram%0Aparticipant%20A%20as%20%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%0Aparticipant%20B%20as%20Web%20API%E3%82%B5%E3%83%BC%E3%83%90%0Aparticipant%20C%20as%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%0A%0AA-%3E%3EB%3A%20%E2%91%A0%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%85%88URL%E5%8F%96%E5%BE%97%0A%20%20B-%3E%3EC%3A%20Signed%20URL%E7%99%BA%E8%A1%8C%0A%20%20C--%3E%3EB%3A%20Signed%20URL%0A%20%20B--%3E%3EA%3A%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89URL%E3%80%81%E5%8F%97%E4%BB%98ID%EF%BC%88%E5%8A%A0%E3%81%88%E3%81%A6%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%81%84HTTP%20Method%E3%82%84%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%98%E3%83%83%E3%83%80%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E5%BF%9C%E7%AD%94%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%EF%BC%89%0A%0AA-%3E%3EC%3A%20%E2%91%A1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%0A%0AA-%3E%3EB%3A%20%E2%91%A2%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86(%E5%8F%97%E4%BB%98ID%E3%80%81%E3%82%AD%E3%83%BC%E3%80%81%E5%B1%9E%E6%80%A7)%0A%20%20B--%3E%3EA%3A%20%E5%8F%97%E4%BB%98%E5%AE%8C%E4%BA%86%0A"})]),fallback:n(()=>s[0]||(s[0]=[d(" Loading... ")])),_:1})),s[2]||(s[2]=a(`

    フローの ①、② はアプリケーション固有の紐づけルールにおいて Web API を設計すれば良いため、本規約で YAML の設定例は記載しない。フロー ② については Signed URL を用いたアップロードであり、アプリケーションの Web API 定義を書く必要はない。もし、監査ログなどのガバナンス上、直接オブジェクトストレージへの書き込みを許容されないケースは、B で Signed URL に相当する書き込み先を提供し、B を経由してファイルをアップロードする。

    上記どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    ファイルダウンロード

    ファイルアップロードと同様、オブジェクトストレージの Signed URL 経由を経由してのダウンロードさせる手法を推奨する。Web API としてはオブジェクトストレージにダウンロード用のファイルを書き込み、クライアントが取得するための Signed URL をレスポンスの JSON 項目に渡す方式である。

    もし、サムネイルやアイコン画像など、ファイル容量がごく小さい場合は Base64 にエンコードして JSON に埋め込んで渡しても良い。線引をどこに設置するかは本規約で定義しない。

    どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    CORS

    CORS(Cross-Origin Resource Sharing)のために、options メソッドの追記は 原則不要 とする。

    理由:

    • サーバ側
      • options メソッド対応は、API 仕様ではなく実装レベルの機能横断的な処理(Java における Servlet Filter や Spring の Interceptor、Go における Middleware など)で行うことが大半であり、コード生成が不要
    • クライアント側
      • options メソッドを用いるのはクライアントがブラウザであり、クライアントのアプリケーションコードが明示的にアクセスしないため、コード生成が不要
    • 使用面として
      • Access-Control-Allow-Origin がどのような値を返すか、呼び出し元によって動的な値を返したい場合があり、記載が困難なケースがある

    ただし、Amazon API Gateway のようなサービスを利用する場合は、options メソッドの記載が必須である場合は除く[1]

    OpenTelemetry Traceparent HTTP Header

    OpenOpenTelemetry で用いるられるtraceparent のリクエストヘッダは OpenAPI で 原則不要 とする。

    理由:

    • OpenTelemetry が定めるヘッダ類は、API 横断的に設定されるべきものであり、ミドルウェアやフレームワーク側などでの一律の制御を推奨するため
    • 記載することにより、OpenOpenTelemetry に対応していることを明記し開発者に周知できるメリットより、各アプリ開発者が生成されたコードで悩んだり、誤解されることを回避したいため

    値が存在しないという状態の表現

    原則 null を用いず、パラメータのキー自体を含めないこと(undefined)による表現を行う。

    詳細はフューチャー技術ブログ記事を参照されたい

    バリデーション

    パラメータのバリデーションをどこまで厳密に定義すべきかという議論はしばしば行われる。

    リクエストパラメータの各項目に対して、必須・型・桁・区分値・日付・正規表現のチェックが行える。レスポンスで用いるモデルについても同様に設定でき、enum, pattern 以外は API の利用者(クライアント)側の DB 設計などに必要な型桁情報を渡すのに有用であるため、できる限り詳しく指定する。

    必須

    必須パラメータのみ required: true を定義する

    デフォルト値

    パラメータにデフォルト値がある場合はdefault を定義する。

    yaml
    # ex. enum
    +name: limit
    +type: number
    +format: integer
    +minimum: 1
    +maximum: 100
    +default: 20
    +description: 検索結果の項目数上限(1~100が指定可能)

    【注意】API 公開後に、default 値を変更してはならない(API の互換性が崩れるため)。もし変更する場合は、API のバージョンを上げること。

    型・フォーマット

    型(type)は string(文字列), number(数値), integer(整数値), boolean(真偽値) array(配列) のうちどれか指定する。

    フォーマット(format)は以下の型の詳細情報を示すもので、可能な限り設定する。

    • integer(整数)
      • int32, int64
    • number(数値)
      • float, double
    • string(バイナリ)
      • byte: Base64 でエンコードされた文字列
      • binary: バイト配列
    • string(日付)
      • date: RFC3339 full-date(例: 2023-07-21)
        • 項目名は _on を接尾辞につけることを推奨とする
      • date-time: RFC3339 date-time(例: 2023-07-21T17:32:28Z)
        • 項目名は _at を接尾辞につけることを推奨とする
    • string(その他)
      • password: Swagger UI で入力が隠される
      • その他、 email, uuid など Open API 仕様に存在しない任意のフォーマットを独自のドキュメント生成などのために記載しても良い

    OpenAPI 3.0 では 2.0 に存在した file type は存在しない。もし同等の指定をしたい場合は、以下の様に指定する。

    yaml
    type: string
    +format: binary # binary file contents

    データ型によって、利用できる桁を指定する項目が異なる。可能な限り設定する。

    • 文字列
      • 最大桁数:maxLength
      • 最小桁数:minLength
    • 数値または整数値
      • 最小値(境界値を含む):minimum
      • 最大値(境界値を含む):maximum
      • 境界値を含まない場合のみexclusiveMinimum: trueまたはexclusiveMaximum: trueを定義する。minimum, maximum で代用できる場合は利用しない
    • 配列:
      • 最大要素数:maxItems
      • 最小要素数:minItems
      • required: trueの場合は原則としてminItems: 1を定義する
      • uniqueItems は必須で指定する(通常は一意であるべき)

    【注意】API 公開後に、レスポンスの maxLength を以前より大きい値に変更してはならない。レスポンスの maxLength など API 利用者側システムの DB の ERD 定義のインプットになる事が多いため。もし行う場合は API のバージョンを上げることや、連携先に桁数変更の旨を調整するなどの考慮を行う。

    区分値

    区分値の場合は enum 属性を利用し、descriptionには区分値の論理名を記載する。

    yaml
    name: gender
    +type: string
    +enum: ["0", "1", "2", "9"]
    +description: |
    +  性別
    +    0: 不明
    +    1: 男
    +    2: 女
    +    9: 適用不能

    OpenAPI 3.0 では区分値の再利用ができるため、横断的に用いる区分値は components 側で定義する。

    yaml
    paths:
    +  /products:
    +    get:
    +      parameters:
    +        - in: query
    +          name: gender
    +          required: true
    +          schema:
    +            $ref: "#/components/schemas/Gender"
    +components:
    +  schemas:
    +    Gender:
    +      type: string
    +      enum: ["0", "1", "2", "9"]

    固定値

    固定値 の場合も enum を 1 つだけ指定して表現する。この場合もレスポンスで利用する場合は指定しない

    yaml
    name: file_layout
    +type: string
    +enum: ["json"]
    +description: ファイルレイアウト

    その他(正規表現)

    正規表現で表現できる文字列はpatternを利用して定義する。桁や区分値で代替できる場合は、pattern を用いない

    例:

    yaml
    remind_time:
    +  type: string
    +  description: リマインド時刻。(hh:mm)形式
    +  example: 23:59
    +  pattern: "^(2[0-3]|[01][0-9]):([0-5][0-9])$"

    ファイル分割

    OpenAPI ドキュメントは単一のファイルで構成することも複数の分割されたファイルで構成することもできるが、複数のファイルに分割することを推奨する。

    理由:

    • API path ごとに担当者を分けて設計する場合などに、複数人による編集によって意図しないコンフリクトが発生することを防ぐ
    • ファイルの肥大化による、可読性の低下を防ぐ

    分割方法の選定

    開発方針や OpenAPI の使用用途に合わせて、都合の良いファイルの分割方法を採用する。例えば、以下のような方法がある。

    1. API path ごとに設計担当者を分けて、それぞれに OpenAPI を編集する場合は、path の単位で分割する。
    2. テストツールとして stoplightio/prismを使用する場合、テストケースごとにデータファイルを作成して、examples にファイルパスを指定する。

    注意点:

    サンプル説明

    分割方法 1, 2 の両方に当てはまる場合のサンプルを用いて説明する。openapi.yaml とディレクトリ構成は下の通り。全量は sample_dividedを参照すること。

    • リソース単位にディレクトリを作成して、path ごとに定義ファイルを格納する。

    • components の schemas モデルの中身は別ファイルとして切り出すことが可能である。

      yaml
      # openapi.yaml(ファイル分割例)
      +openapi: "3.0.3"
      +info:
      +  version: 1.0.0
      +  title: Swagger Petstore
      +security:
      +  - Bearer: []
      +servers:
      +  - url: http://petstore.swagger.io/v1
      +tags:
      +  - name: pets
      +    description: Everything about your Pets
      +paths:
      +  /pets:
      +    $ref: "./pets/pets.yaml"
      +  /pets/{pet_id}:
      +    $ref: "./pets/pets_pet_id.yaml"
      +
      +components:
      +  securitySchemes:
      +    Bearer:
      +      type: http
      +      scheme: bearer
      +      bearerFormat: JWT
      +      description: "Authenthicaiton with bearer token"
      sh
      # ディレクトリ構成(ファイル分割例)
      +
      +├─openapi.gen.yaml
      +├─openapi.yaml
      +
      +├─examples
      +  ├─pets_get
      +    ├─test_case_001.yaml
      +    └─test_case_002.yaml
      +
      +  ├─pets_pet_id_get
      +    └─test_case_003.yaml
      +
      +  └─pets_post
      +       └─test_case_004.yaml
      +
      +└─pets
      +  ├─pets.yaml
      +  └─pets_pet_id.yaml
    • openapi.yamlpaths に記載した API ファイルは以下のように作成する(例: pets-pet-id.yaml)。

    • examples には、例えば各 API のテストケース ID をキーとして指定(TestCase003)し、該当するテストケースのデータファイルパスを参照させる。

      pets-pet-id.yamlを見る
      yaml
      # pets-pet-id.yaml(API path 別ファイルの記載例)
      +get:
      +  summary: Get details of a pet
      +  description: Get details of a pet by specifying its pet ID.
      +  operationId: getPetsPetId
      +  tags:
      +    - pets
      +  parameters:
      +    - name: pet_id
      +      in: path
      +      description: The id of the pet to retrieve
      +      schema:
      +        type: string
      +      required: true
      +  responses:
      +    "200":
      +      description: Expected response to a valid request
      +      content:
      +        application/json:
      +          schema:
      +            type: object
      +            properties:
      +              pet_detail:
      +                type: object
      +                properties:
      +                  breeder:
      +                    type: string
      +                  date_of_birth:
      +                    type: string
      +                    format: date
      +                  pedigree:
      +                    type: object
      +                    properties:
      +                      registration_no:
      +                        type: integer
      +                        format: int64
      +                      date_of_registration:
      +                        type: string
      +                        format: date
      +                      pedigree_image:
      +                        type: string
      +                    required:
      +                      - registration_no
      +                      - date_of_registration
      +                      - pedigree_image
      +            required:
      +              - pet_detail
      +          examples:
      +            TestCase003:
      +              $ref: "../examples/pets_pet_id_get/test_case_003.yaml"
      +    "404":
      +      $ref: "../common/responses.yaml#/components/responses/NotFound"
      +    "500":
      +      $ref: "../common/responses.yaml#/components/responses/InternalServerError"
    • OpenAPI の使用用途により、分割ファイルを1つのファイルにまとめる必要がある場合には、例えばRedocly CLIを使用して以下コマンドを実行する

    • まとめたファイルは、以下のようになる(例: openapi.gen.yaml)。

      bash
      redocly bundle openapi.yaml --output openapi.gen.yaml
      openapi.gen.yamlを見る
      yaml
      # openapi.gen.yaml(ファイルBundle後)
      +openapi: 3.0.3
      +info:
      +  version: 1.0.0
      +  title: Swagger Petstore
      +servers:
      +  - url: http://petstore.swagger.io/v1
      +security:
      +  - Bearer: []
      +tags:
      +  - name: pets
      +    description: Everything about your Pets
      +paths:
      +  /pets:
      +    get:
      +      summary: Search a pet list
      +      description: Search a list of registered pets up to 100.
      +      operationId: getPets
      +      tags:
      +        - pets
      +      parameters:
      +        - name: limit
      +          in: query
      +          description: How many items to return at one time (max 100)
      +          schema:
      +            type: integer
      +            maximum: 100
      +            format: int32
      +          required: false
      +      responses:
      +        "200":
      +          description: A paged array of pets
      +          headers:
      +            x-next:
      +              description: A link to the next page of responses
      +              schema:
      +                type: string
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  pets:
      +                    type: array
      +                    maxItems: 100
      +                    items:
      +                      type: object
      +                      properties:
      +                        id:
      +                          type: integer
      +                          format: int64
      +                        name:
      +                          type: string
      +                          maxLength: 50
      +                        category:
      +                          type: string
      +                          maxLength: 10
      +                        sub_category:
      +                          type: string
      +                          maxLength: 50
      +                        age:
      +                          type: integer
      +                          format: int32
      +                        sex:
      +                          type: string
      +                          maxLength: 6
      +                        note:
      +                          type: string
      +                          maxLength: 200
      +                        tag:
      +                          type: string
      +                          maxLength: 20
      +                      required:
      +                        - id
      +                        - name
      +                        - category
      +                        - age
      +                        - sex
      +              examples:
      +                TestCase001:
      +                  $ref: "#/components/examples/test_case_001"
      +                TestCase002:
      +                  $ref: "#/components/examples/test_case_002"
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +    post:
      +      summary: Register a pet
      +      description: Reginster basic information of new pet.
      +      operationId: postPets
      +      tags:
      +        - pets
      +      requestBody:
      +        content:
      +          application/json:
      +            schema:
      +              type: object
      +              properties:
      +                pet:
      +                  type: object
      +                  properties:
      +                    id:
      +                      type: integer
      +                      format: int64
      +                    name:
      +                      type: string
      +                      maxLength: 50
      +                    category:
      +                      type: string
      +                      maxLength: 10
      +                    sub_category:
      +                      type: string
      +                      maxLength: 50
      +                    age:
      +                      type: integer
      +                      format: int32
      +                    sex:
      +                      type: string
      +                      maxLength: 6
      +                    note:
      +                      type: string
      +                      maxLength: 200
      +                    tag:
      +                      type: string
      +                      maxLength: 20
      +                  required:
      +                    - id
      +                    - name
      +                    - category
      +                    - age
      +                    - sex
      +              required:
      +                - pet
      +            examples:
      +              TestCase004:
      +                $ref: "#/components/examples/test_case_004"
      +        required: true
      +      responses:
      +        "200":
      +          description: OK
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  id:
      +                    type: integer
      +                    format: int64
      +                  name:
      +                    type: string
      +                    maxLength: 50
      +                  category:
      +                    type: string
      +                    maxLength: 10
      +                  sub_category:
      +                    type: string
      +                    maxLength: 50
      +                  age:
      +                    type: integer
      +                    format: int32
      +                  sex:
      +                    type: string
      +                    maxLength: 6
      +                  note:
      +                    type: string
      +                    maxLength: 200
      +                  tag:
      +                    type: string
      +                    maxLength: 20
      +                required:
      +                  - id
      +                  - name
      +                  - category
      +                  - age
      +                  - sex
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +  /pets/{pet_id}:
      +    get:
      +      summary: Get details of a pet
      +      description: Get details of a pet by specifying its pet ID.
      +      operationId: getPetsPetId
      +      tags:
      +        - pets
      +      parameters:
      +        - name: pet_id
      +          in: path
      +          description: The id of the pet to retrieve
      +          schema:
      +            type: string
      +          required: true
      +      responses:
      +        "200":
      +          description: Expected response to a valid request
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  pet_detail:
      +                    type: object
      +                    properties:
      +                      breeder:
      +                        type: string
      +                      date_of_birth:
      +                        type: string
      +                        format: date
      +                      pedigree:
      +                        type: object
      +                        properties:
      +                          registration_no:
      +                            type: integer
      +                            format: int64
      +                          date_of_registration:
      +                            type: string
      +                            format: date
      +                          pedigree_image:
      +                            type: string
      +                        required:
      +                          - registration_no
      +                          - date_of_registration
      +                          - pedigree_image
      +                required:
      +                  - pet_detail
      +              examples:
      +                TestCase003:
      +                  $ref: "#/components/examples/test_case_003"
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +components:
      +  securitySchemes:
      +    Bearer:
      +      type: http
      +      scheme: bearer
      +      bearerFormat: JWT
      +      description: Authenthicaiton with bearer token
      +  examples:
      +    test_case_001:
      +      value:
      +        pets:
      +          - id: 10001
      +            name: ToyPoodle
      +            category: dog
      +            sub_category: ToyPoodle
      +            age: 1
      +            sex: male
      +            note: friendly
      +            tag: dog10001
      +          - id: 10002
      +            name: Chihuahua
      +            category: dog
      +            sub_category: Chihuahua
      +            age: 1
      +            sex: female
      +            note: friendly
      +            tag: dog10002
      +          - id: 10003
      +            name: Shiba
      +            category: dog
      +            sub_category: Shiba
      +            age: 1
      +            sex: male
      +            note: friendly
      +            tag: dog10003
      +          - id: 10004
      +            name: MiniatureDachshund
      +            category: dog
      +            sub_category: MiniatureDachshund
      +            age: 1
      +            sex: female
      +            note: friendly
      +            tag: dog10004
      +    test_case_002:
      +      value:
      +        pets: []
      +    test_case_004:
      +      value:
      +        pet:
      +          id: 10005
      +          name: FrenchBulldog
      +          category: dog
      +          sub_category: FrenchBulldog
      +          age: 1
      +          sex: male
      +          note: friendly
      +          tag: dog10005
      +    test_case_003:
      +      value:
      +        pet_detail:
      +          breeder: BreederName
      +          date_of_birth: "2023-10-31"
      +          pedigree:
      +            registration_no: 11111111
      +            date_of_registration: "2023-10-31"
      +            pedigree_image: 9j2wBDAA...8QAPxAAAQQABAMGBAYDAAEDAg
      +  schemas:
      +    ProblemDetailError:
      +      type: object
      +      properties:
      +        code:
      +          type: integer
      +          format: int32
      +        message:
      +          type: string
      +      required:
      +        - code
      +        - message
      +  responses:
      +    NotFound:
      +      description: Not Found
      +      content:
      +        application/json:
      +          schema:
      +            $ref: "#/components/schemas/ProblemDetailError"
      +    InternalServerError:
      +      description: Internal Server Error
      +      content:
      +        application/json:
      +          schema:
      +            $ref: "#/components/schemas/ProblemDetailError"

    License

    CC-By-4.0


    1. https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/enable-cors-for-resource-using-swagger-importer-tool.html ↩︎

    `,66))])}const D=h(c,[["render",g]]);export{A as __pageData,D as default}; diff --git a/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.lean.js b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.lean.js new file mode 100644 index 00000000..a6c75dd7 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_OpenAPI_Specification_3.0.3.md.DkcvvhOI.lean.js @@ -0,0 +1,792 @@ +import{_ as h,c as k,G as i,a3 as a,b as r,w as n,a4 as E,B as p,o as l,a as d}from"./chunks/framework.BDUoXecB.js";const A=JSON.parse('{"title":"OpenAPI Specification 3.0.3規約","description":"","frontmatter":{"sidebarDepth":4,"title":"OpenAPI Specification 3.0.3規約","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"OpenAPI,命名規約,コーディング規約"}]]},"headers":[],"relativePath":"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md","filePath":"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md"}'),c={name:"documents/forOpenAPISpecification/OpenAPI_Specification_3.0.3.md"};function g(y,s,b,o,u,m){const e=p("page-title"),t=p("Mermaid");return l(),k("div",null,[i(e),s[1]||(s[1]=a(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    本ドキュメントは OpenAPI Specification 3.0.3に則った API ドキュメントを記述する際のコーディング規約をまとめている。 旧バージョンであるOpenAPI Specification 2.0 の規約も存在するため、v2 を使用している場合はそちらを参照されたい。

    本規約は前提条件に基づいて作成されており、ToC 向けの LSUDs(Large Set of Unknown Developers)向けの Web API には適合しない場合もあるのでご留意いただきたい。 Web API の設計自体はこの規約の範囲外であるが、API 設計標準 にステータスコード等の標準を記載しているため、必要に応じて参考にされたい。

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせた開発手法が採用されている。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している

    ファイルフォーマット

    ファイルフォーマット規約に従う。

    OpenAPI ドキュメントの構成要素

    OpenAPI ドキュメントを構成する要素はオブジェクトと呼ばれ、ルートオブジェクトは以下の要素で構成される。

    各種規約を理解する上で、これらの要素を大まかに把握しておくことが重要である。

    各オブジェクトの詳細については公式ドキュメントを参照されたい。

    フィールド名必須説明
    openapiOpenAPI ドキュメントが使用する OpenAPI 仕様のバージョン番号
    infoAPI に関するメタデータ
    serversAPI サーバへの接続情報
    pathsAPI の利用可能なパスと操作方法
    components複数の API における共通の定義
    securityAPI 全体で利用可能なセキュリティ(認証)機構
    tags各種 API をグルーピングするためのタグ
    externalDocs追加の外部ドキュメント

    要素規約

    先述した OpenAPI ドキュメントを構成する要素別に具体的なコーディング規約を記載する。

    openapi

    OpenAPI ドキュメントが使用する OpenAPI 仕様のセマンティックバージョン番号を記載する。

    本規約はバージョン3.0.3を対象としているため、3.0.3とする。

    良い例:

    yaml
    openapi: 3.0.3

    悪い例:

    yaml
    openapi: 3.0

    info

    infoオブジェクトには Web API に関するメタデータを記載する。

    title, description, version を必須項目とする。

    フィールド名必須記載内容
    titleWeb API の総称
    descriptionWeb API の簡単な説明
    versionOpenAPI ドキュメントのバージョン
    termsOfService利用規約の URL
    contact連絡先情報
    licenseライセンス情報

    info > title

    Web API の総称を記載する。

    システム名やサービス名 + API のような命名を推奨する。

    良い例:

    yaml
    info:
    +  title: X System API

    info > description

    Web API が提供する機能の概要・想定する利用者やユースケース・制約などを記載する。

    info > version

    この API 仕様のドキュメントのバージョンを記載する。

    アプリケーションのバージョン(git tag やリリースで管理するようなバージョン)とは別である。

    • major.minor 形式を推奨する

      • 0.1 固定で開発を進め、サービスのリリース時に 1.0 とし、その後の項目やオプション、パスの追加ごとにマイナーバージョンをインクリメントしていく

      良い例:

      yaml
      info:
      +  version: 1.0
    • 他チームへの API ドキュメントの頻繁な共有が必要な場合は YYYY.MM.DD の日付形式も許容する

      良い例:

      yaml
      info:
      +  version: 2023.03.26

    servers

    Web API を提供するサーバの情報を記載する。

    • url, description を必須項目とする
    • ステージ(local, develop, staging など)が複数ある場合は各ステージ分の情報を記載する。
    • SSKDs 向けの Web API 開発においては本番環境の URL を不用意に公開したくないケースが多く、記載は避けるべきである

    良い例:

    yaml
    servers:
    +  - url: http://localhost:8001/
    +    description: Localhost Server
    +  - url: https://dev.api.example.com/v1
    +    description: Development Server
    +  - url: https://staging.api.example.com/v1
    +    description: Staging Server

    悪い例:

    yaml
    servers:
    +  - url: https://prod.api.example.com/v1
    +    description: Production Server

    paths

    API の利用可能なエンドポイントと操作方法を記載する。

    • API ごとに機能 ID を定義している場合、paths 配下の各パスは機能 ID の昇順に定義する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      summary: API-101 ユーザ一覧取得
      +  /products:
      +    get:
      +      summary: API-201 商品一覧取得

      悪い例:

      yaml
      paths:
      +  /products:
      +    get:
      +      summary: API-201 商品一覧取得
      +  /users:
      +    get:
      +      summary: API-101 ユーザ一覧取得
    • URL パスが複数の単語からなる場合、ケバブケースで表現する

      良い例:

      yaml
      paths:
      +  /product-owners:
      +    get: ...

      悪い例:

      yaml
      paths:
      +  /productOwners:
      +    get: ...
    • HTTP メソッドは GET, POST, PUT, PATCH, DELETE の順に定義する

      良い例:

      yaml
      paths:
      +  /products:
      +    get: ...
      +    post: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post: ...
      +    get: ...
    • HTTP メソッドの配下に定義されるオペレーションオブジェクトは、下記の項目を必須項目とする

    フィールド名必須記載内容
    tagsAPI の論理的なグループ
    summaryAPI の操作概要
    descriptionAPI の振る舞いの詳細や注意点
    externalDocsAPI に関する追加の文書
    operationIdAPI の利用可能なエンドポイントと操作方法
    parametersAPI のリクエストパラメータ
    requestBodyAPI のリクエストボディ
    responsesAPI のレスポンス
    callbacks
    deprecatedAPI が非推奨であることの宣言
    securityAPI のセキュリティ機構
    serversAPI に対応する代替サーバ

    paths > {path} > {method} > tags

    API の論理的なグループを指定する。

    • タグオブジェクトとして事前定義したタグの中から選択する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        - users
      +      ...
      +tags:
      +  - name: users

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        # タグオブジェクトとして定義されていないタグが指定されている
      +        - users
      +      ...
      +tags: []
    • 1 API につき 1つのタグを指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      tags:
      +        - users
      +      ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      # 複数のタグが指定されている
      +      tags:
      +        - users
      +        - admin
      +      ...

    paths > {path} > {method} > summary

    API の操作概要を記載する。

    • API ごとに機能 ID や機能名があるのであれば記載する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      summary: API-001 ユーザ一覧取得

    paths > {path} > {method} > description

    API の振る舞いの詳細や注意点を記載する。

    別途参照させるべき設計書があるのであれば、設計書へのリンクを記載しても良い。

    良い例:

    yaml
    paths:
    +  /users:
    +    get:
    +      description: [API詳細設計書(API-001)](https://example.com/API-001.md)

    paths > {path} > {method} > operationId

    API を識別するための一意な文字列を記載する。

    • HTTP メソッドと URL パスの組み合わせをキャメルケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      operationId: getUsers
      +      ...
      +  /products/{product_id}:
      +    put:
      +      operationId: putProductsProductId
      +      ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      operationId: get_users
      +      ...
    • OpenAPI ドキュメントエディタとして広く使用される Stoplight が提供するLinterの定義としては、ケバブケースが標準になっているため、Stoplight を使用する場合はケバブケースで表現しても良い

    paths > {path} > {method} > parameters

    API のリクエストパラメータを記載する。

    • クエリパラメータはスネークケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account_type
      +          in: query

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account-type
      +          in: query
    • クエリパラメータは HTTP メソッドが GET, DELETE の場合にのみ指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      parameters:
      +        - name: account_type
      +          in: query

      悪い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: acaccount_type
      +          in: query
    • ヘッダはハイフンを区切り文字とするパスカルケースで表現する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: Content-Type
      +          in: header

      悪い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      parameters:
      +        - name: ContentType
      +          in: header

    paths > {path} > {method} > requestBody

    API のリクエストボディを記載する。

    • 標準仕様の describing-request-body の章にも記載がある通り、リクエストボディは HTTP メソッドが POST, PUT, PATCH の場合のみ指定する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      requestBody:
      +        required: true
      +        content:
      +          application/json:
      +            ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      # HTTP メソッドが GET の場合にリクエストボディを指定
      +      requestBody:
      +        ...
    • リクエストボディそのものは通常複数の API を跨いで再利用されるものではないため、原則 components オブジェクトとして共通化(コンポーネント化)を行わない

      • openapi-generatorを使用する場合は、コンポーネント化をせず、title を指定することで名称の指定が可能となる
      • oapi-codegenを使用する場合は、名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する

      良い例:

      yaml
      paths:
      +  /users:
      +    post:
      +      ...
      +      requestBody:
      +        required: true
      +        content:
      +          application/json:
      +            ...

      悪い例:

      yaml
      paths:
      +  /users:
      +    get:
      +      ...
      +      requestBody:
      +        # コンポーネント化したリクエストボディを参照
      +        $ref: '#/components/requestBodies/ReqPostProductsBody'
      +
      +components:
      +  requestBodies:
      +    ReqPostProductsBody:
      +      content:
      +        application/json:

    paths > {path} > {method} > responses

    API のレスポンスを記載する。

    • 正常系(2xx)のレスポンスは通常複数の API を跨いで再利用されるものではないため、原則 components オブジェクトとして共通化(コンポーネント化)を行わない

      • openapi-generatorを使用する場合は、コンポーネント化をせず、title を指定することで名称の指定が可能となる
      • oapi-codegenを使用する場合は、レスポンスの構造体を出力するために strict-server オプションを true に指定する必要がある。名称を指定するためにコンポーネント化が必要となるが、極力コンポーネント化せずデフォルトの名称を使用することを推奨する

      良い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "200":
      +          description: 200 OK
      +          content:
      +            application/json: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "200":
      +          # コンポーネント化したレスポンスオブジェクトを参照
      +          $ref: "#/components/responses/RespPostProductsBody"
      +
      +components:
      +  responses:
      +    RespPostProductsBody:
      +      description: 200 OK
      +      content:
      +        application/json: ...
    • 異常系(4xx, 5xx)のレスポンスは個別に定義するのではなく、事前に components オブジェクトとして定義を行い $ref で参照する

      良い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "400":
      +          # コンポーネント化したレスポンスオブジェクトを参照
      +          $ref: "#/components/responses/BadRequest"
      +
      +components:
      +  responses:
      +    BadRequest:
      +      description: 400 Bad Request
      +      content:
      +        application/json: ...

      悪い例:

      yaml
      paths:
      +  /products:
      +    post:
      +      responses:
      +        "400":
      +          # レスポンスオブジェクトを個別に定義
      +          description: 400 Bad Request
      +          content:
      +            application/json: ...

    paths > {path} > {method} > security

    API の認証方式を記載する。

    • 通常はルートレベルの security で API 共通的な認証方式を設定し、個々の API で個別に設定は行わない

    • ヘルスチェックのような認証を通す必要がない API のみ、上書きで定義する

      良い例:

      yaml
      paths:
      +  /session:
      +    post:
      +      ...
      +      # 認証しない場合のみ個別で定義
      +      security: []

    components

    API 定義で利用する共通のデータモデルを定義する。定義方針は下記の通りである。

    フィールド名方針
    schemasAPI 共通的なリソース(例. ユーザや商品など)やエラー等のドメインオブジェクトを定義する
    responsesAPI 共通的なレスポンス(例. 異常系(4xx, 5xx)のレスポンス)を定義する
    parametersAPI 共通的なリクエストパラメータ(HTTP ヘッダやクエリパラメータ等)を定義する
    examples原則何も定義しない
    requestBodies原則何も定義せず、リクエストボディは API 個別に定義する
    headersAPI 共通的なレスポンスヘッダを定義する
    securitySchemes標準で用いる API 認証のスキームを定義する
    links原則何も定義しない
    callbacks原則何も定義しない

    ※ リクエストボディやレスポンスボディにおいてオブジェクトがネストする場合、 API 固有のオブジェクトであっても schemas に定義する。 これは、定義するオブジェクトの properties 配下に更に type: object が定義される場合に、生成ツールによってはうまく型が生成されないためである。 生成ツール上問題ないのであれば、API 固有のオブジェクトを schemas に定義する必要はない。

    components > schemas

    API 共通的なリソースやエラー等のドメインオブジェクトを記載する。

    • 名称はアッパーキャメルケースで定義する
    • 名称は単数形で定義する
    • type に複数の型を定義しない
    • typenull は原則指定しない(null 値を用いる代わりに、キー自体を含めない)
    • allOf, anyOf, oneOf は利用しない

    良い例:

    yaml
    components:
    +  schemas:
    +    # 共通で使用するリソースを表すオブジェクト
    +    Product:
    +      type: object
    +      properties: ...
    +    User:
    +      type: object
    +      properties:
    +    # 共通で使用するエラーを表すオブジェクト
    +    ProblemDetailError:
    +      type: object
    +      properties: ...

    components > responses

    API 共通的なレスポンスを記載する。主に異常系(4xx, 5xx)のレスポンスを定義する。

    • 名称はアッパーキャメルケースで定義する
    • 異常系(4xx, 5xx)のレスポンスの場合、名称にステータスコードの名称(例. BadRequest, Unauthorized)を用いる

    良い例:

    yaml
    components:
    +  schemas:
    +    ProblemDetailError:
    +      type: object
    +      properties:
    +        ...
    +  responses:
    +    # HTTP ステータスコード 400 のレスポンスオブジェクト
    +    BadRequest:
    +      description: 400 Bad Request
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/ProblemDetailError"
    +    # HTTP ステータスコード 401 のレスポンスオブジェクト
    +    Unauthorized:
    +      description: 401 Unauthorized
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/ProblemDetailError"
    +    ...

    正常系のレスポンスの例としてはファイルアップロード・ダウンロードのレスポンスなどが該当する。
    個別のアプリケーション要件でブレが少なく、複数のエンドポイントで用いられる場合に定義する。オブジェクトのスキーマは、schemas に切り出して定義し、コード生成ツールのために型情報を付与させる。

    良い例:

    yaml
    components:
    +  schemas:
    +    SignedURL:
    +      type: object
    +      properties:
    +        signed_url:
    +          type: string
    +          format: uri
    +        expired_at:
    +          type: string
    +          format: date-time
    +  responses:
    +    BlobUpload:
    +      description: BLOB(Binary Large Object) upload using presigned url
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/SignedURL"
    +    BlobDownload:
    +      description: BLOB(Binary Large Object) download using presigned url
    +      content:
    +        application/json:
    +          schema:
    +            "$ref": "#/components/schemas/SignedURL"
    +    ImageBinary:
    +      description: An image
    +      content:
    +        image/*:
    +          schema:
    +            type: string
    +            format: binary

    components > parameters

    API 共通的なリクエストパラメータ(パスパラメータ、クエリパラメータ、ヘッダ, Cookie)を記載する。

    パスパラメータ
    • API 全体で利用されるパスパラメータが必要なケースが想定されないため、原則定義しない
      • 特定リソースの操作(例えば更新と削除)を行う際のリソース ID はパスパラメータとして再利用できるが、コンフリクトを避けるため原則共通化は行わない
    クエリパラメータ
    • API 全体で利用可能な共通のクエリパラメータ(例: 検索数の limit, offset)を定義する
    • 命名はクエリパラメータ名に Query というプレフィックスを付与する形式を推奨する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/QueryLimit"
    +
    +components:
    +  parameters:
    +    QueryLimit:
    +      name: limit
    +      in: query
    +      required: false
    +      schema:
    +        type: integer
    +      description: 検索数上限
    ヘッダ
    • API 全体で利用可能な共通のリクエストヘッダを定義する
    • 命名はヘッダ名に Header というプレフィックスを付与する形式を推奨する

    良い例:

    yaml
    paths:
    +  post:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/HeaderContentType"
    +
    +components:
    +  parameters:
    +    HeaderContentType:
    +      name: Content-Type
    +      in: header
    +      schema:
    +        type: string
    +      required: true
    • API 全体で利用可能な共通の Cookie(例: CSRF 用のトークン)を定義する
    • 命名は Cookie 名に Cookie というプレフィックスを付与する形式を推奨する
    • Cookie 認証を定義する場合は、APIKey を利用する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      parameters:
    +        - $ref: "#/components/parameters/CookieCSRFToken"
    +
    +components:
    +  parameters:
    +    CookieCSRFToken:
    +      name: csrftoken
    +      in: cookie
    +      required: true
    +      schema:
    +        type: string
    +      description: CSRFトークン

    components > requestBodies

    原則何も定義せず、リクエストボディは API 個別に記載する。

    components > headers

    API 共通的なレスポンスヘッダを記載する。

    • 命名はヘッダ名からハイフンを除去した形式を推奨する

    良い例:

    yaml
    paths:
    +  get:
    +    /products:
    +      responses:
    +        "200":
    +          headers:
    +            XCacheInfo:
    +              $ref: "#/components/headers/XCacheInfo"
    +
    +components:
    +  headers:
    +    XCacheInfo:
    +      description: not cacheable; meta data too large
    +      schema:
    +        type: string

    components > securitySchemes

    標準で用いる API 認証の定義を行う。

    良い例:

    yaml
    components:
    +  securitySchemes:
    +    # Bearer トークンによる認証
    +    Bearer:
    +      type: http
    +      scheme: bearer
    +      bearerFormat: JWT
    +      description: "Bearer トークン認証"

    links は OpenAPI 3.0 の新機能の1つで、ある API レスポンスの値を用いて、別の API を呼び出す方法を明示できるセクションである。

    興味深い機能であり、API のセマンティクスを伝えるのに有用であるが、本規約では記載しないことを推奨とする。

    理由:

    • 業務システムでは、業務フローを抑えておけば、API 操作フローの理解はそこまで難しくないことが多い
      • 逆に、API 同士の関係だけを示すだけでは業務モデリング図とのダブルメンテナンスになったり、中途半端になりうる
    • OAS 3.0 Support Backlog にあるように、2023/12/15時点では Swagger-UI が対応していない
      • links を書いたと言って、API ドキュメントに影響しない

    components > callbacks

    callbacks は OpenAPI 3.0 の新機能の1つで、API サーバ側が指定されたコールバック URL を呼び出すという仕組みである。

    仕様書には、EC ショップで購入のたびにマネージャーに通知を送るといった、何かしらの処理をトリガーにコールバック URL を呼び出す例が示されている。

    利便性は高い仕様だが、本規約では記載しないことを推奨とする。

    理由:

    • コールバック URL 呼び出しの、エラーハンドリングが難しい
    • 業務システムでは欠損が許されない、または将来的に許されなくなる可能性があり、その場合にこの機能に頼ると想定以上の追加作業が発生する

    コールバックのような仕組みを実現するには、別途キューイングのメッセージサービスの利用などを検討する。

    security

    全 API に共通で適用されるセキュリティ設定を定義する。

    業務システムの Web API において認証が全く存在しないケースは考えにくいため、本規約ではルートレベルで認証を設定し、個々の API への適応漏れを無くす。

    良い例:

    yaml
    security:
    +  - Bearer: []

    tags

    API を論理的にグループ化するためのタグを定義する。

    • ドキュメントやツールにとって重要であるため 必須 で指定する
    • name, description を必須項目とする
    • 単数形 で、小文字かつ半角スペース区切りで記載する
      • 半角スペース区切りで記載する理由は HTML ドキュメントで参照する場合の可読性を上げるため
    • コード生成で利用される(Go においてはパッケージ、 TypeScript においてはクラスに相当する)ため、シンプルな命名にする

    良い例:

    yaml
    tags:
    +  - name: product
    +    description: 製品
    +  - name: user account
    +    description: ユーザーアカウント

    悪い例:

    yaml
    tags:
    +  - name: products
    +    description: 製品
    +  - name: user_account
    +    description: ユーザーアカウント

    externalDocs

    参照情報としての URL を記載できる。

    ただし、description にて参考情報となる URL を記載する方が、複数リンクを指定可能であるなど自由度が高く使いやすいため externalDocs は利用せず description の利用を推奨する。

    良い例:

    yaml
    info:
    +  description: |-
    +    Some useful links:
    +    - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
    +    - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)
    +
    +# 特別な場合を除き非推奨
    +externalDocs:
    +  description: Find out more about Swagger
    +  url: http://swagger.io

    設計上のポイント

    OpenAPI ドキュメントを作成する上での設計上ポイントをいくつか記載する。

    ファイルアップロード

    Web API におけるファイルアップロードのよく利用される実装手段は、大きく分けて以下の 3 手法に分類できる。

    1. ファイルのコンテンツを Base64 などにエンコードして、JSON の項目として設定し、リクエストボディで送る
      • メリット: 通常の JSON を扱うのとほぼ変わらないため楽。サムネイルなど限定されたユースケースの場合に向く
      • デメリット: 巨大なファイルを扱う場合などサーバリソース負荷が懸念。Base64 に変換する分 CPU 負荷は余計にかかる。ペイロードが膨れるためモバイルなどのクライアントでは帯域利用での懸念がある
    2. multipart/form-data ファイルを送信する
      • メリット: ファイルを Base64 に変換するといった作業が不要
      • デメリット: ブラウザ以外のクライアントにとって手間がかかる
    3. アップロード用に用いる、オブジェクトストレージの Signed URL を発行し、クライアントから直接ファイルをアップロードしてもらう

    本規約でファイルアップロードについて上記の 3. Signed URL を推奨する。API 呼び出しとしては次のようなフローとする。

    `,152)),(l(),r(E,null,{default:n(()=>[i(t,{id:"mermaid-1319",class:"mermaid",graph:"sequenceDiagram%0Aparticipant%20A%20as%20%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88%0Aparticipant%20B%20as%20Web%20API%E3%82%B5%E3%83%BC%E3%83%90%0Aparticipant%20C%20as%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%0A%0AA-%3E%3EB%3A%20%E2%91%A0%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%85%88URL%E5%8F%96%E5%BE%97%0A%20%20B-%3E%3EC%3A%20Signed%20URL%E7%99%BA%E8%A1%8C%0A%20%20C--%3E%3EB%3A%20Signed%20URL%0A%20%20B--%3E%3EA%3A%20%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89URL%E3%80%81%E5%8F%97%E4%BB%98ID%EF%BC%88%E5%8A%A0%E3%81%88%E3%81%A6%E3%80%81%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%81%84HTTP%20Method%E3%82%84%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%98%E3%83%83%E3%83%80%E3%81%8C%E3%81%82%E3%82%8C%E3%81%B0%E5%BF%9C%E7%AD%94%E3%81%AE%E9%A0%85%E7%9B%AE%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%EF%BC%89%0A%0AA-%3E%3EC%3A%20%E2%91%A1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%0A%0AA-%3E%3EB%3A%20%E2%91%A2%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%AE%8C%E4%BA%86(%E5%8F%97%E4%BB%98ID%E3%80%81%E3%82%AD%E3%83%BC%E3%80%81%E5%B1%9E%E6%80%A7)%0A%20%20B--%3E%3EA%3A%20%E5%8F%97%E4%BB%98%E5%AE%8C%E4%BA%86%0A"})]),fallback:n(()=>s[0]||(s[0]=[d(" Loading... ")])),_:1})),s[2]||(s[2]=a(`

    フローの ①、② はアプリケーション固有の紐づけルールにおいて Web API を設計すれば良いため、本規約で YAML の設定例は記載しない。フロー ② については Signed URL を用いたアップロードであり、アプリケーションの Web API 定義を書く必要はない。もし、監査ログなどのガバナンス上、直接オブジェクトストレージへの書き込みを許容されないケースは、B で Signed URL に相当する書き込み先を提供し、B を経由してファイルをアップロードする。

    上記どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    ファイルダウンロード

    ファイルアップロードと同様、オブジェクトストレージの Signed URL 経由を経由してのダウンロードさせる手法を推奨する。Web API としてはオブジェクトストレージにダウンロード用のファイルを書き込み、クライアントが取得するための Signed URL をレスポンスの JSON 項目に渡す方式である。

    もし、サムネイルやアイコン画像など、ファイル容量がごく小さい場合は Base64 にエンコードして JSON に埋め込んで渡しても良い。線引をどこに設置するかは本規約で定義しない。

    どちらのケースも OpenAPI 定義としてはシンプルであるため、記述例は割愛する。

    CORS

    CORS(Cross-Origin Resource Sharing)のために、options メソッドの追記は 原則不要 とする。

    理由:

    • サーバ側
      • options メソッド対応は、API 仕様ではなく実装レベルの機能横断的な処理(Java における Servlet Filter や Spring の Interceptor、Go における Middleware など)で行うことが大半であり、コード生成が不要
    • クライアント側
      • options メソッドを用いるのはクライアントがブラウザであり、クライアントのアプリケーションコードが明示的にアクセスしないため、コード生成が不要
    • 使用面として
      • Access-Control-Allow-Origin がどのような値を返すか、呼び出し元によって動的な値を返したい場合があり、記載が困難なケースがある

    ただし、Amazon API Gateway のようなサービスを利用する場合は、options メソッドの記載が必須である場合は除く[1]

    OpenTelemetry Traceparent HTTP Header

    OpenOpenTelemetry で用いるられるtraceparent のリクエストヘッダは OpenAPI で 原則不要 とする。

    理由:

    • OpenTelemetry が定めるヘッダ類は、API 横断的に設定されるべきものであり、ミドルウェアやフレームワーク側などでの一律の制御を推奨するため
    • 記載することにより、OpenOpenTelemetry に対応していることを明記し開発者に周知できるメリットより、各アプリ開発者が生成されたコードで悩んだり、誤解されることを回避したいため

    値が存在しないという状態の表現

    原則 null を用いず、パラメータのキー自体を含めないこと(undefined)による表現を行う。

    詳細はフューチャー技術ブログ記事を参照されたい

    バリデーション

    パラメータのバリデーションをどこまで厳密に定義すべきかという議論はしばしば行われる。

    リクエストパラメータの各項目に対して、必須・型・桁・区分値・日付・正規表現のチェックが行える。レスポンスで用いるモデルについても同様に設定でき、enum, pattern 以外は API の利用者(クライアント)側の DB 設計などに必要な型桁情報を渡すのに有用であるため、できる限り詳しく指定する。

    必須

    必須パラメータのみ required: true を定義する

    デフォルト値

    パラメータにデフォルト値がある場合はdefault を定義する。

    yaml
    # ex. enum
    +name: limit
    +type: number
    +format: integer
    +minimum: 1
    +maximum: 100
    +default: 20
    +description: 検索結果の項目数上限(1~100が指定可能)

    【注意】API 公開後に、default 値を変更してはならない(API の互換性が崩れるため)。もし変更する場合は、API のバージョンを上げること。

    型・フォーマット

    型(type)は string(文字列), number(数値), integer(整数値), boolean(真偽値) array(配列) のうちどれか指定する。

    フォーマット(format)は以下の型の詳細情報を示すもので、可能な限り設定する。

    • integer(整数)
      • int32, int64
    • number(数値)
      • float, double
    • string(バイナリ)
      • byte: Base64 でエンコードされた文字列
      • binary: バイト配列
    • string(日付)
      • date: RFC3339 full-date(例: 2023-07-21)
        • 項目名は _on を接尾辞につけることを推奨とする
      • date-time: RFC3339 date-time(例: 2023-07-21T17:32:28Z)
        • 項目名は _at を接尾辞につけることを推奨とする
    • string(その他)
      • password: Swagger UI で入力が隠される
      • その他、 email, uuid など Open API 仕様に存在しない任意のフォーマットを独自のドキュメント生成などのために記載しても良い

    OpenAPI 3.0 では 2.0 に存在した file type は存在しない。もし同等の指定をしたい場合は、以下の様に指定する。

    yaml
    type: string
    +format: binary # binary file contents

    データ型によって、利用できる桁を指定する項目が異なる。可能な限り設定する。

    • 文字列
      • 最大桁数:maxLength
      • 最小桁数:minLength
    • 数値または整数値
      • 最小値(境界値を含む):minimum
      • 最大値(境界値を含む):maximum
      • 境界値を含まない場合のみexclusiveMinimum: trueまたはexclusiveMaximum: trueを定義する。minimum, maximum で代用できる場合は利用しない
    • 配列:
      • 最大要素数:maxItems
      • 最小要素数:minItems
      • required: trueの場合は原則としてminItems: 1を定義する
      • uniqueItems は必須で指定する(通常は一意であるべき)

    【注意】API 公開後に、レスポンスの maxLength を以前より大きい値に変更してはならない。レスポンスの maxLength など API 利用者側システムの DB の ERD 定義のインプットになる事が多いため。もし行う場合は API のバージョンを上げることや、連携先に桁数変更の旨を調整するなどの考慮を行う。

    区分値

    区分値の場合は enum 属性を利用し、descriptionには区分値の論理名を記載する。

    yaml
    name: gender
    +type: string
    +enum: ["0", "1", "2", "9"]
    +description: |
    +  性別
    +    0: 不明
    +    1: 男
    +    2: 女
    +    9: 適用不能

    OpenAPI 3.0 では区分値の再利用ができるため、横断的に用いる区分値は components 側で定義する。

    yaml
    paths:
    +  /products:
    +    get:
    +      parameters:
    +        - in: query
    +          name: gender
    +          required: true
    +          schema:
    +            $ref: "#/components/schemas/Gender"
    +components:
    +  schemas:
    +    Gender:
    +      type: string
    +      enum: ["0", "1", "2", "9"]

    固定値

    固定値 の場合も enum を 1 つだけ指定して表現する。この場合もレスポンスで利用する場合は指定しない

    yaml
    name: file_layout
    +type: string
    +enum: ["json"]
    +description: ファイルレイアウト

    その他(正規表現)

    正規表現で表現できる文字列はpatternを利用して定義する。桁や区分値で代替できる場合は、pattern を用いない

    例:

    yaml
    remind_time:
    +  type: string
    +  description: リマインド時刻。(hh:mm)形式
    +  example: 23:59
    +  pattern: "^(2[0-3]|[01][0-9]):([0-5][0-9])$"

    ファイル分割

    OpenAPI ドキュメントは単一のファイルで構成することも複数の分割されたファイルで構成することもできるが、複数のファイルに分割することを推奨する。

    理由:

    • API path ごとに担当者を分けて設計する場合などに、複数人による編集によって意図しないコンフリクトが発生することを防ぐ
    • ファイルの肥大化による、可読性の低下を防ぐ

    分割方法の選定

    開発方針や OpenAPI の使用用途に合わせて、都合の良いファイルの分割方法を採用する。例えば、以下のような方法がある。

    1. API path ごとに設計担当者を分けて、それぞれに OpenAPI を編集する場合は、path の単位で分割する。
    2. テストツールとして stoplightio/prismを使用する場合、テストケースごとにデータファイルを作成して、examples にファイルパスを指定する。

    注意点:

    サンプル説明

    分割方法 1, 2 の両方に当てはまる場合のサンプルを用いて説明する。openapi.yaml とディレクトリ構成は下の通り。全量は sample_dividedを参照すること。

    • リソース単位にディレクトリを作成して、path ごとに定義ファイルを格納する。

    • components の schemas モデルの中身は別ファイルとして切り出すことが可能である。

      yaml
      # openapi.yaml(ファイル分割例)
      +openapi: "3.0.3"
      +info:
      +  version: 1.0.0
      +  title: Swagger Petstore
      +security:
      +  - Bearer: []
      +servers:
      +  - url: http://petstore.swagger.io/v1
      +tags:
      +  - name: pets
      +    description: Everything about your Pets
      +paths:
      +  /pets:
      +    $ref: "./pets/pets.yaml"
      +  /pets/{pet_id}:
      +    $ref: "./pets/pets_pet_id.yaml"
      +
      +components:
      +  securitySchemes:
      +    Bearer:
      +      type: http
      +      scheme: bearer
      +      bearerFormat: JWT
      +      description: "Authenthicaiton with bearer token"
      sh
      # ディレクトリ構成(ファイル分割例)
      +
      +├─openapi.gen.yaml
      +├─openapi.yaml
      +
      +├─examples
      +  ├─pets_get
      +    ├─test_case_001.yaml
      +    └─test_case_002.yaml
      +
      +  ├─pets_pet_id_get
      +    └─test_case_003.yaml
      +
      +  └─pets_post
      +       └─test_case_004.yaml
      +
      +└─pets
      +  ├─pets.yaml
      +  └─pets_pet_id.yaml
    • openapi.yamlpaths に記載した API ファイルは以下のように作成する(例: pets-pet-id.yaml)。

    • examples には、例えば各 API のテストケース ID をキーとして指定(TestCase003)し、該当するテストケースのデータファイルパスを参照させる。

      pets-pet-id.yamlを見る
      yaml
      # pets-pet-id.yaml(API path 別ファイルの記載例)
      +get:
      +  summary: Get details of a pet
      +  description: Get details of a pet by specifying its pet ID.
      +  operationId: getPetsPetId
      +  tags:
      +    - pets
      +  parameters:
      +    - name: pet_id
      +      in: path
      +      description: The id of the pet to retrieve
      +      schema:
      +        type: string
      +      required: true
      +  responses:
      +    "200":
      +      description: Expected response to a valid request
      +      content:
      +        application/json:
      +          schema:
      +            type: object
      +            properties:
      +              pet_detail:
      +                type: object
      +                properties:
      +                  breeder:
      +                    type: string
      +                  date_of_birth:
      +                    type: string
      +                    format: date
      +                  pedigree:
      +                    type: object
      +                    properties:
      +                      registration_no:
      +                        type: integer
      +                        format: int64
      +                      date_of_registration:
      +                        type: string
      +                        format: date
      +                      pedigree_image:
      +                        type: string
      +                    required:
      +                      - registration_no
      +                      - date_of_registration
      +                      - pedigree_image
      +            required:
      +              - pet_detail
      +          examples:
      +            TestCase003:
      +              $ref: "../examples/pets_pet_id_get/test_case_003.yaml"
      +    "404":
      +      $ref: "../common/responses.yaml#/components/responses/NotFound"
      +    "500":
      +      $ref: "../common/responses.yaml#/components/responses/InternalServerError"
    • OpenAPI の使用用途により、分割ファイルを1つのファイルにまとめる必要がある場合には、例えばRedocly CLIを使用して以下コマンドを実行する

    • まとめたファイルは、以下のようになる(例: openapi.gen.yaml)。

      bash
      redocly bundle openapi.yaml --output openapi.gen.yaml
      openapi.gen.yamlを見る
      yaml
      # openapi.gen.yaml(ファイルBundle後)
      +openapi: 3.0.3
      +info:
      +  version: 1.0.0
      +  title: Swagger Petstore
      +servers:
      +  - url: http://petstore.swagger.io/v1
      +security:
      +  - Bearer: []
      +tags:
      +  - name: pets
      +    description: Everything about your Pets
      +paths:
      +  /pets:
      +    get:
      +      summary: Search a pet list
      +      description: Search a list of registered pets up to 100.
      +      operationId: getPets
      +      tags:
      +        - pets
      +      parameters:
      +        - name: limit
      +          in: query
      +          description: How many items to return at one time (max 100)
      +          schema:
      +            type: integer
      +            maximum: 100
      +            format: int32
      +          required: false
      +      responses:
      +        "200":
      +          description: A paged array of pets
      +          headers:
      +            x-next:
      +              description: A link to the next page of responses
      +              schema:
      +                type: string
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  pets:
      +                    type: array
      +                    maxItems: 100
      +                    items:
      +                      type: object
      +                      properties:
      +                        id:
      +                          type: integer
      +                          format: int64
      +                        name:
      +                          type: string
      +                          maxLength: 50
      +                        category:
      +                          type: string
      +                          maxLength: 10
      +                        sub_category:
      +                          type: string
      +                          maxLength: 50
      +                        age:
      +                          type: integer
      +                          format: int32
      +                        sex:
      +                          type: string
      +                          maxLength: 6
      +                        note:
      +                          type: string
      +                          maxLength: 200
      +                        tag:
      +                          type: string
      +                          maxLength: 20
      +                      required:
      +                        - id
      +                        - name
      +                        - category
      +                        - age
      +                        - sex
      +              examples:
      +                TestCase001:
      +                  $ref: "#/components/examples/test_case_001"
      +                TestCase002:
      +                  $ref: "#/components/examples/test_case_002"
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +    post:
      +      summary: Register a pet
      +      description: Reginster basic information of new pet.
      +      operationId: postPets
      +      tags:
      +        - pets
      +      requestBody:
      +        content:
      +          application/json:
      +            schema:
      +              type: object
      +              properties:
      +                pet:
      +                  type: object
      +                  properties:
      +                    id:
      +                      type: integer
      +                      format: int64
      +                    name:
      +                      type: string
      +                      maxLength: 50
      +                    category:
      +                      type: string
      +                      maxLength: 10
      +                    sub_category:
      +                      type: string
      +                      maxLength: 50
      +                    age:
      +                      type: integer
      +                      format: int32
      +                    sex:
      +                      type: string
      +                      maxLength: 6
      +                    note:
      +                      type: string
      +                      maxLength: 200
      +                    tag:
      +                      type: string
      +                      maxLength: 20
      +                  required:
      +                    - id
      +                    - name
      +                    - category
      +                    - age
      +                    - sex
      +              required:
      +                - pet
      +            examples:
      +              TestCase004:
      +                $ref: "#/components/examples/test_case_004"
      +        required: true
      +      responses:
      +        "200":
      +          description: OK
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  id:
      +                    type: integer
      +                    format: int64
      +                  name:
      +                    type: string
      +                    maxLength: 50
      +                  category:
      +                    type: string
      +                    maxLength: 10
      +                  sub_category:
      +                    type: string
      +                    maxLength: 50
      +                  age:
      +                    type: integer
      +                    format: int32
      +                  sex:
      +                    type: string
      +                    maxLength: 6
      +                  note:
      +                    type: string
      +                    maxLength: 200
      +                  tag:
      +                    type: string
      +                    maxLength: 20
      +                required:
      +                  - id
      +                  - name
      +                  - category
      +                  - age
      +                  - sex
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +  /pets/{pet_id}:
      +    get:
      +      summary: Get details of a pet
      +      description: Get details of a pet by specifying its pet ID.
      +      operationId: getPetsPetId
      +      tags:
      +        - pets
      +      parameters:
      +        - name: pet_id
      +          in: path
      +          description: The id of the pet to retrieve
      +          schema:
      +            type: string
      +          required: true
      +      responses:
      +        "200":
      +          description: Expected response to a valid request
      +          content:
      +            application/json:
      +              schema:
      +                type: object
      +                properties:
      +                  pet_detail:
      +                    type: object
      +                    properties:
      +                      breeder:
      +                        type: string
      +                      date_of_birth:
      +                        type: string
      +                        format: date
      +                      pedigree:
      +                        type: object
      +                        properties:
      +                          registration_no:
      +                            type: integer
      +                            format: int64
      +                          date_of_registration:
      +                            type: string
      +                            format: date
      +                          pedigree_image:
      +                            type: string
      +                        required:
      +                          - registration_no
      +                          - date_of_registration
      +                          - pedigree_image
      +                required:
      +                  - pet_detail
      +              examples:
      +                TestCase003:
      +                  $ref: "#/components/examples/test_case_003"
      +        "404":
      +          $ref: "#/components/responses/NotFound"
      +        "500":
      +          $ref: "#/components/responses/InternalServerError"
      +components:
      +  securitySchemes:
      +    Bearer:
      +      type: http
      +      scheme: bearer
      +      bearerFormat: JWT
      +      description: Authenthicaiton with bearer token
      +  examples:
      +    test_case_001:
      +      value:
      +        pets:
      +          - id: 10001
      +            name: ToyPoodle
      +            category: dog
      +            sub_category: ToyPoodle
      +            age: 1
      +            sex: male
      +            note: friendly
      +            tag: dog10001
      +          - id: 10002
      +            name: Chihuahua
      +            category: dog
      +            sub_category: Chihuahua
      +            age: 1
      +            sex: female
      +            note: friendly
      +            tag: dog10002
      +          - id: 10003
      +            name: Shiba
      +            category: dog
      +            sub_category: Shiba
      +            age: 1
      +            sex: male
      +            note: friendly
      +            tag: dog10003
      +          - id: 10004
      +            name: MiniatureDachshund
      +            category: dog
      +            sub_category: MiniatureDachshund
      +            age: 1
      +            sex: female
      +            note: friendly
      +            tag: dog10004
      +    test_case_002:
      +      value:
      +        pets: []
      +    test_case_004:
      +      value:
      +        pet:
      +          id: 10005
      +          name: FrenchBulldog
      +          category: dog
      +          sub_category: FrenchBulldog
      +          age: 1
      +          sex: male
      +          note: friendly
      +          tag: dog10005
      +    test_case_003:
      +      value:
      +        pet_detail:
      +          breeder: BreederName
      +          date_of_birth: "2023-10-31"
      +          pedigree:
      +            registration_no: 11111111
      +            date_of_registration: "2023-10-31"
      +            pedigree_image: 9j2wBDAA...8QAPxAAAQQABAMGBAYDAAEDAg
      +  schemas:
      +    ProblemDetailError:
      +      type: object
      +      properties:
      +        code:
      +          type: integer
      +          format: int32
      +        message:
      +          type: string
      +      required:
      +        - code
      +        - message
      +  responses:
      +    NotFound:
      +      description: Not Found
      +      content:
      +        application/json:
      +          schema:
      +            $ref: "#/components/schemas/ProblemDetailError"
      +    InternalServerError:
      +      description: Internal Server Error
      +      content:
      +        application/json:
      +          schema:
      +            $ref: "#/components/schemas/ProblemDetailError"

    License

    CC-By-4.0


    1. https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/enable-cors-for-resource-using-swagger-importer-tool.html ↩︎

    `,66))])}const D=h(c,[["render",g]]);export{A as __pageData,D as default}; diff --git a/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.js b/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.js new file mode 100644 index 00000000..5088544b --- /dev/null +++ b/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.js @@ -0,0 +1,19 @@ +import{_ as a,c as i,a3 as n,o as e}from"./chunks/framework.BDUoXecB.js";const c=JSON.parse('{"title":"ファイルフォーマット規約","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/file_standards.md","filePath":"documents/forOpenAPISpecification/file_standards.md"}'),l={name:"documents/forOpenAPISpecification/file_standards.md"};function p(t,s,r,h,d,o){return e(),i("div",null,s[0]||(s[0]=[n(`

    ファイルフォーマット規約

    フォーマット

    OpenAPI ドキュメントは JSON 形式、YAML 形式いずれかのフォーマットで記載できるが YAML 形式 を利用する。

    理由として、JSON と比較して YAML は視覚的に見やすく、レビューや差分管理が行いやすいためである。

    ファイル名

    ファイルの拡張子は yaml とする。通常ファイル名は api.yamlswagger.yaml(v2 の場合) を推奨する。

    もし、複数の Swagger 定義を管理するため区別したい場合は \${service}_api.yaml とする。

    \${service} にはサービス名を指定する

    YAML バージョン

    YAML v1.2を用いる。

    ファイルレイアウト

    • ファイルの最終行には空行を入れる
    • 文字コードは UTF-8 とする
    • タブは半角スペース 2 つとする

    クォート

    クォートは可読性を上げるために、できる限り利用しない。利用する場合はダブルクォートを利用する。

    yaml
    # OK
    +description: 何かしらの説明
    +
    +# NG(クォートでのラップは不要)
    +description: '何かしらの説明'
    +description: "何かしらの説明"

    以下の場合は必須で利用する

    • 文字列として認識させる必要のある数字("0123")
    • 60 進数と認識させたくない場合("12:34")
    • Bool として認識させたくない("true", "false", "yes", "no", "y", "n", "on", "off")
    • # で始まる文字列(# はコメントを示す記号のためである。例: #/definitions/Users

    YAML 配列スタイル

    • 複数項目を指定する場合は、 Flow style(配列スキーム) を用いることを推奨する

      yaml
      # OK(推奨: 配列リテラル構文)
      +required: [user_id, user_name, account_type, register_at]
      +
      +# NG(非推奨: リスト構文)
      +required:
      +  - user_id
      +  - user_name
      +  - account_type
      +  - register_at
      • YAML は項目定義がネストすることで縦長な定義になりやすい。情報密度を上げるために配列リテラルを推奨する

    改行の表現

    改行を含む場合は、パイプ(ブロックスカラー) | を用いる

    yaml
    description: |
    +  説明文1
    +  説明文2
    +     - 箇条書き1
    +     - 箇条書き2
    +     - 箇条書き3
    `,22)]))}const u=a(l,[["render",p]]);export{c as __pageData,u as default}; diff --git a/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.lean.js b/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.lean.js new file mode 100644 index 00000000..5088544b --- /dev/null +++ b/assets/documents_forOpenAPISpecification_file_standards.md.w3u0kE1Z.lean.js @@ -0,0 +1,19 @@ +import{_ as a,c as i,a3 as n,o as e}from"./chunks/framework.BDUoXecB.js";const c=JSON.parse('{"title":"ファイルフォーマット規約","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/file_standards.md","filePath":"documents/forOpenAPISpecification/file_standards.md"}'),l={name:"documents/forOpenAPISpecification/file_standards.md"};function p(t,s,r,h,d,o){return e(),i("div",null,s[0]||(s[0]=[n(`

    ファイルフォーマット規約

    フォーマット

    OpenAPI ドキュメントは JSON 形式、YAML 形式いずれかのフォーマットで記載できるが YAML 形式 を利用する。

    理由として、JSON と比較して YAML は視覚的に見やすく、レビューや差分管理が行いやすいためである。

    ファイル名

    ファイルの拡張子は yaml とする。通常ファイル名は api.yamlswagger.yaml(v2 の場合) を推奨する。

    もし、複数の Swagger 定義を管理するため区別したい場合は \${service}_api.yaml とする。

    \${service} にはサービス名を指定する

    YAML バージョン

    YAML v1.2を用いる。

    ファイルレイアウト

    • ファイルの最終行には空行を入れる
    • 文字コードは UTF-8 とする
    • タブは半角スペース 2 つとする

    クォート

    クォートは可読性を上げるために、できる限り利用しない。利用する場合はダブルクォートを利用する。

    yaml
    # OK
    +description: 何かしらの説明
    +
    +# NG(クォートでのラップは不要)
    +description: '何かしらの説明'
    +description: "何かしらの説明"

    以下の場合は必須で利用する

    • 文字列として認識させる必要のある数字("0123")
    • 60 進数と認識させたくない場合("12:34")
    • Bool として認識させたくない("true", "false", "yes", "no", "y", "n", "on", "off")
    • # で始まる文字列(# はコメントを示す記号のためである。例: #/definitions/Users

    YAML 配列スタイル

    • 複数項目を指定する場合は、 Flow style(配列スキーム) を用いることを推奨する

      yaml
      # OK(推奨: 配列リテラル構文)
      +required: [user_id, user_name, account_type, register_at]
      +
      +# NG(非推奨: リスト構文)
      +required:
      +  - user_id
      +  - user_name
      +  - account_type
      +  - register_at
      • YAML は項目定義がネストすることで縦長な定義になりやすい。情報密度を上げるために配列リテラルを推奨する

    改行の表現

    改行を含む場合は、パイプ(ブロックスカラー) | を用いる

    yaml
    description: |
    +  説明文1
    +  説明文2
    +     - 箇条書き1
    +     - 箇条書き2
    +     - 箇条書き3
    `,22)]))}const u=a(l,[["render",p]]);export{c as __pageData,u as default}; diff --git a/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.js b/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.js new file mode 100644 index 00000000..5aa3e1fd --- /dev/null +++ b/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as r,o as i}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"OpenAPI Specification規約","tagline":"Future Enterprise Naming Convention Standards for OpenAPI Specification","actions":[{"theme":"brand","text":"OAS 3.0.3 規約","link":"./OpenAPI_Specification_3.0.3.md"},{"theme":"brand","text":"OAS 2.0(Swagger 2.0)規約","link":"./OpenAPI_Specification_2.0.md"}]}},"headers":[],"relativePath":"documents/forOpenAPISpecification/index.md","filePath":"documents/forOpenAPISpecification/index.md"}'),d={name:"documents/forOpenAPISpecification/index.md"};function o(n,t,c,p,s,l){return i(),a("div",null,t[0]||(t[0]=[r('

    OpenAPI Specification(OAS)の規約を、設計・開発・テスト・可読性・保守性・ツールによるコード生成や静的解析の観点からまとめています。

    対応するバージョンについて

    OpenAPI Specification(OAS)の規約を設計、開発、テスト、可読性、保守性、ツールによるコード生成や静的解析の観点からまとめています。

    OAS は次のように複数のバージョンが存在します。

    VersionDateNotes
    3.1.02021-02-15Release of the OpenAPI Specification 3.1.0
    3.0.32020-02-20Patch release of the OpenAPI Specification 3.0.3
    3.0.22018-10-08Patch release of the OpenAPI Specification 3.0.2
    3.0.12017-12-06Patch release of the OpenAPI Specification 3.0.1
    3.0.02017-07-26Release of the OpenAPI Specification 3.0.0
    2.02014-09-08Release of Swagger 2.0
    1.22014-03-14Initial release of the formal document.
    1.12012-08-22Release of Swagger 1.1
    1.02011-08-10First release of the Swagger Specification

    本規約はコード生成などのエコシステムがよく対応している、 3.0.32.0 の 2 つに対応しています。2023 年 3 月時点における最新の 3.1.0 には対応していないのでご注意ください。

    もし、新規に OpenAPI Specification で Web API の設計開発をする方は、 3.0.3 系を利用することを推奨しています。 2.0 系の規約に関しては、既存で利用しているシステムの存在や、利用を想定しているツールの制限などで必要な場面が少なからずあるということで公開しています。

    どのツールがどのバージョンに対応しているかは、以下のサイトを参考ください。

    https://openapi.tools/

    OpenAPI Specification Standards

    Versionコーディング規約
    3.0.3OAS 3.0.3 規約
    2.0OAS 2.0(Swagger 2.0)規約

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。 (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',16)]))}const u=e(d,[["render",o]]);export{f as __pageData,u as default}; diff --git a/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.lean.js b/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.lean.js new file mode 100644 index 00000000..5aa3e1fd --- /dev/null +++ b/assets/documents_forOpenAPISpecification_index.md.B3zVLlz8.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as r,o as i}from"./chunks/framework.BDUoXecB.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"OpenAPI Specification規約","tagline":"Future Enterprise Naming Convention Standards for OpenAPI Specification","actions":[{"theme":"brand","text":"OAS 3.0.3 規約","link":"./OpenAPI_Specification_3.0.3.md"},{"theme":"brand","text":"OAS 2.0(Swagger 2.0)規約","link":"./OpenAPI_Specification_2.0.md"}]}},"headers":[],"relativePath":"documents/forOpenAPISpecification/index.md","filePath":"documents/forOpenAPISpecification/index.md"}'),d={name:"documents/forOpenAPISpecification/index.md"};function o(n,t,c,p,s,l){return i(),a("div",null,t[0]||(t[0]=[r('

    OpenAPI Specification(OAS)の規約を、設計・開発・テスト・可読性・保守性・ツールによるコード生成や静的解析の観点からまとめています。

    対応するバージョンについて

    OpenAPI Specification(OAS)の規約を設計、開発、テスト、可読性、保守性、ツールによるコード生成や静的解析の観点からまとめています。

    OAS は次のように複数のバージョンが存在します。

    VersionDateNotes
    3.1.02021-02-15Release of the OpenAPI Specification 3.1.0
    3.0.32020-02-20Patch release of the OpenAPI Specification 3.0.3
    3.0.22018-10-08Patch release of the OpenAPI Specification 3.0.2
    3.0.12017-12-06Patch release of the OpenAPI Specification 3.0.1
    3.0.02017-07-26Release of the OpenAPI Specification 3.0.0
    2.02014-09-08Release of Swagger 2.0
    1.22014-03-14Initial release of the formal document.
    1.12012-08-22Release of Swagger 1.1
    1.02011-08-10First release of the Swagger Specification

    本規約はコード生成などのエコシステムがよく対応している、 3.0.32.0 の 2 つに対応しています。2023 年 3 月時点における最新の 3.1.0 には対応していないのでご注意ください。

    もし、新規に OpenAPI Specification で Web API の設計開発をする方は、 3.0.3 系を利用することを推奨しています。 2.0 系の規約に関しては、既存で利用しているシステムの存在や、利用を想定しているツールの制限などで必要な場面が少なからずあるということで公開しています。

    どのツールがどのバージョンに対応しているかは、以下のサイトを参考ください。

    https://openapi.tools/

    OpenAPI Specification Standards

    Versionコーディング規約
    3.0.3OAS 3.0.3 規約
    2.0OAS 2.0(Swagger 2.0)規約

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。 (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',16)]))}const u=e(d,[["render",o]]);export{f as __pageData,u as default}; diff --git a/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.js b/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.js new file mode 100644 index 00000000..60af1519 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.js @@ -0,0 +1 @@ +import{_ as i,c as l,a3 as t,o}from"./chunks/framework.BDUoXecB.js";const S=JSON.parse('{"title":"前提条件","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/prerequisite.md","filePath":"documents/forOpenAPISpecification/prerequisite.md"}'),a={name:"documents/forOpenAPISpecification/prerequisite.md"};function n(r,e,u,p,s,c){return o(),l("div",null,e[0]||(e[0]=[t('

    前提条件

    本規約は以下の前提で作成されたものである。

    • 業務システム向けの Web API 提供
      • サードパーティ向けに広く開発する Web API ではなく、限られたクライアントやシステムと連携すること
      • いわゆる、LSUDs(Large Set of Unknown Developers)ではなく、SSKDs(Small Set of Known Developers)を対象とする
    • RESTish な Web API
      • 原理的な REST を必ずしも守る必要はないが、例えば HTTP メソッドは、参照は GET、登録は POST、更新は PUT や PATCH、削除は DELETE で使い分けていたり、Web API の要求が成功すれば 200(OK)、204(No Content)を返し、リソースが無ければ 404(Not Found)、操作に失敗すれば 500 系のエラーを返すといったことを指す
      • 本規約を利用するに当たり必須条件ではないが、定義例などはそれに基づいて記載しているので注意する
    • スキーマファースト
      • OpenAPI Specification の定義ファイルを駆動に、クライアント・サーバサイドのコード生成やモック時の利用に用い、高速な Web API 開発につなげることを前提とする
        • Python における、FastAPI・Django REST Framework のように、アプリケーションコードから OpenAPI document を自動生成する開発手法も存在するが、本規約はこれは想定しない
      • 定義ファイルの完成度はできるかぎり高め、コード生成やドキュメントの価値を高める
        • OAS 定義からコードを生成し、通常は記載した型・項目長・最大~最小・enum・必須定義・正規表現フォーマットでバリデーションを行い、カバーできない部分のバリデーションをアプリケーション固有ロジックとして実装する方針とする。例えば、複数項目間のチェックや DB を確認しないと行えないチェックである
        • ドキュメントとしての価値を高めるため、その API 呼び出しで発生しうる全ての HTTP ステータスコードを記載する
          • API の振る舞いを読み手に伝えるものとして、どのような異常系があるかは有用な場合が多いからである
    • JavaScript/TypeScript、Java、Go のエコシステムがターゲット
      • OpenAPI Specification は広く受け入れられており、コレに対応する様々なツールやフレームワークといったエコシステムがあり、中には定義された設定がうまく認識されない場合がある。本規約では対応していないツールが多い場合、特定の記法を非推奨とすることがあり、同時にその理由も説明する
      • 全ての言語・フレームワーク・ツールの対応状況は調査しきれていないため、利用するプロダクトの対応状況は利用者側で確認をお願いする
    ',5)]))}const d=i(a,[["render",n]]);export{S as __pageData,d as default}; diff --git a/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.lean.js b/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.lean.js new file mode 100644 index 00000000..60af1519 --- /dev/null +++ b/assets/documents_forOpenAPISpecification_prerequisite.md.CKdKBsUx.lean.js @@ -0,0 +1 @@ +import{_ as i,c as l,a3 as t,o}from"./chunks/framework.BDUoXecB.js";const S=JSON.parse('{"title":"前提条件","description":"","frontmatter":{},"headers":[],"relativePath":"documents/forOpenAPISpecification/prerequisite.md","filePath":"documents/forOpenAPISpecification/prerequisite.md"}'),a={name:"documents/forOpenAPISpecification/prerequisite.md"};function n(r,e,u,p,s,c){return o(),l("div",null,e[0]||(e[0]=[t('

    前提条件

    本規約は以下の前提で作成されたものである。

    • 業務システム向けの Web API 提供
      • サードパーティ向けに広く開発する Web API ではなく、限られたクライアントやシステムと連携すること
      • いわゆる、LSUDs(Large Set of Unknown Developers)ではなく、SSKDs(Small Set of Known Developers)を対象とする
    • RESTish な Web API
      • 原理的な REST を必ずしも守る必要はないが、例えば HTTP メソッドは、参照は GET、登録は POST、更新は PUT や PATCH、削除は DELETE で使い分けていたり、Web API の要求が成功すれば 200(OK)、204(No Content)を返し、リソースが無ければ 404(Not Found)、操作に失敗すれば 500 系のエラーを返すといったことを指す
      • 本規約を利用するに当たり必須条件ではないが、定義例などはそれに基づいて記載しているので注意する
    • スキーマファースト
      • OpenAPI Specification の定義ファイルを駆動に、クライアント・サーバサイドのコード生成やモック時の利用に用い、高速な Web API 開発につなげることを前提とする
        • Python における、FastAPI・Django REST Framework のように、アプリケーションコードから OpenAPI document を自動生成する開発手法も存在するが、本規約はこれは想定しない
      • 定義ファイルの完成度はできるかぎり高め、コード生成やドキュメントの価値を高める
        • OAS 定義からコードを生成し、通常は記載した型・項目長・最大~最小・enum・必須定義・正規表現フォーマットでバリデーションを行い、カバーできない部分のバリデーションをアプリケーション固有ロジックとして実装する方針とする。例えば、複数項目間のチェックや DB を確認しないと行えないチェックである
        • ドキュメントとしての価値を高めるため、その API 呼び出しで発生しうる全ての HTTP ステータスコードを記載する
          • API の振る舞いを読み手に伝えるものとして、どのような異常系があるかは有用な場合が多いからである
    • JavaScript/TypeScript、Java、Go のエコシステムがターゲット
      • OpenAPI Specification は広く受け入れられており、コレに対応する様々なツールやフレームワークといったエコシステムがあり、中には定義された設定がうまく認識されない場合がある。本規約では対応していないツールが多い場合、特定の記法を非推奨とすることがあり、同時にその理由も説明する
      • 全ての言語・フレームワーク・ツールの対応状況は調査しきれていないため、利用するプロダクトの対応状況は利用者側で確認をお願いする
    ',5)]))}const d=i(a,[["render",n]]);export{S as __pageData,d as default}; diff --git "a/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.js" "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.js" new file mode 100644 index 00000000..4b2acc87 --- /dev/null +++ "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.js" @@ -0,0 +1,183 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as h}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"SQLコーディング規約(Oracle)","description":"","frontmatter":{"sidebarDepth":4,"title":"SQLコーディング規約(Oracle)","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"SQLコーディング規約,Oracle,コーディング規約,SQL"}]]},"headers":[],"relativePath":"documents/forSQL/SQLコーディング規約(Oracle).md","filePath":"documents/forSQL/SQLコーディング規約(Oracle).md"}'),t={name:"documents/forSQL/SQLコーディング規約(Oracle).md"};function k(r,s,d,E,c,b){const i=e("page-title");return h(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    前提条件

    本書は、SQL コーディング規約についてまとめたものである。
    今回 RDBMS として採用する Oracle での SQL の使用を前提に記述している。

    SQL コーティング規約(可読性・管理性)

    本章では可読性・管理性を高めることを目的としたコーディング規約について記載する。

    書式全般

    書式全般についてのコーディング規約を下記に示す。

    • 1 行につき、1 文のみを記述する。
    • SQL 中のインデントは、Java コーディング規約にあわせて半角スペースではなくタブ文字とする。
    • ヘボン式ローマ字を使用する。
    • 外来語に関しては、原語の綴りを使用する。
    • 横は 80 文字を目安に改行する。
    • 定数を条件に用いる場合やインライン・ビューで取得したいデータなど開発者の意図はコメントにて記載する。

    予約語

    予約語に対しては、大文字を使用する。(例 : SELECTINSERTUPDATEDELETE 等)

    予約語以外

    予約語以外に対しても、予約語と同様に大文字を使用する。(例 : オブジェクト名、カラム名 等)

    短縮名称

    SQL 中に記述するエイリアス名など単語の短縮について示す。

    1. 外来語に関しては、原語の短縮形を使用する。短縮形が存在しない場合には、母音を抜かして表記する。
      例) corporation → corp / computer → cmptr

    2. ローマ字の短縮は、単語の区切れの頭文字、または母音を抜かした子音字等を利用する。
      例) nichijo → nchj

    • カラムには必ずテーブルエイリアスを付与する
    • テーブルのエイリアスは必ず付与すること。
      必要ない場合(単一テーブルへの SELECT 等)も必ず付与すること
      また、テーブルのエイリアス名は同 SQL 文の中で重複しないように命名すること。
      (副問い合わせで利用したエイリアス名をメインの SQL 中のエイリアス名に利用しない。など)

    文字コード

    SQL ファイルの文字コード(エンコーディング)は Java ソースファイルと同じく『 Unicode UTF-8 』で保存する。

    不要な空白文字(スペース)は除去する

    不要な空白文字(スペース)は除去すること。

    SQL 文の整形

    DML 文の節に対する予約語は左揃えにする。
    項目ごとに改行を入れ、項目の前にはインデントを挿入する。カンマは項目の前へ記入する。
    Java ソースファイルのようにファイルの先頭にコメント行を入れると DB 分析作業に支障があるため禁止とする。
    よって SQL ファイルの先頭は必ずSELECTUPDATEINSERTDELETEMERGEの何れかになる。

    物理カラム名、テーブル名に対応する論理名を入れる場合、その後ろに単数行コメント(-- )にて記述する。
    SQL 内に挿入する単数行コメントは、/*(半角スペース)コメント本文(半角スペース)*/ で行う。
    ,(カンマ)とANDについては各行の先頭に記述する。(以下の例を参照のこと)
    SQL フレームワークで実行する SQL の場合、SQL ステートメントの終わりを示す;(セミコロン)は記述しない。

    良い例:

    sql
    SELECT
    +/*
    +	処理名
    +*/
    +	TBL1.COLUMN1	AS	COLUMN1	-- カラム1
    +,	TBL1.COLUMN2	AS	COLUMN2	-- カラム2
    +FROM
    +	TABLE1	TBL1	-- テーブル1

    WHERE 句の=!=ISIS NULLIS)の縦位置は揃える。

    良い例:

    sql
    WHERE
    +	A.TEN_NO	=	B.TEN_NO
    +AND	A.KAMOKU_CD	!=	'1'
    +AND	A.ANKEN_NO	IS	NULL

    SELECT 文

    良い例:

    sql
    SELECT
    +	TBL1.COLUMN1	AS	COLUMN1	-- カラム1
    +,	TBL1.COLUMN2	AS	COLUMN2	-- カラム2
    +FROM
    +	TABLE1	TBL1	-- テーブル1
    +WHERE
    +	TBL1.COLUMN3	=	1
    +ORDER BY
    +	TBL1.COLUMN1
    +,	TBL1.COLUMN2

    INSERT 文

    良い例:

    sql
    INSERT
    +INTO
    +	TABLE1	-- テーブル1
    +(
    +	COLUMN1	-- カラム1
    +,	COLUMN2	-- カラム2
    +,	COLUMN3	-- カラム3
    +) VALUES (
    +	VALUE1
    +,	VALUE2
    +,	VALUE3
    +)

    UPDATE 文

    良い例:

    sql
    UPDATE
    +	TABLE1	TBL1	-- テーブル1
    +SET
    +	TBL1.COLUMN2	=	100	-- カラム2
    +,	TBL1.COLUMN3	=	100	-- カラム3
    +WHERE
    +	TBL1.COLUMN1	=	10

    DELETE 文

    良い例:

    sql
    DELETE
    +FROM
    +	TABLE1	TBL1	-- テーブル1
    +WHERE
    +	TBL1.VALUE	=	1

    MERGE 文

    DB 結合条件が一致した場合と不一致になった場合の、それぞれの SQL 文を記述する。

    良い例:

    sql
    MERGE
    +INTO
    +	PROFILE	P				-- PROFILEテーブル
    +USING
    +	NAME	N				-- NAMEテーブル
    +ON
    +	(
    +		P.NAME	= N.NAME		-- 条件
    +	)
    +WHEN MATCHED THEN			-- 条件が一致
    +	/*UPDATE文*/
    +WHEN NOT MATCHED THEN		-- 条件が不一致
    +	/*INSERT文*/

    AND(副問い合わせ)

    良い例:

    sql
    AND	XXX	=	(
    +		SELECT
    +			TBL1.COLUMN1
    +		,	TBL1.COLUMN2
    +		FROM
    +			TABLE1	TBL1
    +	)

    CASE 式

    CASE 式は下記のように記載すること。

    良い例:

    sql
    CASE
    +	WHEN
    +		XXX.HOGE	=	YYY.FUGA
    +	AND	XXX.FUGA	=	YYY.FUGA
    +	THEN
    +		1
    +	ELSE
    +		0
    +END

    CASEWHENTHENELSEの後に改行を挿入すること。
    CASEの後、ENDの前までは 1 インデント挿入すること。

    IN 句

    カンマの後にスペースを1文字入れる。

    比較演算子

    比較演算子の前後にタブ(またはスペース)を1文字入れる。

    改行位置

    SELECT 句、ORDER BY 句、GROUP BY 句等は最初に出現するカラムとカラムの区切りのカンマ前に改行を入れること。
    SELECT の FROM 句の最初に出現するテーブルと結合テーブルの区切りのカンマ前に改行を入れること。
    WHERE 句、MERGE の ON 句の各条件文の(AND や OR の)前に改行を入れること。
    命令句の後は、ヒント句が挿入できるように改行すること。

    良い例:

    sql
    SELECT
    +	T1.COLUMN1	AS	COLUMN1
    +,	T2.COLUMN2	AS	COLUMN2
    +FROM
    +	TABLE1	T1
    +,	TABLE2	T2
    +WHERE
    +	T1.COLUMN3	=	1
    +AND	T1.COLUMN4	=	T2.COLUMN4
    +ORDER BY
    +	T1.COLUMN1
    +,	T2.COLUMN2

    WITH 句

    WITH の前後に改行を挿入すること
    また、インデントは下記のように記述すること

    良い例:

    sql
    -- カラムエイリアスあり
    +WITH
    +    NAME1   (
    +        COL_ALIAS1  -- カラム1
    +    ,   COL_ALIAS2  -- カラム2
    +    )   AS  (
    +        SELECT
    +        ・・・
    +    )
    +,   NAME2   (
    +        COL_ALIAS1  -- カラム1
    +    ,   COL_ALIAS2  -- カラム2
    +    )   AS  (
    +        SELECT
    +        ・・・
    +    )
    +
    +-- カラムエイリアスなし
    +WITH
    +    NAME1   AS  (
    +        SELECT
    +        ・・・
    +    )
    +,   NAME2   AS  (
    +        SELECT
    +        ・・・
    +    )

    OFFSET 句 FETCH 句

    OFFSET、FETCH の前に改行を挿入すること

    良い例:

    sql
    SELECT
    +	TBL1.COLUMN1	AS	COLUMN1
    +FROM
    +	TABLE1	TBL1
    +ORDER BY
    +	TBL1.COLUMN2	DESC
    +OFFSET 5 ROWS
    +FETCH NEXT 5 ROWS ONLY

    HINT 句

    HINT 句は独立した行で記載すること
    HINT 内容にはインデントを付けること

    良い例:

    sql
    SELECT
    +/*+
    +	ここにHINTを記載
    +*/
    +	TBL1.COLUMN1	AS	COLUMN1
    +FROM
    +	TABLE1	TBL1
    +WHERE
    +	TBL1.COLUMN2	=	1

    コメント

    • 修正コメント

      (修正コメントが必要な場合、)
      処理追加の際、追加行の 1 行目の前と最終行の次の行にコメントを入れる。単一行の場合は、同一行の最後にコメントをつける。

      良い例:

      sql
      -- 2004/04/23 仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 S ← 修正開始点コメント
      +(追加処理)
      +-- 2004/04/23仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 E ← 修正終了点コメント
    • 単数行コメント

      SQL 内で使用する単数行コメント(カラムコメントなど)には、「 -- 」を使用する。

    • 複数行コメント

      /* */ 」を使用する。下記に例を示す。
      なお、前述で触れたとおり、SQL ファイルの先頭にコメントを記述することは禁止とする。

      良い例:

      sql
      /**********************************************************************/
      +/*
      + * コメントを始めるスラッシュとアスタリスクは、それだけを1行に置く。
      + * それから、コメント・ブロック内の各行は縦にアスタリスクを置き
      + * コメントがあることを強調する。
      + * 最後に、アスタリスクとスラッシュは、それだけを1行に置く。
      + */
      +/**********************************************************************/
    • 複数行コメントアウト

      複数行をコメントアウトする場合は、各行を「--」でコメントアウトする。
      /* */ 」を使用すると、その中に「 /* */ 」が存在した場合、コメントアウトが途中で切れてしまう恐れがあるため、
      使用しない。

    • 論理名の記載

      SELECTINSERTUPDATEMERGEのカラム名記述箇所には単数行コメントでカラムの論理名を記載する。
      SELECTINSERTUPDATEDELETEMERGEのテーブル名記述箇所には単数行コメントでテーブルの論理名を記載する。
      論理名は ERD 等で定義された論理名と必ず一致させること。

    外部結合

    結合方法は ANSI 形式(~outer join ~)ではなく Oracle 形式(+)を使用する。
    原則として(+)は条件文の右にくるカラムに付与する。

    良い例:

    sql
    T1.COL1	=	T2.COL2(+)

    型変換

    代入や WHERE 句の条件設定などでデータ・タイプが異なる場合、明示的にタイプ変換を行う。(暗黙の型変換は使用しない)

    比較演算子

    「等しくない」を示す演算子は「!=」を利用する。「<>」「^=」も動作するが統一の観点から利用しない。

    ORDER BY 句

    ORDER BY 数字の構文は使用せずに、カラム名を記載する。

    GROUP BY 句

    GROUP BY 数字の構文は使用せずに、カラム名を記載する。

    集約関数を利用する場合は必ず記載すること。(省略可能であっても省略しない)

    EXISTS 句

    EXISTS 句を記載する際、サブクエリになる SELECT 句の指定は定数「1」とする。
    *」(ワイルドカード)や「'X'」は統一の観点から利用しない。
    また「*」(ワイルドカード)についてはパフォーマンスの観点からも禁止とする。

    良い例:

    sql
    WHERE
    +	EXISTS(
    +		SELECT
    +			1
    +		FROM
    +			FOO	F
    +		WHERE
    +			F.COL1	=	M.KEY
    +	)

    AS 句

    トップレベルの SELECT 句には必ずAS句を記載し別名を付ける。
    同一の名前であっても AS 句を付与する。
    また、「AS」は省略可能であるが、省略はしないこと。

    WHERE 句

    • 論理名の記載
      WHERE 句でカラムと式を比較する際は左辺がカラムになるように記載すること。

      良い例:

      sql
      WHERE
      +	TBL.COLUMN1	=	1
      +AND	TBL.AMOUNT2	>	TBL.AMOUNT3	+	TBL.AMOUNT4
    • 条件式の順序
      原則として、WHERE 句で条件式を列挙する際、下記の順序を守ること。

      1. テーブル単位にまとめて順番に記述する
        この際、テーブルの順序は FROM 句に記述した順序に準ずること。
      2. 1.のテーブル単位の中で絞り込み条件をまず記述し、その後結合条件を記述する。

      良い例:

      sql
      FROM
      +	A_TABLE	A	-- A_TABLE
      +,	B_TABLE	B	-- B_TABLE
      +,	C_TABLE	C	-- C_TABLE
      +WHERE
      +-- A_TABLEの絞り込み
      +	A.KEY1		=	?
      +AND	A.KEY2		=	?
      +-- B_TABLEの絞り込み
      +AND	B.KEY1		=	?
      +AND	B.KEY2		=	?
      +-- B_TABLEの結合条件
      +AND	B.COL1		=	A.COL1
      +-- C_TABLEの絞り込み
      +AND	C.KEY1		=	?
      +AND	C.KEY2		=	?
      +-- C_TABLEの結合条件
      +AND	C.COL1		=	A.COL1
      +AND	C.COL2		=	A.COL2
      +AND	C.COL3		=	B.COL3

    COUNT 文

    レコード数を数える COUNT 文の記述はCOUNT(*)と記述する。
    COUNT(1)COUNT('X')COUNT(KEY1)という記載は NG。

    SQL コーディング規約(パフォーマンス性)

    本章ではパフォーマンス性を高めることを目的としたコーディング規約について記載する。

    検索

    検索処理におけるコーディング規約を下記に示す。

    • 中間一致、後方一致検索はインデックスを利用できないため避ける

    • 検索条件で=(等号)を使用できる場合は必ず使用する

      A=1 or A=2とする方がA>0 and A<3などと記述するのよりパフォーマンス上優位な場合が多い。
      これは A にインデックスがある場合、=であれば、インデックスが有効に使われるためである。

    • 可能な限り検索条件にパーティションキーの値を指定する

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する

    • インデックスによる検索を指定したい場合、下記の記載を行わない

      • インデックスカラムを含む演算に対して条件指定

        悪い例:

        sql
        TBL1.COL1	+	1	>	100 /* NGパターン 右辺で演算してください */

        良い例:

        sql
        TBL1.COL1	>	100	-	1
      • インデックスカラムに関数を通した値に対して条件指定

        悪い例:

        sql
        /* NGパターン 右辺に関数を通してください */
        +TO_CHAR(TBL1.COL1, 'YYYYMMDD')	>	'20151231'

        良い例:

        sql
        TBL1.COL1	>=	TO_DATE('20160101', 'YYYYMMDD')
      • インデックスカラムをORで条件指定(禁止ではないが原則行わない)

        悪い例:

        sql
        (
        +	/* NGパターンINDEXが利用されない場合があります。他の方法を検討してください */
        +		TBL1.COL1	=	1
        +	OR	TBL1.COL1	=	2
        +	)

    挿入

    挿入処理におけるコーディング規約を下記に示す。

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する。

    更新

    更新処理におけるコーディング規約を下記に示す。

    • 主キーの値の UPDATE は原則行わない。外部キーがあればエラーになる。
      外部キーが無い場合でも、事実上、主キーの値を利用して、検索、更新する場合は、リンクが切れてしまう。
    • パーティションキーの UPDATE は原則行わない。
    • VIEW を使用するデータ更新は禁止。更新は実表に対して行う。

    削除

    削除処理におけるコーディング規約を下記に示す。

    • 大量件数(数百万件レベル)の delete 文発行は避ける。

    WITH 句

    WITH 句の誤った使い方はパフォーマンスの劣化を招くため、WITH 句を利用する場合は DBA に相談する。

    DISTINCT 句

    DISTINCT は、暗黙のソート処理が行われる可能性があるため性能劣化につながる。
    EXISTS 句の使用・代替を検討すること。

    悪い例:

    sql
    SELECT
    +    DISTINCT
    +    D.NO    AS  DEPT_NO
    +,   D.NAME  AS  DEPT_NAME
    +FROM
    +    DEPARTMENT  D
    +,   EMPLOYEE    E
    +WHERE
    +    D.NO    =   E.DEPT_NO   -- 社員が一人以上属している部門を取得

    良い例:

    sql
    SELECT
    +    D.NO    AS  DEPT_NO
    +,   D.NAME  AS  DEPT_NAME
    +FROM
    +    DEPARTMENT  D
    +WHERE
    +    EXISTS(
    +        SELECT
    +            1
    +        FROM
    +            EMPLOYEE    E
    +        WHERE
    +            D.NO    =   E.DEPT_NO   -- 社員が一人以上属している部門を取得
    +    )

    IN 句

    IN 句は最大 1000 個まで指定できるが、200 個程度でも ORA エラーが発生するケースがある。
    また IN 句の少しだけ異なる SQL が大量に発行されると CPU 高騰やメモリ枯渇を招く。
    従って 100 を超えるような長い IN 句は使用せず、一時表を利用して IN (SELECT ・・・ FROM 一時表)のように書き換える。

    NOT IN 句

    原則NOT IN(SELECT~)は使用せずに、NOT EXISTS (SELECT~)を使用する。
    NOT IN句は、内部的にソートマージの結合をすることでテーブルをフルスキャンする場合があるため、性能が悪化する可能性がある。

    UNION 句

    UNIONDISTINCT処理が含まれパフォーマンス上問題があるため、UNION ALLを使用する。

    パラレルヒント句

    パラレルヒント句は DB 負荷が高いため、原則使用禁止とする。付与したい場合は DBA に相談する。

    SELECT FOR UPDATE

    • SELECT FOR UPDATENO WAITまたは「WAIT秒数指定」を必ず付ける。
      WAIT指定なしの場合はロックが解除されてもプログラムに制御が返らないことがある。
      ※WAIT 秒数指定を行う際の秒数は各開発者で決めるのではなくプロジェクトで決定した方針に従うこと。
      また、SQL ライブラリを利用していて定数が記述できる場合は定数で記述すること。
    • SELECT FOR UPDATEで複数行にロックをかける場合、同時実行されるとデットロックを起こす可能性があるため、1件のロックでない場合はORDER BYを指定する。

    分析関数

    分析関数の使用は可能だが、性能悪化を招く恐れがあるため、特性を知らない方は DBA に相談する。

    インデックス

    インデックスの必要性については DBA で最終判断するため、必要とする場合は DBA へ相談する。

    外部結合

    外部結合する際、内部表(駆動表)はなるべく想定件数の少ない表にする。


    License

    CC-By-4.0

    `,139))])}const y=a(t,[["render",k]]);export{o as __pageData,y as default}; diff --git "a/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.lean.js" "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.lean.js" new file mode 100644 index 00000000..4b2acc87 --- /dev/null +++ "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210Oracle\357\274\211.md.DWD8TXZm.lean.js" @@ -0,0 +1,183 @@ +import{_ as a,c as n,G as l,a3 as p,B as e,o as h}from"./chunks/framework.BDUoXecB.js";const o=JSON.parse('{"title":"SQLコーディング規約(Oracle)","description":"","frontmatter":{"sidebarDepth":4,"title":"SQLコーディング規約(Oracle)","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"SQLコーディング規約,Oracle,コーディング規約,SQL"}]]},"headers":[],"relativePath":"documents/forSQL/SQLコーディング規約(Oracle).md","filePath":"documents/forSQL/SQLコーディング規約(Oracle).md"}'),t={name:"documents/forSQL/SQLコーディング規約(Oracle).md"};function k(r,s,d,E,c,b){const i=e("page-title");return h(),n("div",null,[l(i),s[0]||(s[0]=p(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    前提条件

    本書は、SQL コーディング規約についてまとめたものである。
    今回 RDBMS として採用する Oracle での SQL の使用を前提に記述している。

    SQL コーティング規約(可読性・管理性)

    本章では可読性・管理性を高めることを目的としたコーディング規約について記載する。

    書式全般

    書式全般についてのコーディング規約を下記に示す。

    • 1 行につき、1 文のみを記述する。
    • SQL 中のインデントは、Java コーディング規約にあわせて半角スペースではなくタブ文字とする。
    • ヘボン式ローマ字を使用する。
    • 外来語に関しては、原語の綴りを使用する。
    • 横は 80 文字を目安に改行する。
    • 定数を条件に用いる場合やインライン・ビューで取得したいデータなど開発者の意図はコメントにて記載する。

    予約語

    予約語に対しては、大文字を使用する。(例 : SELECTINSERTUPDATEDELETE 等)

    予約語以外

    予約語以外に対しても、予約語と同様に大文字を使用する。(例 : オブジェクト名、カラム名 等)

    短縮名称

    SQL 中に記述するエイリアス名など単語の短縮について示す。

    1. 外来語に関しては、原語の短縮形を使用する。短縮形が存在しない場合には、母音を抜かして表記する。
      例) corporation → corp / computer → cmptr

    2. ローマ字の短縮は、単語の区切れの頭文字、または母音を抜かした子音字等を利用する。
      例) nichijo → nchj

    • カラムには必ずテーブルエイリアスを付与する
    • テーブルのエイリアスは必ず付与すること。
      必要ない場合(単一テーブルへの SELECT 等)も必ず付与すること
      また、テーブルのエイリアス名は同 SQL 文の中で重複しないように命名すること。
      (副問い合わせで利用したエイリアス名をメインの SQL 中のエイリアス名に利用しない。など)

    文字コード

    SQL ファイルの文字コード(エンコーディング)は Java ソースファイルと同じく『 Unicode UTF-8 』で保存する。

    不要な空白文字(スペース)は除去する

    不要な空白文字(スペース)は除去すること。

    SQL 文の整形

    DML 文の節に対する予約語は左揃えにする。
    項目ごとに改行を入れ、項目の前にはインデントを挿入する。カンマは項目の前へ記入する。
    Java ソースファイルのようにファイルの先頭にコメント行を入れると DB 分析作業に支障があるため禁止とする。
    よって SQL ファイルの先頭は必ずSELECTUPDATEINSERTDELETEMERGEの何れかになる。

    物理カラム名、テーブル名に対応する論理名を入れる場合、その後ろに単数行コメント(-- )にて記述する。
    SQL 内に挿入する単数行コメントは、/*(半角スペース)コメント本文(半角スペース)*/ で行う。
    ,(カンマ)とANDについては各行の先頭に記述する。(以下の例を参照のこと)
    SQL フレームワークで実行する SQL の場合、SQL ステートメントの終わりを示す;(セミコロン)は記述しない。

    良い例:

    sql
    SELECT
    +/*
    +	処理名
    +*/
    +	TBL1.COLUMN1	AS	COLUMN1	-- カラム1
    +,	TBL1.COLUMN2	AS	COLUMN2	-- カラム2
    +FROM
    +	TABLE1	TBL1	-- テーブル1

    WHERE 句の=!=ISIS NULLIS)の縦位置は揃える。

    良い例:

    sql
    WHERE
    +	A.TEN_NO	=	B.TEN_NO
    +AND	A.KAMOKU_CD	!=	'1'
    +AND	A.ANKEN_NO	IS	NULL

    SELECT 文

    良い例:

    sql
    SELECT
    +	TBL1.COLUMN1	AS	COLUMN1	-- カラム1
    +,	TBL1.COLUMN2	AS	COLUMN2	-- カラム2
    +FROM
    +	TABLE1	TBL1	-- テーブル1
    +WHERE
    +	TBL1.COLUMN3	=	1
    +ORDER BY
    +	TBL1.COLUMN1
    +,	TBL1.COLUMN2

    INSERT 文

    良い例:

    sql
    INSERT
    +INTO
    +	TABLE1	-- テーブル1
    +(
    +	COLUMN1	-- カラム1
    +,	COLUMN2	-- カラム2
    +,	COLUMN3	-- カラム3
    +) VALUES (
    +	VALUE1
    +,	VALUE2
    +,	VALUE3
    +)

    UPDATE 文

    良い例:

    sql
    UPDATE
    +	TABLE1	TBL1	-- テーブル1
    +SET
    +	TBL1.COLUMN2	=	100	-- カラム2
    +,	TBL1.COLUMN3	=	100	-- カラム3
    +WHERE
    +	TBL1.COLUMN1	=	10

    DELETE 文

    良い例:

    sql
    DELETE
    +FROM
    +	TABLE1	TBL1	-- テーブル1
    +WHERE
    +	TBL1.VALUE	=	1

    MERGE 文

    DB 結合条件が一致した場合と不一致になった場合の、それぞれの SQL 文を記述する。

    良い例:

    sql
    MERGE
    +INTO
    +	PROFILE	P				-- PROFILEテーブル
    +USING
    +	NAME	N				-- NAMEテーブル
    +ON
    +	(
    +		P.NAME	= N.NAME		-- 条件
    +	)
    +WHEN MATCHED THEN			-- 条件が一致
    +	/*UPDATE文*/
    +WHEN NOT MATCHED THEN		-- 条件が不一致
    +	/*INSERT文*/

    AND(副問い合わせ)

    良い例:

    sql
    AND	XXX	=	(
    +		SELECT
    +			TBL1.COLUMN1
    +		,	TBL1.COLUMN2
    +		FROM
    +			TABLE1	TBL1
    +	)

    CASE 式

    CASE 式は下記のように記載すること。

    良い例:

    sql
    CASE
    +	WHEN
    +		XXX.HOGE	=	YYY.FUGA
    +	AND	XXX.FUGA	=	YYY.FUGA
    +	THEN
    +		1
    +	ELSE
    +		0
    +END

    CASEWHENTHENELSEの後に改行を挿入すること。
    CASEの後、ENDの前までは 1 インデント挿入すること。

    IN 句

    カンマの後にスペースを1文字入れる。

    比較演算子

    比較演算子の前後にタブ(またはスペース)を1文字入れる。

    改行位置

    SELECT 句、ORDER BY 句、GROUP BY 句等は最初に出現するカラムとカラムの区切りのカンマ前に改行を入れること。
    SELECT の FROM 句の最初に出現するテーブルと結合テーブルの区切りのカンマ前に改行を入れること。
    WHERE 句、MERGE の ON 句の各条件文の(AND や OR の)前に改行を入れること。
    命令句の後は、ヒント句が挿入できるように改行すること。

    良い例:

    sql
    SELECT
    +	T1.COLUMN1	AS	COLUMN1
    +,	T2.COLUMN2	AS	COLUMN2
    +FROM
    +	TABLE1	T1
    +,	TABLE2	T2
    +WHERE
    +	T1.COLUMN3	=	1
    +AND	T1.COLUMN4	=	T2.COLUMN4
    +ORDER BY
    +	T1.COLUMN1
    +,	T2.COLUMN2

    WITH 句

    WITH の前後に改行を挿入すること
    また、インデントは下記のように記述すること

    良い例:

    sql
    -- カラムエイリアスあり
    +WITH
    +    NAME1   (
    +        COL_ALIAS1  -- カラム1
    +    ,   COL_ALIAS2  -- カラム2
    +    )   AS  (
    +        SELECT
    +        ・・・
    +    )
    +,   NAME2   (
    +        COL_ALIAS1  -- カラム1
    +    ,   COL_ALIAS2  -- カラム2
    +    )   AS  (
    +        SELECT
    +        ・・・
    +    )
    +
    +-- カラムエイリアスなし
    +WITH
    +    NAME1   AS  (
    +        SELECT
    +        ・・・
    +    )
    +,   NAME2   AS  (
    +        SELECT
    +        ・・・
    +    )

    OFFSET 句 FETCH 句

    OFFSET、FETCH の前に改行を挿入すること

    良い例:

    sql
    SELECT
    +	TBL1.COLUMN1	AS	COLUMN1
    +FROM
    +	TABLE1	TBL1
    +ORDER BY
    +	TBL1.COLUMN2	DESC
    +OFFSET 5 ROWS
    +FETCH NEXT 5 ROWS ONLY

    HINT 句

    HINT 句は独立した行で記載すること
    HINT 内容にはインデントを付けること

    良い例:

    sql
    SELECT
    +/*+
    +	ここにHINTを記載
    +*/
    +	TBL1.COLUMN1	AS	COLUMN1
    +FROM
    +	TABLE1	TBL1
    +WHERE
    +	TBL1.COLUMN2	=	1

    コメント

    • 修正コメント

      (修正コメントが必要な場合、)
      処理追加の際、追加行の 1 行目の前と最終行の次の行にコメントを入れる。単一行の場合は、同一行の最後にコメントをつける。

      良い例:

      sql
      -- 2004/04/23 仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 S ← 修正開始点コメント
      +(追加処理)
      +-- 2004/04/23仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 E ← 修正終了点コメント
    • 単数行コメント

      SQL 内で使用する単数行コメント(カラムコメントなど)には、「 -- 」を使用する。

    • 複数行コメント

      /* */ 」を使用する。下記に例を示す。
      なお、前述で触れたとおり、SQL ファイルの先頭にコメントを記述することは禁止とする。

      良い例:

      sql
      /**********************************************************************/
      +/*
      + * コメントを始めるスラッシュとアスタリスクは、それだけを1行に置く。
      + * それから、コメント・ブロック内の各行は縦にアスタリスクを置き
      + * コメントがあることを強調する。
      + * 最後に、アスタリスクとスラッシュは、それだけを1行に置く。
      + */
      +/**********************************************************************/
    • 複数行コメントアウト

      複数行をコメントアウトする場合は、各行を「--」でコメントアウトする。
      /* */ 」を使用すると、その中に「 /* */ 」が存在した場合、コメントアウトが途中で切れてしまう恐れがあるため、
      使用しない。

    • 論理名の記載

      SELECTINSERTUPDATEMERGEのカラム名記述箇所には単数行コメントでカラムの論理名を記載する。
      SELECTINSERTUPDATEDELETEMERGEのテーブル名記述箇所には単数行コメントでテーブルの論理名を記載する。
      論理名は ERD 等で定義された論理名と必ず一致させること。

    外部結合

    結合方法は ANSI 形式(~outer join ~)ではなく Oracle 形式(+)を使用する。
    原則として(+)は条件文の右にくるカラムに付与する。

    良い例:

    sql
    T1.COL1	=	T2.COL2(+)

    型変換

    代入や WHERE 句の条件設定などでデータ・タイプが異なる場合、明示的にタイプ変換を行う。(暗黙の型変換は使用しない)

    比較演算子

    「等しくない」を示す演算子は「!=」を利用する。「<>」「^=」も動作するが統一の観点から利用しない。

    ORDER BY 句

    ORDER BY 数字の構文は使用せずに、カラム名を記載する。

    GROUP BY 句

    GROUP BY 数字の構文は使用せずに、カラム名を記載する。

    集約関数を利用する場合は必ず記載すること。(省略可能であっても省略しない)

    EXISTS 句

    EXISTS 句を記載する際、サブクエリになる SELECT 句の指定は定数「1」とする。
    *」(ワイルドカード)や「'X'」は統一の観点から利用しない。
    また「*」(ワイルドカード)についてはパフォーマンスの観点からも禁止とする。

    良い例:

    sql
    WHERE
    +	EXISTS(
    +		SELECT
    +			1
    +		FROM
    +			FOO	F
    +		WHERE
    +			F.COL1	=	M.KEY
    +	)

    AS 句

    トップレベルの SELECT 句には必ずAS句を記載し別名を付ける。
    同一の名前であっても AS 句を付与する。
    また、「AS」は省略可能であるが、省略はしないこと。

    WHERE 句

    • 論理名の記載
      WHERE 句でカラムと式を比較する際は左辺がカラムになるように記載すること。

      良い例:

      sql
      WHERE
      +	TBL.COLUMN1	=	1
      +AND	TBL.AMOUNT2	>	TBL.AMOUNT3	+	TBL.AMOUNT4
    • 条件式の順序
      原則として、WHERE 句で条件式を列挙する際、下記の順序を守ること。

      1. テーブル単位にまとめて順番に記述する
        この際、テーブルの順序は FROM 句に記述した順序に準ずること。
      2. 1.のテーブル単位の中で絞り込み条件をまず記述し、その後結合条件を記述する。

      良い例:

      sql
      FROM
      +	A_TABLE	A	-- A_TABLE
      +,	B_TABLE	B	-- B_TABLE
      +,	C_TABLE	C	-- C_TABLE
      +WHERE
      +-- A_TABLEの絞り込み
      +	A.KEY1		=	?
      +AND	A.KEY2		=	?
      +-- B_TABLEの絞り込み
      +AND	B.KEY1		=	?
      +AND	B.KEY2		=	?
      +-- B_TABLEの結合条件
      +AND	B.COL1		=	A.COL1
      +-- C_TABLEの絞り込み
      +AND	C.KEY1		=	?
      +AND	C.KEY2		=	?
      +-- C_TABLEの結合条件
      +AND	C.COL1		=	A.COL1
      +AND	C.COL2		=	A.COL2
      +AND	C.COL3		=	B.COL3

    COUNT 文

    レコード数を数える COUNT 文の記述はCOUNT(*)と記述する。
    COUNT(1)COUNT('X')COUNT(KEY1)という記載は NG。

    SQL コーディング規約(パフォーマンス性)

    本章ではパフォーマンス性を高めることを目的としたコーディング規約について記載する。

    検索

    検索処理におけるコーディング規約を下記に示す。

    • 中間一致、後方一致検索はインデックスを利用できないため避ける

    • 検索条件で=(等号)を使用できる場合は必ず使用する

      A=1 or A=2とする方がA>0 and A<3などと記述するのよりパフォーマンス上優位な場合が多い。
      これは A にインデックスがある場合、=であれば、インデックスが有効に使われるためである。

    • 可能な限り検索条件にパーティションキーの値を指定する

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する

    • インデックスによる検索を指定したい場合、下記の記載を行わない

      • インデックスカラムを含む演算に対して条件指定

        悪い例:

        sql
        TBL1.COL1	+	1	>	100 /* NGパターン 右辺で演算してください */

        良い例:

        sql
        TBL1.COL1	>	100	-	1
      • インデックスカラムに関数を通した値に対して条件指定

        悪い例:

        sql
        /* NGパターン 右辺に関数を通してください */
        +TO_CHAR(TBL1.COL1, 'YYYYMMDD')	>	'20151231'

        良い例:

        sql
        TBL1.COL1	>=	TO_DATE('20160101', 'YYYYMMDD')
      • インデックスカラムをORで条件指定(禁止ではないが原則行わない)

        悪い例:

        sql
        (
        +	/* NGパターンINDEXが利用されない場合があります。他の方法を検討してください */
        +		TBL1.COL1	=	1
        +	OR	TBL1.COL1	=	2
        +	)

    挿入

    挿入処理におけるコーディング規約を下記に示す。

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する。

    更新

    更新処理におけるコーディング規約を下記に示す。

    • 主キーの値の UPDATE は原則行わない。外部キーがあればエラーになる。
      外部キーが無い場合でも、事実上、主キーの値を利用して、検索、更新する場合は、リンクが切れてしまう。
    • パーティションキーの UPDATE は原則行わない。
    • VIEW を使用するデータ更新は禁止。更新は実表に対して行う。

    削除

    削除処理におけるコーディング規約を下記に示す。

    • 大量件数(数百万件レベル)の delete 文発行は避ける。

    WITH 句

    WITH 句の誤った使い方はパフォーマンスの劣化を招くため、WITH 句を利用する場合は DBA に相談する。

    DISTINCT 句

    DISTINCT は、暗黙のソート処理が行われる可能性があるため性能劣化につながる。
    EXISTS 句の使用・代替を検討すること。

    悪い例:

    sql
    SELECT
    +    DISTINCT
    +    D.NO    AS  DEPT_NO
    +,   D.NAME  AS  DEPT_NAME
    +FROM
    +    DEPARTMENT  D
    +,   EMPLOYEE    E
    +WHERE
    +    D.NO    =   E.DEPT_NO   -- 社員が一人以上属している部門を取得

    良い例:

    sql
    SELECT
    +    D.NO    AS  DEPT_NO
    +,   D.NAME  AS  DEPT_NAME
    +FROM
    +    DEPARTMENT  D
    +WHERE
    +    EXISTS(
    +        SELECT
    +            1
    +        FROM
    +            EMPLOYEE    E
    +        WHERE
    +            D.NO    =   E.DEPT_NO   -- 社員が一人以上属している部門を取得
    +    )

    IN 句

    IN 句は最大 1000 個まで指定できるが、200 個程度でも ORA エラーが発生するケースがある。
    また IN 句の少しだけ異なる SQL が大量に発行されると CPU 高騰やメモリ枯渇を招く。
    従って 100 を超えるような長い IN 句は使用せず、一時表を利用して IN (SELECT ・・・ FROM 一時表)のように書き換える。

    NOT IN 句

    原則NOT IN(SELECT~)は使用せずに、NOT EXISTS (SELECT~)を使用する。
    NOT IN句は、内部的にソートマージの結合をすることでテーブルをフルスキャンする場合があるため、性能が悪化する可能性がある。

    UNION 句

    UNIONDISTINCT処理が含まれパフォーマンス上問題があるため、UNION ALLを使用する。

    パラレルヒント句

    パラレルヒント句は DB 負荷が高いため、原則使用禁止とする。付与したい場合は DBA に相談する。

    SELECT FOR UPDATE

    • SELECT FOR UPDATENO WAITまたは「WAIT秒数指定」を必ず付ける。
      WAIT指定なしの場合はロックが解除されてもプログラムに制御が返らないことがある。
      ※WAIT 秒数指定を行う際の秒数は各開発者で決めるのではなくプロジェクトで決定した方針に従うこと。
      また、SQL ライブラリを利用していて定数が記述できる場合は定数で記述すること。
    • SELECT FOR UPDATEで複数行にロックをかける場合、同時実行されるとデットロックを起こす可能性があるため、1件のロックでない場合はORDER BYを指定する。

    分析関数

    分析関数の使用は可能だが、性能悪化を招く恐れがあるため、特性を知らない方は DBA に相談する。

    インデックス

    インデックスの必要性については DBA で最終判断するため、必要とする場合は DBA へ相談する。

    外部結合

    外部結合する際、内部表(駆動表)はなるべく想定件数の少ない表にする。


    License

    CC-By-4.0

    `,139))])}const y=a(t,[["render",k]]);export{o as __pageData,y as default}; diff --git "a/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.js" "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.js" new file mode 100644 index 00000000..a518ab1d --- /dev/null +++ "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.js" @@ -0,0 +1,177 @@ +import{_ as i,c as n,G as l,a3 as e,B as p,o as t}from"./chunks/framework.BDUoXecB.js";const g=JSON.parse('{"title":"SQLコーディング規約(PostgreSQL)","description":"","frontmatter":{"sidebarDepth":4,"title":"SQLコーディング規約(PostgreSQL)","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"SQLコーディング規約,PostgreSQL,コーディング規約,SQL"}]]},"headers":[],"relativePath":"documents/forSQL/SQLコーディング規約(PostgreSQL).md","filePath":"documents/forSQL/SQLコーディング規約(PostgreSQL).md"}'),h={name:"documents/forSQL/SQLコーディング規約(PostgreSQL).md"};function k(r,s,d,c,b,o){const a=p("page-title");return t(),n("div",null,[l(a),s[0]||(s[0]=e(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    前提条件

    本書は、SQL コーディング規約についてまとめたものである。
    今回 RDBMS として採用する PostgreSQL での SQL の使用を前提に記述している。

    SQL コーティング規約(可読性・管理性)

    本章では可読性・管理性を高めることを目的としたコーディング規約について記載する。

    書式全般

    書式全般についてのコーディング規約を下記に示す。

    • 1 行につき、1 文のみを記述する。
    • SQL 中のインデントは、Java コーディング規約にあわせて半角スペースではなくタブ文字とする。
    • ヘボン式ローマ字を使用する。
    • 外来語に関しては、原語の綴りを使用する。
    • 横は 80 文字を目安に改行する。
    • 定数を条件に用いる場合やインライン・ビューで取得したいデータなど開発者の意図はコメントにて記載する。

    予約語

    予約語に対しては、小文字を使用する。(例 : selectinsertupdatedelete 等)

    予約語以外

    予約語以外に対しても、予約語と同様に小文字を使用する。(例 : オブジェクト名、カラム名 等)

    短縮名称

    SQL 中に記述するエイリアス名など単語の短縮について示す。

    1. 外来語に関しては、原語の短縮形を使用する。短縮形が存在しない場合には、母音を抜かして表記する。
      例) corporation → corp / computer → cmptr

    2. ローマ字の短縮は、単語の区切れの頭文字、または母音を抜かした子音字等を利用する。
      例) nichijo → nchj

    • カラムには必ずテーブルエイリアスを付与する
    • テーブルのエイリアスは必ず付与すること。
      必要ない場合(単一テーブルへの SELECT 等)も必ず付与すること
      また、テーブルのエイリアス名は同 SQL 文の中で重複しないように命名すること。
      (副問い合わせで利用したエイリアス名をメインの SQL 中のエイリアス名に利用しない。など)

    文字コード

    SQL ファイルの文字コード(エンコーディング)は Java ソースファイルと同じく『 Unicode UTF-8 』で保存する。

    不要な空白文字(スペース)は除去する

    不要な空白文字(スペース)は除去すること。

    SQL 文の整形

    DML 文の節に対する予約語は左揃えにする。
    項目ごとに改行を入れ、項目の前にはインデントを挿入する。カンマは項目の前へ記入する。
    Java ソースファイルのようにファイルの先頭にコメント行を入れると DB 分析作業に支障があるため禁止とする。
    よって SQL ファイルの先頭は必ずselectupdateinsertdeleteの何れかになる。

    物理カラム名、テーブル名に対応する論理名を入れる場合、その後ろに単数行コメント(-- )にて記述する。
    SQL 内に挿入する単数行コメントは、/*(半角スペース)コメント本文(半角スペース)*/ で行う。
    ,(カンマ)とANDについては各行の先頭に記述する。(以下の例を参照のこと)
    SQL フレームワークで実行する SQL の場合、SQL ステートメントの終わりを示す;(セミコロン)は記述しない。

    良い例:

    sql
    select
    +/*
    +	処理名
    +*/
    +	tbl1.column1	as	column1	-- カラム1
    +,	tbl1.column2	as	column2	-- カラム2
    +from
    +	table1	tbl1	-- テーブル1

    WHERE 句の=!=isis nullis)の縦位置は揃える。

    良い例:

    sql
    where
    +	a.ten_no	=	b.ten_no
    +and	a.kamoku_cd	!=	'1'
    +and	a.anken_no	is	null

    SELECT 文

    良い例:

    sql
    select
    +	tbl1.column1	as	column1	-- カラム1
    +,	tbl1.column2	as	column2	-- カラム2
    +from
    +	table1	tbl1	-- テーブル1
    +where
    +	tbl1.column3	=	1
    +order by
    +	tbl1.column1
    +,	tbl1.column2

    INSERT 文

    良い例:

    sql
    insert
    +into
    +	table1	-- テーブル1
    +(
    +	column1	-- カラム1
    +,	column2	-- カラム2
    +,	column3	-- カラム3
    +) values (
    +	value1
    +,	value2
    +,	value3
    +)

    UPDATE 文

    良い例:

    sql
    update
    +	table1	tbl1	-- テーブル1
    +set
    +	tbl1.column2	=	100	-- カラム2
    +,	tbl1.column3	=	100	-- カラム3
    +where
    +	tbl1.column1	=	10

    DELETE 文

    良い例:

    sql
    delete
    +from
    +	table1	tbl1	-- テーブル1
    +where
    +	tbl1.value	=	1

    AND(副問い合わせ)

    良い例:

    sql
    and	xxx	=	(
    +		select
    +			tbl1.column1
    +		,	tbl1.column2
    +		from
    +			table1	tbl1
    +	)

    CASE 式

    CASE 式は下記のように記載すること。

    良い例:

    sql
    case
    +	when
    +		xxx.hoge	=	yyy.fuga
    +	and	xxx.fuga	=	yyy.fuga
    +	then
    +		1
    +	else
    +		0
    +end

    casewhenthenelseの後に改行を挿入すること。
    caseの後、endの前までは 1 インデント挿入すること。

    IN 句

    カンマの後にスペースを1文字入れる。

    比較演算子

    比較演算子の前後にタブ(またはスペース)を1文字入れる。

    改行位置

    select 句、order by 句、group by 句等は最初に出現するカラムとカラムの区切りのカンマ前に改行を入れること。
    select の from 句の最初に出現するテーブルと結合テーブルの区切りのカンマ前に改行を入れること。
    where 句の on 句の各条件文の(and や or の)前に改行を入れること。
    命令句の後は、ヒント句が挿入できるように改行すること。

    良い例:

    sql
    select
    +	t1.column1	as	column1
    +,	t2.column2	as	column2
    +from
    +	table1	t1
    +,	table2	t2
    +where
    +	t1.column3	=	1
    +and	t1.column4	=	t2.column4
    +order by
    +	t1.column1
    +,	t2.column2

    WITH 句

    with の前後に改行を挿入すること
    また、インデントは下記のように記述すること

    良い例:

    sql
    -- カラムエイリアスあり
    +with
    +    name1   (
    +        col_alias1  -- カラム1
    +    ,   col_alias2  -- カラム2
    +    )   as  (
    +        select
    +        ・・・
    +    )
    +,   name2   (
    +        col_alias1  -- カラム1
    +    ,   col_alias2  -- カラム2
    +    )   as  (
    +        select
    +        ・・・
    +    )
    +
    +-- カラムエイリアスなし
    +with
    +    name1   as  (
    +        select
    +        ・・・
    +    )
    +,   name2   as  (
    +        select
    +        ・・・
    +    )

    LIMIT 句 OFFSET 句

    LIMIT、OFFSET の前に改行を挿入すること

    良い例:

    sql
    select
    +    tbl1.column1    as  column1
    +from
    +    table1  tbl1
    +order by
    +    tbl1.column2    desc
    +limit 5
    +offset 5

    HINT 句

    HINT 句は独立した行で記載すること
    HINT 内容にはインデントを付けること

    良い例:

    sql
    select
    +/*+
    +	ここにhintを記載
    +*/
    +	tbl1.column1	as	column1
    +from
    +	table1	tbl1
    +where
    +	tbl1.column2	=	1

    コメント

    • 修正コメント

      (修正コメントが必要な場合、)
      処理追加の際、追加行の 1 行目の前と最終行の次の行にコメントを入れる。単一行の場合は、同一行の最後にコメントをつける。

      良い例:

      sql
      -- 2004/04/23 仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 S ← 修正開始点コメント
      +(追加処理)
      +-- 2004/04/23仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 E ← 修正終了点コメント
    • 単数行コメント

      SQL 内で使用する単数行コメント(カラムコメントなど)には、「 -- 」を使用する。

    • 複数行コメント

      /* */ 」を使用する。下記に例を示す。
      なお、前述で触れたとおり、SQL ファイルの先頭にコメントを記述することは禁止とする。

      良い例:

      sql
      /**********************************************************************/
      +/*
      + * コメントを始めるスラッシュとアスタリスクは、それだけを1行に置く。
      + * それから、コメント・ブロック内の各行は縦にアスタリスクを置き
      + * コメントがあることを強調する。
      + * 最後に、アスタリスクとスラッシュは、それだけを1行に置く。
      + */
      +/**********************************************************************/
    • 複数行コメントアウト

      複数行をコメントアウトする場合は、各行を「--」でコメントアウトする。
      /* */ 」を使用すると、その中に「 /* */ 」が存在した場合、コメントアウトが途中で切れてしまう恐れがあるため、
      使用しない。

    • 論理名の記載

      selectinsertupdatemergeのカラム名記述箇所には単数行コメントでカラムの論理名を記載する。
      selectinsertupdatedeletemergeのテーブル名記述箇所には単数行コメントでテーブルの論理名を記載する。
      論理名は ERD 等で定義された論理名と必ず一致させること。

    型変換

    代入や WHERE 句の条件設定などでデータ・タイプが異なる場合、明示的にタイプ変換を行う。(暗黙の型変換は使用しない)

    比較演算子

    「等しくない」を示す演算子は「!=」を利用する。「<>」も動作するが統一の観点から利用しない。

    ORDER BY 句

    order by 数字の構文は使用せずに、カラム名を記載する。

    GROUP BY 句

    group by 数字の構文は使用せずに、カラム名を記載する。

    集約関数を利用する場合は必ず記載すること。(省略可能であっても省略しない)

    EXISTS 句

    EXISTS 句を記載する際、サブクエリになる SELECT 句の指定は定数「1」とする。
    *」(ワイルドカード)や「'X'」は統一の観点から利用しない。
    また「*」(ワイルドカード)についてはパフォーマンスの観点からも禁止とする。

    良い例:

    sql
    where
    +	exists(
    +		select
    +			1
    +		from
    +			foo	f
    +		where
    +			f.col1	=	m.key
    +	)

    AS 句

    トップレベルの SELECT 句には必ずas句を記載し別名を付ける。
    同一の名前であっても AS 句を付与する。
    また、「as」は省略可能であるが、省略はしないこと。

    WHERE 句

    • 論理名の記載
      WHERE 句でカラムと式を比較する際は左辺がカラムになるように記載すること。

      良い例:

      sql
      where
      +	tbl.column1	=	1
      +and	tbl.amount2	>	tbl.amount3	+	tbl.amount4
    • 条件式の順序
      原則として、WHERE 句で条件式を列挙する際、下記の順序を守ること。

      1. テーブル単位にまとめて順番に記述する
        この際、テーブルの順序は FROM 句に記述した順序に準ずること。
      2. 1.のテーブル単位の中で絞り込み条件をまず記述し、その後結合条件を記述する。

      良い例:

      sql
      from
      +	a_table	a	-- a_table
      +,	b_table	b	-- b_table
      +,	c_table	c	-- c_table
      +where
      +-- a_tableの絞り込み
      +	a.key1		=	?
      +and	a.key2		=	?
      +-- b_tableの絞り込み
      +and	b.key1		=	?
      +and	b.key2		=	?
      +-- b_tableの結合条件
      +and	b.col1		=	a.col1
      +-- c_tableの絞り込み
      +and	c.key1		=	?
      +and	c.key2		=	?
      +-- c_tableの結合条件
      +and	c.col1		=	a.col1
      +and	c.col2		=	a.col2
      +and	c.col3		=	b.col3

    COUNT 文

    レコード数を数える COUNT 文の記述はcount(*)と記述する。
    count(1)count('x')count(key1)という記載は NG。

    文字列リテラル

    エスケープシーケンス

    文字列リテラル中のシングルクォーテーションのエスケープは「 '' 」とシングルクォーテーションを二つつなげた記述をする。
    \\' 」も同様の結果が得られるが円マーク(バックスラッシュ)によるエスケープは利用しない。
    円マークをエスケープせざるを得ないときのみ円マークによるエスケープ利用して良いが、
    円マークを文字列リテラルで表現する必要のある設計自体を避けること。

    ※PostgreSQL は設定によって円マーク(バックスラッシュ)によるエスケープを無効にできます。(デフォルト無効)
    円マークをエスケープするときは、自プロジェクトでどちらに設定されているか確認してください。

    良い例:

    sql
    update
    +    table_a
    +set
    +    text_data   =   'that''s right'

    悪い例:

    sql
    update
    +    table_a
    +set
    +    text_data   =   'that\\'s too bad'

    SQL コーディング規約(パフォーマンス性)

    本章ではパフォーマンス性を高めることを目的としたコーディング規約について記載する。

    検索

    検索処理におけるコーディング規約を下記に示す。

    • 中間一致、後方一致検索はインデックスを利用できないため避ける

    • 検索条件で=(等号)を使用できる場合は必ず使用する

      a=1 or a=2とする方がa>0 and a<3などと記述するのよりパフォーマンス上優位な場合が多い。
      これは a にインデックスがある場合、=であれば、インデックスが有効に使われるためである。

    • 可能な限り検索条件にパーティションキーの値を指定する

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する

    • インデックスによる検索を指定したい場合、下記の記載を行わない

      • インデックスカラムを含む演算に対して条件指定

        悪い例:

        sql
        tbl1.col1	+	1	>	100 /* NGパターン 右辺で演算してください */

        良い例:

        sql
        tbl1.col1	>	100	-	1
      • インデックスカラムに関数を通した値に対して条件指定

        悪い例:

        sql
        /* NGパターン 右辺に関数を通してください */
        +to_char(tbl1.col1, 'YYYYMMDD')	>	'20151231'

        良い例:

        sql
        tbl1.col1	>=	to_date('20160101', 'YYYYMMDD')
      • インデックスカラムをORで条件指定(禁止ではないが原則行わない)

        悪い例:

        sql
        (
        +	/* NGパターンINDEXが利用されない場合があります。他の方法を検討してください */
        +		tbl1.col1	=	1
        +	or	tbl1.col1	=	2
        +	)

    挿入

    挿入処理におけるコーディング規約を下記に示す。

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する。

    更新

    更新処理におけるコーディング規約を下記に示す。

    • 主キーの値の UPDATE は原則行わない。外部キーがあればエラーになる。
      外部キーが無い場合でも、事実上、主キーの値を利用して、検索、更新する場合は、リンクが切れてしまう。
    • パーティションキーの UPDATE は原則行わない。
    • VIEW を使用するデータ更新は禁止。更新は実表に対して行う。

    削除

    削除処理におけるコーディング規約を下記に示す。

    • 大量件数(数百万件レベル)の delete 文発行は避ける。

    DISTINCT 句

    DISTINCT は、暗黙のソート処理が行われる可能性があるため性能劣化につながる。
    EXISTS 句の使用・代替を検討すること。

    悪い例:

    sql
    select
    +    distinct
    +    d.no    as  dept_no
    +,   d.name  as  dept_name
    +from
    +    department  d
    +,   employee    e
    +where
    +    d.no    =   e.dept_no   -- 社員が一人以上属している部門を取得

    良い例:

    sql
    select
    +    d.no    as  dept_no
    +,   d.name  as  dept_name
    +from
    +    department  d
    +where
    +    exists(
    +        select
    +            1
    +        from
    +            employee    e
    +        where
    +            d.no    =   e.dept_no   -- 社員が一人以上属している部門を取得
    +    )

    IN 句

    IN 句は最大 1000 個まで指定できるが、200 個程度でも ORA エラーが発生するケースがある。
    また IN 句の少しだけ異なる SQL が大量に発行されると CPU 高騰やメモリ枯渇を招く。
    従って 100 を超えるような長い IN 句は使用せず、一時表を利用して in (select ・・・ from 一時表)のように書き換える。

    NOT IN 句

    原則not in(select~)は使用せずに、not exists (select~)を使用する。
    NOT IN句は、内部的にソートマージの結合をすることでテーブルをフルスキャンする場合があるため、性能が悪化する可能性がある。

    UNION 句

    uniondistinct処理が含まれパフォーマンス上問題があるため、union allを使用する。

    SELECT FOR UPDATE

    • select for updateで複数行にロックをかける場合、同時実行されるとデットロックを起こす可能性があるため、1件のロックでない場合はorder byを指定する。

    分析関数

    分析関数の使用は可能だが、性能悪化を招く恐れがあるため、特性を知らない方は DBA に相談する。

    インデックス

    インデックスの必要性については DBA で最終判断するため、必要とする場合は DBA へ相談する。

    外部結合

    外部結合する際、内部表(駆動表)はなるべく想定件数の少ない表にする。


    License

    CC-By-4.0

    `,135))])}const u=i(h,[["render",k]]);export{g as __pageData,u as default}; diff --git "a/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.lean.js" "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.lean.js" new file mode 100644 index 00000000..a518ab1d --- /dev/null +++ "b/assets/documents_forSQL_SQL\343\202\263\343\203\274\343\203\207\343\202\243\343\203\263\343\202\260\350\246\217\347\264\204\357\274\210PostgreSQL\357\274\211.md.DViLWmpD.lean.js" @@ -0,0 +1,177 @@ +import{_ as i,c as n,G as l,a3 as e,B as p,o as t}from"./chunks/framework.BDUoXecB.js";const g=JSON.parse('{"title":"SQLコーディング規約(PostgreSQL)","description":"","frontmatter":{"sidebarDepth":4,"title":"SQLコーディング規約(PostgreSQL)","author":"Future Enterprise Coding Standards","head":[["meta",{"name":"keywords","content":"SQLコーディング規約,PostgreSQL,コーディング規約,SQL"}]]},"headers":[],"relativePath":"documents/forSQL/SQLコーディング規約(PostgreSQL).md","filePath":"documents/forSQL/SQLコーディング規約(PostgreSQL).md"}'),h={name:"documents/forSQL/SQLコーディング規約(PostgreSQL).md"};function k(r,s,d,c,b,o){const a=p("page-title");return t(),n("div",null,[l(a),s[0]||(s[0]=e(`

    本コーディング規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    前提条件

    本書は、SQL コーディング規約についてまとめたものである。
    今回 RDBMS として採用する PostgreSQL での SQL の使用を前提に記述している。

    SQL コーティング規約(可読性・管理性)

    本章では可読性・管理性を高めることを目的としたコーディング規約について記載する。

    書式全般

    書式全般についてのコーディング規約を下記に示す。

    • 1 行につき、1 文のみを記述する。
    • SQL 中のインデントは、Java コーディング規約にあわせて半角スペースではなくタブ文字とする。
    • ヘボン式ローマ字を使用する。
    • 外来語に関しては、原語の綴りを使用する。
    • 横は 80 文字を目安に改行する。
    • 定数を条件に用いる場合やインライン・ビューで取得したいデータなど開発者の意図はコメントにて記載する。

    予約語

    予約語に対しては、小文字を使用する。(例 : selectinsertupdatedelete 等)

    予約語以外

    予約語以外に対しても、予約語と同様に小文字を使用する。(例 : オブジェクト名、カラム名 等)

    短縮名称

    SQL 中に記述するエイリアス名など単語の短縮について示す。

    1. 外来語に関しては、原語の短縮形を使用する。短縮形が存在しない場合には、母音を抜かして表記する。
      例) corporation → corp / computer → cmptr

    2. ローマ字の短縮は、単語の区切れの頭文字、または母音を抜かした子音字等を利用する。
      例) nichijo → nchj

    • カラムには必ずテーブルエイリアスを付与する
    • テーブルのエイリアスは必ず付与すること。
      必要ない場合(単一テーブルへの SELECT 等)も必ず付与すること
      また、テーブルのエイリアス名は同 SQL 文の中で重複しないように命名すること。
      (副問い合わせで利用したエイリアス名をメインの SQL 中のエイリアス名に利用しない。など)

    文字コード

    SQL ファイルの文字コード(エンコーディング)は Java ソースファイルと同じく『 Unicode UTF-8 』で保存する。

    不要な空白文字(スペース)は除去する

    不要な空白文字(スペース)は除去すること。

    SQL 文の整形

    DML 文の節に対する予約語は左揃えにする。
    項目ごとに改行を入れ、項目の前にはインデントを挿入する。カンマは項目の前へ記入する。
    Java ソースファイルのようにファイルの先頭にコメント行を入れると DB 分析作業に支障があるため禁止とする。
    よって SQL ファイルの先頭は必ずselectupdateinsertdeleteの何れかになる。

    物理カラム名、テーブル名に対応する論理名を入れる場合、その後ろに単数行コメント(-- )にて記述する。
    SQL 内に挿入する単数行コメントは、/*(半角スペース)コメント本文(半角スペース)*/ で行う。
    ,(カンマ)とANDについては各行の先頭に記述する。(以下の例を参照のこと)
    SQL フレームワークで実行する SQL の場合、SQL ステートメントの終わりを示す;(セミコロン)は記述しない。

    良い例:

    sql
    select
    +/*
    +	処理名
    +*/
    +	tbl1.column1	as	column1	-- カラム1
    +,	tbl1.column2	as	column2	-- カラム2
    +from
    +	table1	tbl1	-- テーブル1

    WHERE 句の=!=isis nullis)の縦位置は揃える。

    良い例:

    sql
    where
    +	a.ten_no	=	b.ten_no
    +and	a.kamoku_cd	!=	'1'
    +and	a.anken_no	is	null

    SELECT 文

    良い例:

    sql
    select
    +	tbl1.column1	as	column1	-- カラム1
    +,	tbl1.column2	as	column2	-- カラム2
    +from
    +	table1	tbl1	-- テーブル1
    +where
    +	tbl1.column3	=	1
    +order by
    +	tbl1.column1
    +,	tbl1.column2

    INSERT 文

    良い例:

    sql
    insert
    +into
    +	table1	-- テーブル1
    +(
    +	column1	-- カラム1
    +,	column2	-- カラム2
    +,	column3	-- カラム3
    +) values (
    +	value1
    +,	value2
    +,	value3
    +)

    UPDATE 文

    良い例:

    sql
    update
    +	table1	tbl1	-- テーブル1
    +set
    +	tbl1.column2	=	100	-- カラム2
    +,	tbl1.column3	=	100	-- カラム3
    +where
    +	tbl1.column1	=	10

    DELETE 文

    良い例:

    sql
    delete
    +from
    +	table1	tbl1	-- テーブル1
    +where
    +	tbl1.value	=	1

    AND(副問い合わせ)

    良い例:

    sql
    and	xxx	=	(
    +		select
    +			tbl1.column1
    +		,	tbl1.column2
    +		from
    +			table1	tbl1
    +	)

    CASE 式

    CASE 式は下記のように記載すること。

    良い例:

    sql
    case
    +	when
    +		xxx.hoge	=	yyy.fuga
    +	and	xxx.fuga	=	yyy.fuga
    +	then
    +		1
    +	else
    +		0
    +end

    casewhenthenelseの後に改行を挿入すること。
    caseの後、endの前までは 1 インデント挿入すること。

    IN 句

    カンマの後にスペースを1文字入れる。

    比較演算子

    比較演算子の前後にタブ(またはスペース)を1文字入れる。

    改行位置

    select 句、order by 句、group by 句等は最初に出現するカラムとカラムの区切りのカンマ前に改行を入れること。
    select の from 句の最初に出現するテーブルと結合テーブルの区切りのカンマ前に改行を入れること。
    where 句の on 句の各条件文の(and や or の)前に改行を入れること。
    命令句の後は、ヒント句が挿入できるように改行すること。

    良い例:

    sql
    select
    +	t1.column1	as	column1
    +,	t2.column2	as	column2
    +from
    +	table1	t1
    +,	table2	t2
    +where
    +	t1.column3	=	1
    +and	t1.column4	=	t2.column4
    +order by
    +	t1.column1
    +,	t2.column2

    WITH 句

    with の前後に改行を挿入すること
    また、インデントは下記のように記述すること

    良い例:

    sql
    -- カラムエイリアスあり
    +with
    +    name1   (
    +        col_alias1  -- カラム1
    +    ,   col_alias2  -- カラム2
    +    )   as  (
    +        select
    +        ・・・
    +    )
    +,   name2   (
    +        col_alias1  -- カラム1
    +    ,   col_alias2  -- カラム2
    +    )   as  (
    +        select
    +        ・・・
    +    )
    +
    +-- カラムエイリアスなし
    +with
    +    name1   as  (
    +        select
    +        ・・・
    +    )
    +,   name2   as  (
    +        select
    +        ・・・
    +    )

    LIMIT 句 OFFSET 句

    LIMIT、OFFSET の前に改行を挿入すること

    良い例:

    sql
    select
    +    tbl1.column1    as  column1
    +from
    +    table1  tbl1
    +order by
    +    tbl1.column2    desc
    +limit 5
    +offset 5

    HINT 句

    HINT 句は独立した行で記載すること
    HINT 内容にはインデントを付けること

    良い例:

    sql
    select
    +/*+
    +	ここにhintを記載
    +*/
    +	tbl1.column1	as	column1
    +from
    +	table1	tbl1
    +where
    +	tbl1.column2	=	1

    コメント

    • 修正コメント

      (修正コメントが必要な場合、)
      処理追加の際、追加行の 1 行目の前と最終行の次の行にコメントを入れる。単一行の場合は、同一行の最後にコメントをつける。

      良い例:

      sql
      -- 2004/04/23 仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 S ← 修正開始点コメント
      +(追加処理)
      +-- 2004/04/23仕様変更管理番号 ADD(または、MOD、DEL) 変更者名 E ← 修正終了点コメント
    • 単数行コメント

      SQL 内で使用する単数行コメント(カラムコメントなど)には、「 -- 」を使用する。

    • 複数行コメント

      /* */ 」を使用する。下記に例を示す。
      なお、前述で触れたとおり、SQL ファイルの先頭にコメントを記述することは禁止とする。

      良い例:

      sql
      /**********************************************************************/
      +/*
      + * コメントを始めるスラッシュとアスタリスクは、それだけを1行に置く。
      + * それから、コメント・ブロック内の各行は縦にアスタリスクを置き
      + * コメントがあることを強調する。
      + * 最後に、アスタリスクとスラッシュは、それだけを1行に置く。
      + */
      +/**********************************************************************/
    • 複数行コメントアウト

      複数行をコメントアウトする場合は、各行を「--」でコメントアウトする。
      /* */ 」を使用すると、その中に「 /* */ 」が存在した場合、コメントアウトが途中で切れてしまう恐れがあるため、
      使用しない。

    • 論理名の記載

      selectinsertupdatemergeのカラム名記述箇所には単数行コメントでカラムの論理名を記載する。
      selectinsertupdatedeletemergeのテーブル名記述箇所には単数行コメントでテーブルの論理名を記載する。
      論理名は ERD 等で定義された論理名と必ず一致させること。

    型変換

    代入や WHERE 句の条件設定などでデータ・タイプが異なる場合、明示的にタイプ変換を行う。(暗黙の型変換は使用しない)

    比較演算子

    「等しくない」を示す演算子は「!=」を利用する。「<>」も動作するが統一の観点から利用しない。

    ORDER BY 句

    order by 数字の構文は使用せずに、カラム名を記載する。

    GROUP BY 句

    group by 数字の構文は使用せずに、カラム名を記載する。

    集約関数を利用する場合は必ず記載すること。(省略可能であっても省略しない)

    EXISTS 句

    EXISTS 句を記載する際、サブクエリになる SELECT 句の指定は定数「1」とする。
    *」(ワイルドカード)や「'X'」は統一の観点から利用しない。
    また「*」(ワイルドカード)についてはパフォーマンスの観点からも禁止とする。

    良い例:

    sql
    where
    +	exists(
    +		select
    +			1
    +		from
    +			foo	f
    +		where
    +			f.col1	=	m.key
    +	)

    AS 句

    トップレベルの SELECT 句には必ずas句を記載し別名を付ける。
    同一の名前であっても AS 句を付与する。
    また、「as」は省略可能であるが、省略はしないこと。

    WHERE 句

    • 論理名の記載
      WHERE 句でカラムと式を比較する際は左辺がカラムになるように記載すること。

      良い例:

      sql
      where
      +	tbl.column1	=	1
      +and	tbl.amount2	>	tbl.amount3	+	tbl.amount4
    • 条件式の順序
      原則として、WHERE 句で条件式を列挙する際、下記の順序を守ること。

      1. テーブル単位にまとめて順番に記述する
        この際、テーブルの順序は FROM 句に記述した順序に準ずること。
      2. 1.のテーブル単位の中で絞り込み条件をまず記述し、その後結合条件を記述する。

      良い例:

      sql
      from
      +	a_table	a	-- a_table
      +,	b_table	b	-- b_table
      +,	c_table	c	-- c_table
      +where
      +-- a_tableの絞り込み
      +	a.key1		=	?
      +and	a.key2		=	?
      +-- b_tableの絞り込み
      +and	b.key1		=	?
      +and	b.key2		=	?
      +-- b_tableの結合条件
      +and	b.col1		=	a.col1
      +-- c_tableの絞り込み
      +and	c.key1		=	?
      +and	c.key2		=	?
      +-- c_tableの結合条件
      +and	c.col1		=	a.col1
      +and	c.col2		=	a.col2
      +and	c.col3		=	b.col3

    COUNT 文

    レコード数を数える COUNT 文の記述はcount(*)と記述する。
    count(1)count('x')count(key1)という記載は NG。

    文字列リテラル

    エスケープシーケンス

    文字列リテラル中のシングルクォーテーションのエスケープは「 '' 」とシングルクォーテーションを二つつなげた記述をする。
    \\' 」も同様の結果が得られるが円マーク(バックスラッシュ)によるエスケープは利用しない。
    円マークをエスケープせざるを得ないときのみ円マークによるエスケープ利用して良いが、
    円マークを文字列リテラルで表現する必要のある設計自体を避けること。

    ※PostgreSQL は設定によって円マーク(バックスラッシュ)によるエスケープを無効にできます。(デフォルト無効)
    円マークをエスケープするときは、自プロジェクトでどちらに設定されているか確認してください。

    良い例:

    sql
    update
    +    table_a
    +set
    +    text_data   =   'that''s right'

    悪い例:

    sql
    update
    +    table_a
    +set
    +    text_data   =   'that\\'s too bad'

    SQL コーディング規約(パフォーマンス性)

    本章ではパフォーマンス性を高めることを目的としたコーディング規約について記載する。

    検索

    検索処理におけるコーディング規約を下記に示す。

    • 中間一致、後方一致検索はインデックスを利用できないため避ける

    • 検索条件で=(等号)を使用できる場合は必ず使用する

      a=1 or a=2とする方がa>0 and a<3などと記述するのよりパフォーマンス上優位な場合が多い。
      これは a にインデックスがある場合、=であれば、インデックスが有効に使われるためである。

    • 可能な限り検索条件にパーティションキーの値を指定する

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する

    • インデックスによる検索を指定したい場合、下記の記載を行わない

      • インデックスカラムを含む演算に対して条件指定

        悪い例:

        sql
        tbl1.col1	+	1	>	100 /* NGパターン 右辺で演算してください */

        良い例:

        sql
        tbl1.col1	>	100	-	1
      • インデックスカラムに関数を通した値に対して条件指定

        悪い例:

        sql
        /* NGパターン 右辺に関数を通してください */
        +to_char(tbl1.col1, 'YYYYMMDD')	>	'20151231'

        良い例:

        sql
        tbl1.col1	>=	to_date('20160101', 'YYYYMMDD')
      • インデックスカラムをORで条件指定(禁止ではないが原則行わない)

        悪い例:

        sql
        (
        +	/* NGパターンINDEXが利用されない場合があります。他の方法を検討してください */
        +		tbl1.col1	=	1
        +	or	tbl1.col1	=	2
        +	)

    挿入

    挿入処理におけるコーディング規約を下記に示す。

    • 全列ワイルドカード「*」の使用はせず、カラム名を明記する。

    更新

    更新処理におけるコーディング規約を下記に示す。

    • 主キーの値の UPDATE は原則行わない。外部キーがあればエラーになる。
      外部キーが無い場合でも、事実上、主キーの値を利用して、検索、更新する場合は、リンクが切れてしまう。
    • パーティションキーの UPDATE は原則行わない。
    • VIEW を使用するデータ更新は禁止。更新は実表に対して行う。

    削除

    削除処理におけるコーディング規約を下記に示す。

    • 大量件数(数百万件レベル)の delete 文発行は避ける。

    DISTINCT 句

    DISTINCT は、暗黙のソート処理が行われる可能性があるため性能劣化につながる。
    EXISTS 句の使用・代替を検討すること。

    悪い例:

    sql
    select
    +    distinct
    +    d.no    as  dept_no
    +,   d.name  as  dept_name
    +from
    +    department  d
    +,   employee    e
    +where
    +    d.no    =   e.dept_no   -- 社員が一人以上属している部門を取得

    良い例:

    sql
    select
    +    d.no    as  dept_no
    +,   d.name  as  dept_name
    +from
    +    department  d
    +where
    +    exists(
    +        select
    +            1
    +        from
    +            employee    e
    +        where
    +            d.no    =   e.dept_no   -- 社員が一人以上属している部門を取得
    +    )

    IN 句

    IN 句は最大 1000 個まで指定できるが、200 個程度でも ORA エラーが発生するケースがある。
    また IN 句の少しだけ異なる SQL が大量に発行されると CPU 高騰やメモリ枯渇を招く。
    従って 100 を超えるような長い IN 句は使用せず、一時表を利用して in (select ・・・ from 一時表)のように書き換える。

    NOT IN 句

    原則not in(select~)は使用せずに、not exists (select~)を使用する。
    NOT IN句は、内部的にソートマージの結合をすることでテーブルをフルスキャンする場合があるため、性能が悪化する可能性がある。

    UNION 句

    uniondistinct処理が含まれパフォーマンス上問題があるため、union allを使用する。

    SELECT FOR UPDATE

    • select for updateで複数行にロックをかける場合、同時実行されるとデットロックを起こす可能性があるため、1件のロックでない場合はorder byを指定する。

    分析関数

    分析関数の使用は可能だが、性能悪化を招く恐れがあるため、特性を知らない方は DBA に相談する。

    インデックス

    インデックスの必要性については DBA で最終判断するため、必要とする場合は DBA へ相談する。

    外部結合

    外部結合する際、内部表(駆動表)はなるべく想定件数の少ない表にする。


    License

    CC-By-4.0

    `,135))])}const u=i(h,[["render",k]]);export{g as __pageData,u as default}; diff --git a/assets/documents_forSQL_index.md.DrHFVFTy.js b/assets/documents_forSQL_index.md.DrHFVFTy.js new file mode 100644 index 00000000..cf3ce224 --- /dev/null +++ b/assets/documents_forSQL_index.md.DrHFVFTy.js @@ -0,0 +1 @@ +import{_ as e,c as t,a3 as a,o}from"./chunks/framework.BDUoXecB.js";const u=JSON.parse('{"title":"SQL Coding Standards","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"SQLコーディング規約","tagline":"Future Enterprise Coding Standards for SQL","actions":[{"theme":"brand","text":"SQLコーディング規約(PostgreSQL)","link":"./SQLコーディング規約(PostgreSQL).md"},{"theme":"brand","text":"SQLコーディング規約(Oracle)","link":"./SQLコーディング規約(Oracle).md"}]}},"headers":[],"relativePath":"documents/forSQL/index.md","filePath":"documents/forSQL/index.md"}'),l={name:"documents/forSQL/index.md"};function s(i,r,n,c,d,E){return o(),t("div",null,r[0]||(r[0]=[a('

    可読性や保守性、拡張性、SQL 性能を考慮したコーディング規約をまとめています

    SQL Coding Standards

    次の SQL コーディング規約が利用できます。

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。
    (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',9)]))}const B=e(l,[["render",s]]);export{u as __pageData,B as default}; diff --git a/assets/documents_forSQL_index.md.DrHFVFTy.lean.js b/assets/documents_forSQL_index.md.DrHFVFTy.lean.js new file mode 100644 index 00000000..cf3ce224 --- /dev/null +++ b/assets/documents_forSQL_index.md.DrHFVFTy.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,a3 as a,o}from"./chunks/framework.BDUoXecB.js";const u=JSON.parse('{"title":"SQL Coding Standards","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"SQLコーディング規約","tagline":"Future Enterprise Coding Standards for SQL","actions":[{"theme":"brand","text":"SQLコーディング規約(PostgreSQL)","link":"./SQLコーディング規約(PostgreSQL).md"},{"theme":"brand","text":"SQLコーディング規約(Oracle)","link":"./SQLコーディング規約(Oracle).md"}]}},"headers":[],"relativePath":"documents/forSQL/index.md","filePath":"documents/forSQL/index.md"}'),l={name:"documents/forSQL/index.md"};function s(i,r,n,c,d,E){return o(),t("div",null,r[0]||(r[0]=[a('

    可読性や保守性、拡張性、SQL 性能を考慮したコーディング規約をまとめています

    SQL Coding Standards

    次の SQL コーディング規約が利用できます。

    Resources

    次のリンクから単一ファイルで作成されたコーディング規約を取得できます。
    (これらのファイルはPandocを利用して作成しています。)

    Articles

    ',9)]))}const B=e(l,[["render",s]]);export{u as __pageData,B as default}; diff --git a/assets/documents_forSlack_index.md.VwsafwSe.js b/assets/documents_forSlack_index.md.VwsafwSe.js new file mode 100644 index 00000000..737f9b48 --- /dev/null +++ b/assets/documents_forSlack_index.md.VwsafwSe.js @@ -0,0 +1 @@ +import{_ as a,c as r,a3 as t,o as l}from"./chunks/framework.BDUoXecB.js";const k=JSON.parse('{"title":"Slack利用ガイドライン","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Slack利用ガイドライン","tagline":"Slack Usage Guidelines","actions":[{"theme":"brand","text":"Slack利用ガイドライン","link":"./slack_usage_guidelines.md"}]}},"headers":[],"relativePath":"documents/forSlack/index.md","filePath":"documents/forSlack/index.md"}'),c={name:"documents/forSlack/index.md"};function s(o,e,n,i,d,u){return l(),r("div",null,e[0]||(e[0]=[t('

    Slack利用ガイドライン

    チーム開発する上で必要となるGitブランチフローの規約です。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    ',6)]))}const f=a(c,[["render",s]]);export{k as __pageData,f as default}; diff --git a/assets/documents_forSlack_index.md.VwsafwSe.lean.js b/assets/documents_forSlack_index.md.VwsafwSe.lean.js new file mode 100644 index 00000000..737f9b48 --- /dev/null +++ b/assets/documents_forSlack_index.md.VwsafwSe.lean.js @@ -0,0 +1 @@ +import{_ as a,c as r,a3 as t,o as l}from"./chunks/framework.BDUoXecB.js";const k=JSON.parse('{"title":"Slack利用ガイドライン","description":"","frontmatter":{"sidebarDepth":4,"author":"フューチャー株式会社","layout":"home","hero":{"name":"Slack利用ガイドライン","tagline":"Slack Usage Guidelines","actions":[{"theme":"brand","text":"Slack利用ガイドライン","link":"./slack_usage_guidelines.md"}]}},"headers":[],"relativePath":"documents/forSlack/index.md","filePath":"documents/forSlack/index.md"}'),c={name:"documents/forSlack/index.md"};function s(o,e,n,i,d,u){return l(),r("div",null,e[0]||(e[0]=[t('

    Slack利用ガイドライン

    チーム開発する上で必要となるGitブランチフローの規約です。

    次のリンクから単一ファイル版を取得できます。

    ファイルはPandocを利用して作成しています。

    ',6)]))}const f=a(c,[["render",s]]);export{k as __pageData,f as default}; diff --git a/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.js b/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.js new file mode 100644 index 00000000..702e7909 --- /dev/null +++ b/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.js @@ -0,0 +1 @@ +import{_ as e,c as i,G as t,a3 as r,B as o,o as s}from"./chunks/framework.BDUoXecB.js";const k=JSON.parse('{"title":"Slack利用ガイドライン","description":"","frontmatter":{"sidebarDepth":4,"title":"Slack利用ガイドライン","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Slack"}]]},"headers":[],"relativePath":"documents/forSlack/slack_usage_guidelines.md","filePath":"documents/forSlack/slack_usage_guidelines.md"}'),c={name:"documents/forSlack/slack_usage_guidelines.md"};function n(p,a,h,d,u,b){const l=o("page-title");return s(),i("div",null,[t(l),a[0]||(a[0]=r('

    本規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    リモートワーク/ハイブリッドワーク前提の業務において、チャットなどの非同期コミュニケーションを円滑に進めることは、業務効率を向上させるだけではなく、従業員全員の満足度を向上させ、より良い職場づくりに繋げることができる。

    また、ユーザーの様々な要望に応えるため、現代のチャットサービスは豊富な機能が提供されている。しかし、各ユーザーの考え方/利用者の感覚が千差万別であるため、ある人によって問題ないとされる行動が、別の人にとっては良くない受け取り方をされることも多い。例えば次のような対立が考えられる。

    • 必要最低限の簡潔なメッセージを送る方が効率的だ/文面が冷たくならないように絵文字や感嘆符(!)を使うべきだ
    • 質問はDMで行うべき/チャンネルで行うべき
    • times(分報)チャンネルを活用すべき/ノイズなので個人のメモに閉じるべき

    これら運用方法は利用者の所属する部署やチームごとに自然と決めていくことが多いが、複数のチャンネルで異なった運用方針である場合に混乱をきたすことがしばしばである。また、トレードオフを理解せずに、メールのコミュニケーションモデルを引きずった方針を取ってしまうこともある。異なる文化圏のチームから移籍した時に、ハレーションが起きるケースも多い。

    本ガイドラインはSlackを対象に利用方針についてのベースとなる規約を設け、Slackを用いてより良いコミュニケーションを促進することを目的とする。

    適用範囲

    • 「はじめに」章で述べた、一般ユーザー視点での利活用を中心とする
    • 次のような特に管理者が関心を持つ事項については対象外とする
      • パスワードポリシー/多要素認証の強制
      • 社外メンバー招待/ゲストレベルの調整
      • 監査

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された運営方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している
    • 自社のセキュリティポリシーや外部サービス利用ポリシーがある場合は、そちらを優先すること
    • Slack Enterprise Grid/Google Workspaceを利用しているため、それらの機能を前提にしている記述がある

    管理者向け推奨設定

    Workspace Access

    チーム、プロジェクトでの利用の場合は リクエスト制(By Request) もしくは招待性( Invite Only)の設定を推奨する。

    デフォルトチャンネル

    通常ワークスペースにメンバーを追加した際には #general へ自動参加するが、他にもメンバー全員に参加して欲しいチャンネルがある場合にはデフォルトチャンネルを追加する。

    TIP

    ユーザグループに対してもデフォルトチャンネルを設定できるため、用途に応じて使い分けると良い。

    表示名ガイドライン

    ワークスペースごとにガイドラインを設定することを推奨する。後述の表示名設定や、その他チームコミュニケーションにおけるルールを設定する。表示名のガイドラインを設定する権限があるのは、ワークスペースのオーナーだけなので注意する。

    ワークスペースの管理者

    ワークスペース内に複数のチームが混在する場合、それぞれのチームごとに管理者権限保持者を設定すること。

    理由:

    • 管理者権限を持った人しか実行できないオペレーションがあった際、チーム内で解決できる状態を作っておくことが望ましいため

    ユーザ向け推奨設定

    アカウントアイコンを設定する

    デフォルトのアイコン利用は極力避け、アカウント登録時に各自のアイコン画像を積極的に登録する

    理由:

    • チャットコミュニケーションにおいて、個人識別におけるアイコン画像の有用性が高いため

    また、GitHub/GitLab、Google Workspace、その他利用サービスも同様のアイコンを利用することで、個人を識別しやすくなる。

    検索性の高い氏名(Full name)を設定する

    表示名(Display name) もしくは氏名(Full name) にて、ローマ字及び漢字(無ければカタカナ)でのフルネームを登録すること。表示名はチームごとに記載文化や書き方が異なるケースが多いので、本ガイドラインでは氏名に記載することを推奨する。例えば「未来 太郎」の場合、「Taro Mirai (未来 太郎)」という記載を推奨する。

    理由:

    • Slackではアカウント名のインクリメンタルサーチが強力である。その際、ローマ字でも漢字でもサジェストされる状態にすることでユーザビリティの向上が期待できるため。

    ユーザーグループの推奨

    ユーザーグループの利用を推奨する。ゲストユーザーは追加できないため、もしチャンネルに該当するメンバーが在籍する場合は、その旨をメンバー全員が理解しコミュニケーションから除外してしまわないように注意すること。

    TIP

    ユーザーグループを作成できない状態(メンバーがワークスペース間にまたがっている場合等)の時、メンション先の対象者全員が個別に自分のSlack設定>Notification>My Keywordsに「@○○チーム」と予約語を登録することで、擬似的にグループメンションが可能

    チャンネル命名規則

    外部組織メンバーが在籍するチャンネルの命名

    Slack コネクト等でチャンネル内に社外のメンバーが含まれる場合には、チャンネル名の先頭に ---ext をつける

    理由:

    • 全社的に統一的なプレフィックスを定義することで、外部とのコミュニケーションにて予期しないミスが発生してしまうことを防ぐ目的がある。例えば、内部の進行について相談する発言を、取引先メンバーが在籍するチャンネルに誤投稿してしまう事態を避けるため
    • チャンネルはセクションという単位でグルーピング可能となり、従来のように、用途や組織を表現するプレフィックスで並び順を制御する必然性が薄れた

    投稿内容ポリシー

    敬称は不要

    敬称は省略して、 @mano メッセージ内容 といった形式でコメントすること。もし、どうしても敬称を付けて欲しい場合、表示名をさん付けにするハックも存在するため、受信者側で調整する。

    理由:

    • コミュニケーションを迅速・シンプルにするため

    絵文字や感嘆符を活用する

    積極的に活用することを推奨する。テキストコミュニケーションは、画像や音声が伝わらない分、冷たく捉えられがちである。特にリーダーなど上位のポジションにいる場合は、メンバーに威圧的に捉えられないように配慮するのが好ましい。

    「では、Aの方針でよろしくお願いします!」「では、Aの方針でよろしくお願いします:ganbatte:」 など付けることで、不機嫌でないことがわかり、心理的安全性が保たれる。

    積極的にカスタム絵文字を追加することを推奨する。チーム内でしか通用しない(例えば内輪ネタのような)カスタム絵文字であっても気軽に追加して良い。

    理由:

    • より良いコミュニケーション手段を模索すること自体が、コミュニケーションを活性化させ、価値を向上させるため

    注意:

    • なお、当然ながら他人の名誉を毀損するなど、社会人/プロフェッショナルとしてふさわしくない内容は登録しないこと

    絵文字リアクションによる積極応答

    非同期のコミュニケーションにおいて発信者が気になる点として、「投稿内容を見てくれたのかどうか」がある。特に確認依頼については見ていればOKで、回答は急がないケースは想像以上に多い。
    こういった場面では、::後で確認します:: といった絵文字リアクションを付けることで解決するため、積極的に活用する。

    また、参加者が多いチャンネルでの発信は勇気がいることなので、コミュニケーションを活性化させるためにも絵文字リアクションを積極的に行い推奨/礼賛することが望ましい。

    「〇〇してほしい」「〇〇について教えてほしい」(相談セクション)への対応は絵文字リアクションだけで済まさない

    「投稿内容を見てくれたのかどうか」ではなく、「投稿内容を理解して次のアクションをとってくれるのか」を知りたい場面も多い。 そのような場面では、絵文字リアクションのみで済まさず、対応可否をコメントでフィードバックする必要がある。

    DMはなるべく避ける

    基本的には、DMよりチャンネルでのやり取りを推奨する。チャンネルであっても、より参加人数が多い(よりオープンな)チャンネルでのやり取りを推奨する。

    理由:

    • 重複した質問を防ぐため
    • 質問事項がチーム/組織に共有されることで、全体の効率が上がるため
    • 後から類似の困りごとを持ったメンバーが、キーワード検索で見つけやすくするため

    DMの利用を推奨するケース:

    • 人事相談、機密事項を含む場合(「機密情報の流出に注意する」章を参照)
    • 限られたメンバーのみに、ファイル共有をしたい場合
    • 後から検索させる意味がないやり取り(「最近元気?」と同期に投げる場合など)

    timesの推奨

    timesとは、分報や作業スレッドとも呼ばれ、今取り組んでいることや困っていることを投稿することを指す。

    本規約の推奨は次のとおり:

    • timesの利用を推奨する
    • メンバーごとのtimesチャンネルではなく、スレッドでの利用を推奨する
    • timesスレッドは、他のメンバーは参照しても参照しなくてもどちらでも良い

    理由:

    • スレッド単位であれば、本チャンネル側のノイズになることはない。参加メンバーが多い場合は、times専用のチャンネルを作成すれば良い
    • メンバーごとの times チャンネルは、チャンネルが必要以上に増えるので推奨しない
    • 必要に応じて、作業状況を本人に確認(ポーリング)しなくても把握することができる
    • ハマったことや調べたことが、後々キーワード検索で見つかり、新規参画者の助けになることも多い

    timesスレッド作成者の注意事項:

    • times内とはいえ、他の人が不快になるような発言や不適切な利用は避ける(チームメンバーが閲覧可能であることを忘れない)

    timesスレッド内のメンション:

    • timesスレッドのコメント数は100以上になることもあり、途中で他メンバーに相談事などでメンションを飛ばすと、呼ばれたメンバーには「該当のスレッドの全コメントをチェックしたほうが良いのか」といった迷いが生じる。そのため、times内ではなく相談は別メッセージに切り出して行うことを推奨する
    • なお、timesの投稿を読んで欲しいときは、timesスレッドでメンションしても良い
    • timesのメンションを受けたユーザーが、その後の投稿の通知を受け取りたくない場合は、そのスレッドの通知を切ることで対応する

    timesスレッドでメンションを飛ばすと、その後の投稿によってメンション先のユーザーに通知が飛んでしまうのではないか?という懸念への考え方:

    • 該当スレッドのフォローを外せば良いので、上記観点でメンションを行う/行わないの判断は行わなくても良い。前述の通り、timesのコメントを(全て)読んで欲しい否かで決める

    メッセージ(スレッドのトップ)は具体的に書く

    チャンネルのメッセージ(スレッド先頭の投稿)では、話題を端的に表現する。ただし、返信スレッドの中を確認しないと内容が分からないようなメッセージ(タイトル)は非推奨とする。

    メッセージ(スレッド先頭の投稿)
    ✅推奨例@mirai チケット #4191 foo bar failed のビルドエラーの解消についての相談です。スタックトレースはスレッド内に記載します
    ❌非推奨例レビュー依頼

    なお、メンションはメッセージ(スレッド先頭)に付けるか、返信スレッド内に付けるかは任意とする。

    参考:

    メッセージのURLを活用する

    Slackは本来、フロー情報向けのツールである。しかしこれをWikiなどのストック情報向けツールに転記する労力は高く、運用が形骸化しがちである。そのため、例えばあるスレッドで設計方針について議論したのであれば、そのスレッドのURLをコピーして、作業チケットやWikiなどに記載し、トレース可能にするような運用にするチームも良く聞く。本規約もスレッドURLの活用を推奨する。

    なお、決定事項の経緯や議論内容を数年経過したのちに確認することもしばしば発生する。そのため議論があればスレッドを利用し、かつ同一スレッドで複数のテーマを混ぜないことが望ましい。関連議論がいくつかのスレッドに分かれる場合、相互に関連スレッドのURLを投稿しておくと良い。

    Slackにおける情報ストック機能

    Canvas、ブックマーク、ピン留め機能を活用することで、Slack内にてストック情報を取り扱うことも可能である。PJで利用している課題管理サービスのURLを共有したい場合にはブックマーク、PJメンバーに都度参照して欲しい特定のメッセージがある場合にはピン留め、情報量が多く章立てて整理をしたい場合にはCanvas、などといった形でユースケースに合わせて使い分ける。

    Also send to channelは乱発しない

    Also send to channel を利用することで、スレッド内の投稿をチャンネルのタイムライン側に重複投稿ができる。

    本規約の推奨は以下の通り:

    • 過去のスレッドでやり取りを再開した場合に、チャンネルに在籍するメンバーに通知する目的で用いる
    • スレッド内で重要な決定事項に至った場合は、メンバーに周知する目的で用いる
    • スレッド内のやり取りを細かくAlso send to channelすると、スレッドを用いる意味が薄れるので、利用頻度は抑えるように意識する

    広めの通知に注意する

    @channel

    緊急時を除き、原則利用を禁止する。

    理由:

    • @channel はSlackを見ていないユーザにも通知が飛ぶため、休暇中のメンバー等にも影響がある。受取側で制御すべきという考えもあるが、システム障害対応など優先度の高い問い合わせのために、あえてOFFにしていないメンバーも存在することを考えると、なるべく利用を避けた方が無難である

    利用して良い場合:

    • システム障害時など、重大かつ緊急度が高い場合は @channel を使っても良い

    @here

    メールのCCに似た意図で @here を使うことは禁止とする。

    推奨ケース

    txt
    @真野 @村田 ○○の件ですが\\~

    NG(メールのCC的な形で @here を追加)

    txt
    @真野 @村田 @here ○○の件ですが

    理由:

    • メールのCC的な参考情報であれば、@here を付けずに、チャンネルの未読通知で後で見ることができるため
    • 真に必要ではないときに通知が飛ぶことが常態化すると、@here の緊急性やアクションを求める意味合いが弱まり、真に必要なときに読み飛ばされてしまう可能性が上がるため(「狼少年」現象)

    利用して良い場合:

    • 全員にアクションを促す連絡事項を行う場合。例えば、チーム全体イベントへの出欠可否を確認する連絡など

    メンション範囲は適切に

    過剰なメンションの抑制

    原則、レビュー依頼や確認依頼など、行動してほしい時にメンションを付けるものとする。「@mirai ありがとうございます!」「@mirai 承知しました!」等の挨拶にメンションを付けると、通知が来てノイズになるため非推奨とする。メンションを付けず「ありがとうございます!」とすると良い。

    情報提供依頼系など善意やり取りはきちんとフィードバックする

    情報提供依頼はSlackと親和性が良いタスクである。この際、情報提供の依頼者は、回答してもらった人に対して、👍 絵文字だけのリアクションを取る場合があるが、フィードバック付きでコメントを返すことが望ましい。情報提供者としても、その情報が役立ったのか、またそうでないかの関心は強いためである。
    もし、フィードバックが難しい場合や、スレッド投稿数をなるべく減らしたいなどの意図がある場合は、複数のリアクションを返し感謝の意を強調すると良い。 👍️🎉☺[神] のようなイメージである。

    メンションの宛先をできる限り絞り込む

    単なる周知目的ではなく行動を促したい相手に絞ること。お見合いになってボールが浮いてしまう可能性がある。「@mirai @mano @murata @ozawa @tanimura AWSの設定で確認したいのですが~」などと広すぎる場合は、宛先メンバーは自分よりもっと詳しい人がいるかも知れないので、回答すべきかどうか逡巡してしまう。できれば1、2名に宛先を絞り、宛先メンバーから別の有識者メンバーにディスパッチしてもらう運用を考えると良い。

    予約投稿を活用する

    特にリーダーからメンバーに対して、深夜(22:00-6:00など)や休日など業務時間外の投稿は原則禁止とし、予約投稿を推奨する。

    理由:

    • 仕事とプライベートにメリハリを持たせることで、成果の向上を期待できるため
    • (システム障害等)緊急時の依頼と混同してしまうため。次回出勤時の対応で良いものと区別すること
    • Slackのアップデートにより、チャンネル投稿に閉じずスレッド投稿へも予約投稿が可能となった

    受け取り側で制御する方針

    システム障害時などの緊急時は電話連絡とし、メンションに対する即対応を求めない取り決めを行うのであれば、受け取り側で通知時間を設定し、送る側は送信時間に気を遣わない運用も可とする。ただし、時間外に通知を受け翌営業日に対応しようと考えたが翌営業日には忘れているような場合、受け取り側で通知を受けた時点でリマインダーを仕込んだり、アクティビティ > @メンション を定期的に確認するような工夫をする。

    不在の表明

    表示名に不在情報を記載(例:@sato_11/8休)しておくことを推奨する。受信側が不在時に緊急性の低い通知を防げたり、送信側が即レスを期待しなくて済む。不在情報がGoogleカレンダーなど別のスケジュールアプリで管理されていたとしても、Slackでの依頼時に気付けるため。

    ステータス機能で「休暇中🏝️」にすればよいのではないか

    ステータス機能でもチームメンバーに不在であるという状態を表明できる。しかし、次の観点で表示名での表明を推奨する。

    • いつから、いつまで休暇なのかステータスでは不明である
      • 期間が分かれば、予約投稿で休暇明けに投稿するなどのアクションがすぐ取れる
    • 休暇だけでなく出張中などの情報も提示できる
      • 例えば、海外出張なので時差があることが分かれば、チームメンバーにどれくらいでレスポンスが来そうか予想ができるようになる
    • ステータス変更に気が付きにくい
      • メンションを付けて投稿する時に常時表示されるわけではないので、ステータスは見過ごされる可能性が高い

    可読性を上げるための書式設定

    箇条書き、太字、引用などの装飾は、積極的に活用する。文章を構造化することで、読み手にとっての負荷が軽減されるため。Slackの書式以外にも、【すみかっこ】等の記号を使うことでセクションを表現することも同時に推奨する。

    エラーメッセージの画像添付非推奨、テキストスニペットの推奨

    有識者にスタックトレースなどのエラー内容を画像添付して問い合わせることは原則として非推奨とし、テキストで共有することを推奨する。また、共有内容が長文の場合にはテキストスニペット使用が好ましい。

    理由:

    • 相談相手も裏取りとしてスタックトレースの内容を検索することが多々あるため
    • 後から同様の困り事を持った人が、キーワード検索で見つけにくくなるため
    • 長いログをそのまま貼り付けるとスレッドを広く埋め尽くしてしまうが、テキストスニペットを使えば1投稿あたりのデフォルト表示域を制限できる

    次の場合は、スクリーンショットなどの画像で共有しても良い。

    • コピーできないエラー表示など、テキストでの情報提供が難しい場合
    • (相談相手が、コピー範囲などを独自判断で狭められることを防ぐなどの理由で)スクリーンショットでの共有を希望する場合

    テキストスニペット利用時は、タイトル(ファイル名)に拡張子をつける

    Slackはテキストスニペットに設定されたタイトルをそのままファイル名としてダウンロードするよう動作する。この際拡張子が設定されていないとSlack内でそのままファイルを開くことができなくなってしまう。

    機密情報の流出に注意する

    営業情報、個人情報、人事情報など機密情報は、「最小権限の原則」に従い、なるべく宛先を狭めるべきである。センシティブなやり取りを行う場合は、参加者を絞ったプライベートチャンネル/DMグループの活用を推奨する。

    メッセージ通知にも気をつける

    画面投影やWebミーティングでの画面共有時、意図しないメッセージ通知が見えてしまう事がある。Slackの通知設定にて次に示す設定を施すことで防ぐことが可能なので活用すると良い。

    • 通知自体をOFFにする
    • 通知はOFFにしないが、メッセージ内容は非表示にする

    ファイルの共有に注意する

    Slackのファイル共有は便利であるが、ファイルのオーナー(作成者)とチャンネルにメンバー追加できる担当者が必ずしも1:1ではない。そのため次の運用が望ましい。

    推奨する運用:

    • Google Driveなどにファイルをアップロードする
    • Google Drive側で適切な権限に絞り込む

    理由:

    • Google Drive側で権限設定が可能
    • Slack上にアップロードされたファイルが、別のチャンネルに再アップロードされて収集がつかなくなるといったケースを防ぎ、統制を図るため

    該当しないケース:

    • 社外勉強会の登壇資料など、一般に「公開済み/公開予定 」のファイルはアップロードして良い

    Google DriveのURL共有時プレビュー表示について:

    • 表紙がプレビューされるが、次の理由により問題ないという立場を取る。
      • プレビュー表示されるのは1枚目(1シート目)であり、通常は表紙ページが見られるのみ
      • ファイルが存在すること自体は知られて良い(チャンネルに投稿しているため)と考えられる
      • なにか問題があれば、プレビュー表示を行わない操作がSlack上で可能である

    プライベートチャンネルの投稿に対する引用

    プライベートチャンネルの投稿コメントを、別のチャンネルにURL引用で投稿すると、該当チャンネルの権限を有していないユーザーにも参照権限を与えてしまう。引用時にはセンシティブな内容が含まれていないか確認するよう注意する。

    さいごに

    本ガイドラインの策定にあたっては、すでにインターネットに公開されているSlack利用ガイドラインや記事等も参照させていただいた。本ガイドラインが皆様のSlack活用をより快適にする一助となれば幸いである。

    参考:

    ',149))])}const q=e(c,[["render",n]]);export{k as __pageData,q as default}; diff --git a/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.lean.js b/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.lean.js new file mode 100644 index 00000000..702e7909 --- /dev/null +++ b/assets/documents_forSlack_slack_usage_guidelines.md.CSqvs_Yo.lean.js @@ -0,0 +1 @@ +import{_ as e,c as i,G as t,a3 as r,B as o,o as s}from"./chunks/framework.BDUoXecB.js";const k=JSON.parse('{"title":"Slack利用ガイドライン","description":"","frontmatter":{"sidebarDepth":4,"title":"Slack利用ガイドライン","author":"フューチャー株式会社","head":[["meta",{"name":"keywords","content":"Slack"}]]},"headers":[],"relativePath":"documents/forSlack/slack_usage_guidelines.md","filePath":"documents/forSlack/slack_usage_guidelines.md"}'),c={name:"documents/forSlack/slack_usage_guidelines.md"};function n(p,a,h,d,u,b){const l=o("page-title");return s(),i("div",null,[t(l),a[0]||(a[0]=r('

    本規約は、世の中のシステム開発プロジェクトのために無償で提供致します。
    ただし、掲載内容および利用に際して発生した問題、それに伴う損害については、フューチャー株式会社は一切の責務を負わないものとします。
    また、掲載している情報は予告なく変更することがございますので、あらかじめご了承下さい。

    はじめに

    リモートワーク/ハイブリッドワーク前提の業務において、チャットなどの非同期コミュニケーションを円滑に進めることは、業務効率を向上させるだけではなく、従業員全員の満足度を向上させ、より良い職場づくりに繋げることができる。

    また、ユーザーの様々な要望に応えるため、現代のチャットサービスは豊富な機能が提供されている。しかし、各ユーザーの考え方/利用者の感覚が千差万別であるため、ある人によって問題ないとされる行動が、別の人にとっては良くない受け取り方をされることも多い。例えば次のような対立が考えられる。

    • 必要最低限の簡潔なメッセージを送る方が効率的だ/文面が冷たくならないように絵文字や感嘆符(!)を使うべきだ
    • 質問はDMで行うべき/チャンネルで行うべき
    • times(分報)チャンネルを活用すべき/ノイズなので個人のメモに閉じるべき

    これら運用方法は利用者の所属する部署やチームごとに自然と決めていくことが多いが、複数のチャンネルで異なった運用方針である場合に混乱をきたすことがしばしばである。また、トレードオフを理解せずに、メールのコミュニケーションモデルを引きずった方針を取ってしまうこともある。異なる文化圏のチームから移籍した時に、ハレーションが起きるケースも多い。

    本ガイドラインはSlackを対象に利用方針についてのベースとなる規約を設け、Slackを用いてより良いコミュニケーションを促進することを目的とする。

    適用範囲

    • 「はじめに」章で述べた、一般ユーザー視点での利活用を中心とする
    • 次のような特に管理者が関心を持つ事項については対象外とする
      • パスワードポリシー/多要素認証の強制
      • 社外メンバー招待/ゲストレベルの調整
      • 監査

    免責事項

    有志で作成したドキュメントである

    • フューチャーアーキテクトには多様なプロジェクトが存在し、それぞれの状況に合わせて工夫された運営方針が存在する。本規約はフューチャーアーキテクトの全ての部署/プロジェクトで利用されているわけではなく、有志が観点を持ち寄って新たに整理したものである。相容れない部分があればその領域を書き換えて利用することを想定している
    • 自社のセキュリティポリシーや外部サービス利用ポリシーがある場合は、そちらを優先すること
    • Slack Enterprise Grid/Google Workspaceを利用しているため、それらの機能を前提にしている記述がある

    管理者向け推奨設定

    Workspace Access

    チーム、プロジェクトでの利用の場合は リクエスト制(By Request) もしくは招待性( Invite Only)の設定を推奨する。

    デフォルトチャンネル

    通常ワークスペースにメンバーを追加した際には #general へ自動参加するが、他にもメンバー全員に参加して欲しいチャンネルがある場合にはデフォルトチャンネルを追加する。

    TIP

    ユーザグループに対してもデフォルトチャンネルを設定できるため、用途に応じて使い分けると良い。

    表示名ガイドライン

    ワークスペースごとにガイドラインを設定することを推奨する。後述の表示名設定や、その他チームコミュニケーションにおけるルールを設定する。表示名のガイドラインを設定する権限があるのは、ワークスペースのオーナーだけなので注意する。

    ワークスペースの管理者

    ワークスペース内に複数のチームが混在する場合、それぞれのチームごとに管理者権限保持者を設定すること。

    理由:

    • 管理者権限を持った人しか実行できないオペレーションがあった際、チーム内で解決できる状態を作っておくことが望ましいため

    ユーザ向け推奨設定

    アカウントアイコンを設定する

    デフォルトのアイコン利用は極力避け、アカウント登録時に各自のアイコン画像を積極的に登録する

    理由:

    • チャットコミュニケーションにおいて、個人識別におけるアイコン画像の有用性が高いため

    また、GitHub/GitLab、Google Workspace、その他利用サービスも同様のアイコンを利用することで、個人を識別しやすくなる。

    検索性の高い氏名(Full name)を設定する

    表示名(Display name) もしくは氏名(Full name) にて、ローマ字及び漢字(無ければカタカナ)でのフルネームを登録すること。表示名はチームごとに記載文化や書き方が異なるケースが多いので、本ガイドラインでは氏名に記載することを推奨する。例えば「未来 太郎」の場合、「Taro Mirai (未来 太郎)」という記載を推奨する。

    理由:

    • Slackではアカウント名のインクリメンタルサーチが強力である。その際、ローマ字でも漢字でもサジェストされる状態にすることでユーザビリティの向上が期待できるため。

    ユーザーグループの推奨

    ユーザーグループの利用を推奨する。ゲストユーザーは追加できないため、もしチャンネルに該当するメンバーが在籍する場合は、その旨をメンバー全員が理解しコミュニケーションから除外してしまわないように注意すること。

    TIP

    ユーザーグループを作成できない状態(メンバーがワークスペース間にまたがっている場合等)の時、メンション先の対象者全員が個別に自分のSlack設定>Notification>My Keywordsに「@○○チーム」と予約語を登録することで、擬似的にグループメンションが可能

    チャンネル命名規則

    外部組織メンバーが在籍するチャンネルの命名

    Slack コネクト等でチャンネル内に社外のメンバーが含まれる場合には、チャンネル名の先頭に ---ext をつける

    理由:

    • 全社的に統一的なプレフィックスを定義することで、外部とのコミュニケーションにて予期しないミスが発生してしまうことを防ぐ目的がある。例えば、内部の進行について相談する発言を、取引先メンバーが在籍するチャンネルに誤投稿してしまう事態を避けるため
    • チャンネルはセクションという単位でグルーピング可能となり、従来のように、用途や組織を表現するプレフィックスで並び順を制御する必然性が薄れた

    投稿内容ポリシー

    敬称は不要

    敬称は省略して、 @mano メッセージ内容 といった形式でコメントすること。もし、どうしても敬称を付けて欲しい場合、表示名をさん付けにするハックも存在するため、受信者側で調整する。

    理由:

    • コミュニケーションを迅速・シンプルにするため

    絵文字や感嘆符を活用する

    積極的に活用することを推奨する。テキストコミュニケーションは、画像や音声が伝わらない分、冷たく捉えられがちである。特にリーダーなど上位のポジションにいる場合は、メンバーに威圧的に捉えられないように配慮するのが好ましい。

    「では、Aの方針でよろしくお願いします!」「では、Aの方針でよろしくお願いします:ganbatte:」 など付けることで、不機嫌でないことがわかり、心理的安全性が保たれる。

    積極的にカスタム絵文字を追加することを推奨する。チーム内でしか通用しない(例えば内輪ネタのような)カスタム絵文字であっても気軽に追加して良い。

    理由:

    • より良いコミュニケーション手段を模索すること自体が、コミュニケーションを活性化させ、価値を向上させるため

    注意:

    • なお、当然ながら他人の名誉を毀損するなど、社会人/プロフェッショナルとしてふさわしくない内容は登録しないこと

    絵文字リアクションによる積極応答

    非同期のコミュニケーションにおいて発信者が気になる点として、「投稿内容を見てくれたのかどうか」がある。特に確認依頼については見ていればOKで、回答は急がないケースは想像以上に多い。
    こういった場面では、::後で確認します:: といった絵文字リアクションを付けることで解決するため、積極的に活用する。

    また、参加者が多いチャンネルでの発信は勇気がいることなので、コミュニケーションを活性化させるためにも絵文字リアクションを積極的に行い推奨/礼賛することが望ましい。

    「〇〇してほしい」「〇〇について教えてほしい」(相談セクション)への対応は絵文字リアクションだけで済まさない

    「投稿内容を見てくれたのかどうか」ではなく、「投稿内容を理解して次のアクションをとってくれるのか」を知りたい場面も多い。 そのような場面では、絵文字リアクションのみで済まさず、対応可否をコメントでフィードバックする必要がある。

    DMはなるべく避ける

    基本的には、DMよりチャンネルでのやり取りを推奨する。チャンネルであっても、より参加人数が多い(よりオープンな)チャンネルでのやり取りを推奨する。

    理由:

    • 重複した質問を防ぐため
    • 質問事項がチーム/組織に共有されることで、全体の効率が上がるため
    • 後から類似の困りごとを持ったメンバーが、キーワード検索で見つけやすくするため

    DMの利用を推奨するケース:

    • 人事相談、機密事項を含む場合(「機密情報の流出に注意する」章を参照)
    • 限られたメンバーのみに、ファイル共有をしたい場合
    • 後から検索させる意味がないやり取り(「最近元気?」と同期に投げる場合など)

    timesの推奨

    timesとは、分報や作業スレッドとも呼ばれ、今取り組んでいることや困っていることを投稿することを指す。

    本規約の推奨は次のとおり:

    • timesの利用を推奨する
    • メンバーごとのtimesチャンネルではなく、スレッドでの利用を推奨する
    • timesスレッドは、他のメンバーは参照しても参照しなくてもどちらでも良い

    理由:

    • スレッド単位であれば、本チャンネル側のノイズになることはない。参加メンバーが多い場合は、times専用のチャンネルを作成すれば良い
    • メンバーごとの times チャンネルは、チャンネルが必要以上に増えるので推奨しない
    • 必要に応じて、作業状況を本人に確認(ポーリング)しなくても把握することができる
    • ハマったことや調べたことが、後々キーワード検索で見つかり、新規参画者の助けになることも多い

    timesスレッド作成者の注意事項:

    • times内とはいえ、他の人が不快になるような発言や不適切な利用は避ける(チームメンバーが閲覧可能であることを忘れない)

    timesスレッド内のメンション:

    • timesスレッドのコメント数は100以上になることもあり、途中で他メンバーに相談事などでメンションを飛ばすと、呼ばれたメンバーには「該当のスレッドの全コメントをチェックしたほうが良いのか」といった迷いが生じる。そのため、times内ではなく相談は別メッセージに切り出して行うことを推奨する
    • なお、timesの投稿を読んで欲しいときは、timesスレッドでメンションしても良い
    • timesのメンションを受けたユーザーが、その後の投稿の通知を受け取りたくない場合は、そのスレッドの通知を切ることで対応する

    timesスレッドでメンションを飛ばすと、その後の投稿によってメンション先のユーザーに通知が飛んでしまうのではないか?という懸念への考え方:

    • 該当スレッドのフォローを外せば良いので、上記観点でメンションを行う/行わないの判断は行わなくても良い。前述の通り、timesのコメントを(全て)読んで欲しい否かで決める

    メッセージ(スレッドのトップ)は具体的に書く

    チャンネルのメッセージ(スレッド先頭の投稿)では、話題を端的に表現する。ただし、返信スレッドの中を確認しないと内容が分からないようなメッセージ(タイトル)は非推奨とする。

    メッセージ(スレッド先頭の投稿)
    ✅推奨例@mirai チケット #4191 foo bar failed のビルドエラーの解消についての相談です。スタックトレースはスレッド内に記載します
    ❌非推奨例レビュー依頼

    なお、メンションはメッセージ(スレッド先頭)に付けるか、返信スレッド内に付けるかは任意とする。

    参考:

    メッセージのURLを活用する

    Slackは本来、フロー情報向けのツールである。しかしこれをWikiなどのストック情報向けツールに転記する労力は高く、運用が形骸化しがちである。そのため、例えばあるスレッドで設計方針について議論したのであれば、そのスレッドのURLをコピーして、作業チケットやWikiなどに記載し、トレース可能にするような運用にするチームも良く聞く。本規約もスレッドURLの活用を推奨する。

    なお、決定事項の経緯や議論内容を数年経過したのちに確認することもしばしば発生する。そのため議論があればスレッドを利用し、かつ同一スレッドで複数のテーマを混ぜないことが望ましい。関連議論がいくつかのスレッドに分かれる場合、相互に関連スレッドのURLを投稿しておくと良い。

    Slackにおける情報ストック機能

    Canvas、ブックマーク、ピン留め機能を活用することで、Slack内にてストック情報を取り扱うことも可能である。PJで利用している課題管理サービスのURLを共有したい場合にはブックマーク、PJメンバーに都度参照して欲しい特定のメッセージがある場合にはピン留め、情報量が多く章立てて整理をしたい場合にはCanvas、などといった形でユースケースに合わせて使い分ける。

    Also send to channelは乱発しない

    Also send to channel を利用することで、スレッド内の投稿をチャンネルのタイムライン側に重複投稿ができる。

    本規約の推奨は以下の通り:

    • 過去のスレッドでやり取りを再開した場合に、チャンネルに在籍するメンバーに通知する目的で用いる
    • スレッド内で重要な決定事項に至った場合は、メンバーに周知する目的で用いる
    • スレッド内のやり取りを細かくAlso send to channelすると、スレッドを用いる意味が薄れるので、利用頻度は抑えるように意識する

    広めの通知に注意する

    @channel

    緊急時を除き、原則利用を禁止する。

    理由:

    • @channel はSlackを見ていないユーザにも通知が飛ぶため、休暇中のメンバー等にも影響がある。受取側で制御すべきという考えもあるが、システム障害対応など優先度の高い問い合わせのために、あえてOFFにしていないメンバーも存在することを考えると、なるべく利用を避けた方が無難である

    利用して良い場合:

    • システム障害時など、重大かつ緊急度が高い場合は @channel を使っても良い

    @here

    メールのCCに似た意図で @here を使うことは禁止とする。

    推奨ケース

    txt
    @真野 @村田 ○○の件ですが\\~

    NG(メールのCC的な形で @here を追加)

    txt
    @真野 @村田 @here ○○の件ですが

    理由:

    • メールのCC的な参考情報であれば、@here を付けずに、チャンネルの未読通知で後で見ることができるため
    • 真に必要ではないときに通知が飛ぶことが常態化すると、@here の緊急性やアクションを求める意味合いが弱まり、真に必要なときに読み飛ばされてしまう可能性が上がるため(「狼少年」現象)

    利用して良い場合:

    • 全員にアクションを促す連絡事項を行う場合。例えば、チーム全体イベントへの出欠可否を確認する連絡など

    メンション範囲は適切に

    過剰なメンションの抑制

    原則、レビュー依頼や確認依頼など、行動してほしい時にメンションを付けるものとする。「@mirai ありがとうございます!」「@mirai 承知しました!」等の挨拶にメンションを付けると、通知が来てノイズになるため非推奨とする。メンションを付けず「ありがとうございます!」とすると良い。

    情報提供依頼系など善意やり取りはきちんとフィードバックする

    情報提供依頼はSlackと親和性が良いタスクである。この際、情報提供の依頼者は、回答してもらった人に対して、👍 絵文字だけのリアクションを取る場合があるが、フィードバック付きでコメントを返すことが望ましい。情報提供者としても、その情報が役立ったのか、またそうでないかの関心は強いためである。
    もし、フィードバックが難しい場合や、スレッド投稿数をなるべく減らしたいなどの意図がある場合は、複数のリアクションを返し感謝の意を強調すると良い。 👍️🎉☺[神] のようなイメージである。

    メンションの宛先をできる限り絞り込む

    単なる周知目的ではなく行動を促したい相手に絞ること。お見合いになってボールが浮いてしまう可能性がある。「@mirai @mano @murata @ozawa @tanimura AWSの設定で確認したいのですが~」などと広すぎる場合は、宛先メンバーは自分よりもっと詳しい人がいるかも知れないので、回答すべきかどうか逡巡してしまう。できれば1、2名に宛先を絞り、宛先メンバーから別の有識者メンバーにディスパッチしてもらう運用を考えると良い。

    予約投稿を活用する

    特にリーダーからメンバーに対して、深夜(22:00-6:00など)や休日など業務時間外の投稿は原則禁止とし、予約投稿を推奨する。

    理由:

    • 仕事とプライベートにメリハリを持たせることで、成果の向上を期待できるため
    • (システム障害等)緊急時の依頼と混同してしまうため。次回出勤時の対応で良いものと区別すること
    • Slackのアップデートにより、チャンネル投稿に閉じずスレッド投稿へも予約投稿が可能となった

    受け取り側で制御する方針

    システム障害時などの緊急時は電話連絡とし、メンションに対する即対応を求めない取り決めを行うのであれば、受け取り側で通知時間を設定し、送る側は送信時間に気を遣わない運用も可とする。ただし、時間外に通知を受け翌営業日に対応しようと考えたが翌営業日には忘れているような場合、受け取り側で通知を受けた時点でリマインダーを仕込んだり、アクティビティ > @メンション を定期的に確認するような工夫をする。

    不在の表明

    表示名に不在情報を記載(例:@sato_11/8休)しておくことを推奨する。受信側が不在時に緊急性の低い通知を防げたり、送信側が即レスを期待しなくて済む。不在情報がGoogleカレンダーなど別のスケジュールアプリで管理されていたとしても、Slackでの依頼時に気付けるため。

    ステータス機能で「休暇中🏝️」にすればよいのではないか

    ステータス機能でもチームメンバーに不在であるという状態を表明できる。しかし、次の観点で表示名での表明を推奨する。

    • いつから、いつまで休暇なのかステータスでは不明である
      • 期間が分かれば、予約投稿で休暇明けに投稿するなどのアクションがすぐ取れる
    • 休暇だけでなく出張中などの情報も提示できる
      • 例えば、海外出張なので時差があることが分かれば、チームメンバーにどれくらいでレスポンスが来そうか予想ができるようになる
    • ステータス変更に気が付きにくい
      • メンションを付けて投稿する時に常時表示されるわけではないので、ステータスは見過ごされる可能性が高い

    可読性を上げるための書式設定

    箇条書き、太字、引用などの装飾は、積極的に活用する。文章を構造化することで、読み手にとっての負荷が軽減されるため。Slackの書式以外にも、【すみかっこ】等の記号を使うことでセクションを表現することも同時に推奨する。

    エラーメッセージの画像添付非推奨、テキストスニペットの推奨

    有識者にスタックトレースなどのエラー内容を画像添付して問い合わせることは原則として非推奨とし、テキストで共有することを推奨する。また、共有内容が長文の場合にはテキストスニペット使用が好ましい。

    理由:

    • 相談相手も裏取りとしてスタックトレースの内容を検索することが多々あるため
    • 後から同様の困り事を持った人が、キーワード検索で見つけにくくなるため
    • 長いログをそのまま貼り付けるとスレッドを広く埋め尽くしてしまうが、テキストスニペットを使えば1投稿あたりのデフォルト表示域を制限できる

    次の場合は、スクリーンショットなどの画像で共有しても良い。

    • コピーできないエラー表示など、テキストでの情報提供が難しい場合
    • (相談相手が、コピー範囲などを独自判断で狭められることを防ぐなどの理由で)スクリーンショットでの共有を希望する場合

    テキストスニペット利用時は、タイトル(ファイル名)に拡張子をつける

    Slackはテキストスニペットに設定されたタイトルをそのままファイル名としてダウンロードするよう動作する。この際拡張子が設定されていないとSlack内でそのままファイルを開くことができなくなってしまう。

    機密情報の流出に注意する

    営業情報、個人情報、人事情報など機密情報は、「最小権限の原則」に従い、なるべく宛先を狭めるべきである。センシティブなやり取りを行う場合は、参加者を絞ったプライベートチャンネル/DMグループの活用を推奨する。

    メッセージ通知にも気をつける

    画面投影やWebミーティングでの画面共有時、意図しないメッセージ通知が見えてしまう事がある。Slackの通知設定にて次に示す設定を施すことで防ぐことが可能なので活用すると良い。

    • 通知自体をOFFにする
    • 通知はOFFにしないが、メッセージ内容は非表示にする

    ファイルの共有に注意する

    Slackのファイル共有は便利であるが、ファイルのオーナー(作成者)とチャンネルにメンバー追加できる担当者が必ずしも1:1ではない。そのため次の運用が望ましい。

    推奨する運用:

    • Google Driveなどにファイルをアップロードする
    • Google Drive側で適切な権限に絞り込む

    理由:

    • Google Drive側で権限設定が可能
    • Slack上にアップロードされたファイルが、別のチャンネルに再アップロードされて収集がつかなくなるといったケースを防ぎ、統制を図るため

    該当しないケース:

    • 社外勉強会の登壇資料など、一般に「公開済み/公開予定 」のファイルはアップロードして良い

    Google DriveのURL共有時プレビュー表示について:

    • 表紙がプレビューされるが、次の理由により問題ないという立場を取る。
      • プレビュー表示されるのは1枚目(1シート目)であり、通常は表紙ページが見られるのみ
      • ファイルが存在すること自体は知られて良い(チャンネルに投稿しているため)と考えられる
      • なにか問題があれば、プレビュー表示を行わない操作がSlack上で可能である

    プライベートチャンネルの投稿に対する引用

    プライベートチャンネルの投稿コメントを、別のチャンネルにURL引用で投稿すると、該当チャンネルの権限を有していないユーザーにも参照権限を与えてしまう。引用時にはセンシティブな内容が含まれていないか確認するよう注意する。

    さいごに

    本ガイドラインの策定にあたっては、すでにインターネットに公開されているSlack利用ガイドラインや記事等も参照させていただいた。本ガイドラインが皆様のSlack活用をより快適にする一助となれば幸いである。

    参考:

    ',149))])}const q=e(c,[["render",n]]);export{k as __pageData,q as default}; diff --git a/assets/future_muscle_partner_abstract.CX2VLXG2.png b/assets/future_muscle_partner_abstract.CX2VLXG2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f816600172775c5cfc419a5d05e6cd2839fdf0c GIT binary patch literal 9895 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 literal 0 HcmV?d00001 diff --git a/assets/index.md.BPB33D2m.js b/assets/index.md.BPB33D2m.js new file mode 100644 index 00000000..747263bd --- /dev/null +++ b/assets/index.md.BPB33D2m.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as r,o as i}from"./chunks/framework.BDUoXecB.js";const h=JSON.parse('{"title":"Future Enterprise Coding Standards","description":"","frontmatter":{"layout":"home","title":"Future Enterprise Coding Standards","hero":{"name":"Future Enterprise Coding Standards","tagline":"フューチャー株式会社が作成するエンタープライズ領域に特化したコーディング規約","actions":[{"theme":"brand","text":"Javaコーディング規約","link":"./documents/forJava/"},{"theme":"brand","text":"SQL コーディング規約","link":"./documents/forSQL/"},{"theme":"alt","text":"AWS インフラリソース命名規約","link":"./documents/forAWSResource"},{"theme":"alt","text":"OpenAPI Specification 規約","link":"./documents/forOpenAPISpecification"},{"theme":"alt","text":"Gitブランチフロー規約","link":"./documents/forGitBranch/"}]},"features":[{"title":"Readability","details":"ソースコードの可読性を高く保つことで、保守性・拡張性の高いソフトウェアを作ることができます。 しかし、可読性の指標は複数あり、デベロッパーごとに判断がブレ、それぞれのスタイルで記述すると、ソフトウェア全体で見たときの可読性が下がってしまいます。 本コーディング規約は、コーディング時の判断のブレを防ぎます。"},{"title":"Enterprise","details":"エンタープライズ領域では、社員・パートナーの方々を合わせて、数百人が同時に開発することも珍しくありません。 ちょっとした悩み、失敗も、人数が集まれば大変なコスト・リスクになります。 誰もが引っかかる落とし穴、悩みの種をあらかじめ排除します。"},{"title":"Performance","details":"時に読みやすいソースコードはパフォーマンス劣化を招くことがあります。 しかし、常にパフォーマンスを優先したソースコードは人間の読めないソースコードになりがちです。 今、書こうとしているソースコードが、どの程度のパフォーマンスになるのか、指標を示すことで、ソフトウェア開発プロジェクトごとに最適なソースコードを選択することができます。"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"};function n(o,t,c,l,d,m){return i(),a("div",null,t[0]||(t[0]=[r('

    GitHub last commitGitHub stars

    License

    CC-By-4.0

    ',3)]))}const p=e(s,[["render",n]]);export{h as __pageData,p as default}; diff --git a/assets/index.md.BPB33D2m.lean.js b/assets/index.md.BPB33D2m.lean.js new file mode 100644 index 00000000..747263bd --- /dev/null +++ b/assets/index.md.BPB33D2m.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,a3 as r,o as i}from"./chunks/framework.BDUoXecB.js";const h=JSON.parse('{"title":"Future Enterprise Coding Standards","description":"","frontmatter":{"layout":"home","title":"Future Enterprise Coding Standards","hero":{"name":"Future Enterprise Coding Standards","tagline":"フューチャー株式会社が作成するエンタープライズ領域に特化したコーディング規約","actions":[{"theme":"brand","text":"Javaコーディング規約","link":"./documents/forJava/"},{"theme":"brand","text":"SQL コーディング規約","link":"./documents/forSQL/"},{"theme":"alt","text":"AWS インフラリソース命名規約","link":"./documents/forAWSResource"},{"theme":"alt","text":"OpenAPI Specification 規約","link":"./documents/forOpenAPISpecification"},{"theme":"alt","text":"Gitブランチフロー規約","link":"./documents/forGitBranch/"}]},"features":[{"title":"Readability","details":"ソースコードの可読性を高く保つことで、保守性・拡張性の高いソフトウェアを作ることができます。 しかし、可読性の指標は複数あり、デベロッパーごとに判断がブレ、それぞれのスタイルで記述すると、ソフトウェア全体で見たときの可読性が下がってしまいます。 本コーディング規約は、コーディング時の判断のブレを防ぎます。"},{"title":"Enterprise","details":"エンタープライズ領域では、社員・パートナーの方々を合わせて、数百人が同時に開発することも珍しくありません。 ちょっとした悩み、失敗も、人数が集まれば大変なコスト・リスクになります。 誰もが引っかかる落とし穴、悩みの種をあらかじめ排除します。"},{"title":"Performance","details":"時に読みやすいソースコードはパフォーマンス劣化を招くことがあります。 しかし、常にパフォーマンスを優先したソースコードは人間の読めないソースコードになりがちです。 今、書こうとしているソースコードが、どの程度のパフォーマンスになるのか、指標を示すことで、ソフトウェア開発プロジェクトごとに最適なソースコードを選択することができます。"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),s={name:"index.md"};function n(o,t,c,l,d,m){return i(),a("div",null,t[0]||(t[0]=[r('

    GitHub last commitGitHub stars

    License

    CC-By-4.0

    ',3)]))}const p=e(s,[["render",n]]);export{h as __pageData,p as default}; diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b6b603d596933f026dfecf98550bbe4d0876276b GIT binary patch literal 43112 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..def40a4f658cf8a9f7029c98931f5c9ff5a00910 GIT binary patch literal 31300 zcmV(?K-a%_Pew8T0RR910D43K6951J0MIl50C~{>1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a3c16ca40b2a8f454c34cfa91996ec99ae2e4aa0 GIT binary patch literal 32564 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 b6r&82^QQ+ZZ1?Zre-i}g|91_a`#}W>14e7b literal 0 HcmV?d00001 diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2210a899edaeb06655f7bc50e7f94444da140b94 GIT binary patch literal 120840 zcmV)DK*7IvPew8T0RR910oVut6951J1HHHa0oRcL1ONa400000000000000000000 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̍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�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

    l(X_I+GK&R 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 H00000K--!s literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..36d67487dcf5fbe3dc6d0a6b01cf4d29dc997765 GIT binary patch literal 16272 zcmV;BKX1TyPew8T0RR9106&lb6951J0Hgo_06!c61ONa400000000000000000000 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 G0RR9|PM1{x literal 0 HcmV?d00001 diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2bed1e85e8b20cb3903206a6cace251c52bdd8c3 GIT binary patch literal 29920 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9a8d1e2b5ef22b97801781478d477685dd6119f3 GIT binary patch literal 110160 zcmV)XK&`)bPew8T0RR910j^L06951J1C_)80j=5q1ONa400000000000000000000 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 literal 0 HcmV?d00001 diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..07d3c53aef14e7e3aec6b11684395f2833e0b3d5 GIT binary patch literal 67792 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 IZR%D40KZ@npa1{> literal 0 HcmV?d00001 diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..57bdc22ae88555c6217307e4064a642f83d642b1 GIT binary patch literal 14072 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 literal 0 HcmV?d00001 diff --git a/assets/merge_strategy_develop_to_feature_merge.drawio.Chi_3Oep.png b/assets/merge_strategy_develop_to_feature_merge.drawio.Chi_3Oep.png new file mode 100644 index 0000000000000000000000000000000000000000..13ee62821caaa27d407a5eaeaa5435ba66d7679b GIT binary patch literal 48423 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 literal 0 HcmV?d00001 diff --git a/assets/merge_strategy_develop_to_feature_rebase.drawio.Db0KPnu1.png b/assets/merge_strategy_develop_to_feature_rebase.drawio.Db0KPnu1.png new file mode 100644 index 0000000000000000000000000000000000000000..415231d067989f147d9b7f28e0c1ab708cdd9e62 GIT binary patch literal 63760 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 HZc%>#jX!*J literal 0 HcmV?d00001 diff --git a/assets/merge_strategy_feature_to_develop_rebase_and_merge.drawio.C4YTK8Ke.png b/assets/merge_strategy_feature_to_develop_rebase_and_merge.drawio.C4YTK8Ke.png new file mode 100644 index 0000000000000000000000000000000000000000..a57b23fa2b7d396a807284a52cef956643c9d071 GIT binary patch literal 122093 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 MZ5+?Nweq?3FBS8QP$WcADv?T*a+D+~3K2@D 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
    !Voq;5 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 KjVcYCpZp7i!v{wI literal 0 HcmV?d00001 diff --git a/assets/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.DUmvz-tJ.png b/assets/merge_strategy_feature_to_develop_squash_and_merge_gitlab.drawio.DUmvz-tJ.png new file mode 100644 index 0000000000000000000000000000000000000000..cb99f085962ce71cb9ec125853b70505602a4d6f GIT binary patch literal 23536 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 Bed+)J literal 0 HcmV?d00001 diff --git a/assets/release_overtaking.drawio.DPjD4_z3.png b/assets/release_overtaking.drawio.DPjD4_z3.png new file mode 100644 index 0000000000000000000000000000000000000000..32fef1a82baaf5336af48fc3e6902e705a1168f0 GIT binary patch literal 125087 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

    HguK@B4mV@9TPvD?4!xcnTCs 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 S?r8%252kzybnzc0CN$zv*bN1Q$+SlIuoLte>6{ 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

    vibwWmEkWH?X0FZ|b$Wy1izPP&kI7y~sQlYa$Dv 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 P+2^sQo<`LJyI21Yn4`;A literal 0 HcmV?d00001 diff --git a/assets/vscode_git_branch2.Cwy7x_5O.png b/assets/vscode_git_branch2.Cwy7x_5O.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d72572c04715cb0955b3c7b97e959c36825793 GIT binary patch literal 293696 zcmbTeby$>N*ET$agtRCjDJUo%N|y+NQYtMmG}1lfFd#|_s7RNhlF~5(!_0tmOLsQ| zLwCFv>M!o+`QGoikM}sPKXeB6wbt6_UVH6xotv;H>PlpnuU`g%KxB`U6`p}WgaIHB zei0D?@X2)n-8~S974%5qzLpmbrsf!awZ9VU@V;ih#S&{6ssFO*E^Bz`zRCu;mbaQj)MjfF52=Bjoy3a`&L14H4#slDISV8QdZ9DS+!hXQVzg;L4Ke+e*=mMQQfmKJ+Ew_dC zci!6zE#8Z%O(ZP;VXRyL&ONZsw$(kDm0)Uv`(LI7`d`G4h}Q4;k~+qM_4V(V2d>bI z&4jYgrMPvz>s6Oji;`Ry6JN>xY;m-+jM%{Wk1*rYJ=wOr=OlBw(;MSmmZY&Q{q+cY z=iqAkp9z;M{}m2ln?GX%5xqhXC3Eybe1FVsKEXW7)P=w3dkAGG1&#@b;O}Qe@Z&3! zd+9pcwlq0;Mqe7!52*iqnQIAHtW4v#EY=TUJPDIE{qAN=4 zTeF_Ao&CoGkW(bhJ}ghN-aZAQ#s9Bp9siEj(|@AnOt8?N$X;sQWmR05(I5jkARQ!U z`TNa)ck-l+Zta2@3&T85;3&CBip?7r6Li;Vs*%Cz11;F^sj>HbY#f;DyyvS5cQu5` zd+uF{Wm{a_+E0h4mW;lb;@IK-2xJmbBUJ#QU#%zG$BfR#pnEcPO260mxP{3C!dvQ? zb~By@gqG6~a$ZQZZq@MLqV_&JT$~?7oq23MgPreW$;KXTFYbToxIqSd-E$ET z{bw^+75RmU){EsyNJ+4XlAYJNT4Vgm=qx+h~sK;9N7Vs++=Nloipt_F zC5E$&T0?4@81r~chYikGIw1)pFXuZ?R_@n}^M(GNpqg6rU47S4ULkmV;aaKs2Wr$X z)R;0rzsQ}I=a7_|x+CBUB=#T=a-M4dt=!AD<|@!H<#<$T+s}nXB&T%=ko`*L0#pF< zJkP7uoc#8`jMw83n0%}TK8fG=EWC{7OmTjBvIj@SO8f5VN&4(Mns}T zw?*~Jx%VoRfx`{tzpU0rxB}fof`W^8~!?t$RJ-r6chK{p-{^0^TL9U z_d;q?pD{zS*Qk%;)h)j-Q0-}7(UqlZFf&3Z34u=`htJqn7aPZGFjq^+!s9TCMTZdm&3$lRl^WhPp8`w(E3Vuk+1YT^2D;KZD z_THxo(9M4yJBItb+}hrr2bN=?nA~-_U~m$^_71jJ@qCL3X-qi9=>O{Cm;5b1!WzIG zhN8b9#68~dSmsB)g5bwXCc9FfOGL8yk&o}{c(*MqD@)){HJ)LEqpO}0zI2||n`QUI z$0G)8I6Z=1sovdxHerfGa1;bg)0WHit2ka;b1f~Yr7|ZQ4|4i#4_ATp`L2zx`rC(s z5YQWt;pMA*`16Exeynu$jS7Rn_dtnFL{HSpunot}131!WCTJRJJ-HUbr zidm@Rr~a7gn@y&81i=v(LD*!zit{~OCJONO4T$s?CP8@626TqfvrYKkwDDmF_pH!F z>*~9&{S}AJz4I@zhCHfpk3XfwQ~vr{);RXSGRLPwDo1auISS%;*Qn80xNXou z)V>3Mss=l>oT)+4$MEI>JJ>zip#ukdz(^1r0=U@e2eVnICbtO#DjT$bKmf=v&Fup7 zL};EP-D*&j>?Y?g+{=Z~e_uPK=t(tV@n>a0OwOzx_V+j1bjs`JD2!DY!<%EXuEvyc zq0p=#iY~UBB%SqDEObxct`ijw$tN?ksJAg1GU8kqW?;+BfRM-@V@ic!XD2VJ5FHcb zMj;_f-b!++J@mMi6)|@?Mv`7SC}a91O-QEub2PA89rbFZ2!w+~q<{2~-k1G`<(ZUa zT2Ui8cWsX6J4yW5xUWEwf!7plNM zGS&S#h76fyvo_vd#kjkExq6|Jr_kkiX{-a)Z;Q&T#X%6&mH$)3OA;SY;n<{mF zvfbhajRk#sWm4XzD@}WFc8t|fFoj}TxeIx2o#hU_Y8b3r@LB9|TbR^om!2M=)&Jqm zWGY%^-v21eDbSv%ykg4ka^-rIWWAW{D_MYHT`k^~1@LEKTn=PCs zrkAN_;jpZ8%OiVd*YBx-NrUk1Z!t71wLpmn>>UD=m4theqIL`45`V~P2zIyOZeU^O zzCgvNJK~cgw6{LaO>69BI_l2?q_X~8?JZzy2(|4R8qzzv&cYHeI^p#|U2OVQFj5|5 z#cD@HOij=6t2PGVNw>)H;lfyFSC1Sxo%id(*Cg?$7HGEg4(h=I-Qonu{Tl48t{rVS zL3$GKbdm=?ea!5CU|PA^$Y2Rnz+W4{*GjWZ5{RKKhb58$HAV;* zm(n3=hSFLphzbeXa`tU_#Y!h#*I4#8{;M&C`g^_EWsVa2ZaT(!xXwlSsgwb0kWpm! zqL;OO5Dr~7u!EW)x%cNhEeERgvB80X<{#rPO+k1CV)R$&)h%z=_Mz7)LsOS~MO+Px(FInQ~5y!4Yz0M_tfTG)2&H_MVBC2b3 z%KjXle`>1k2c$c(M24X#6@KYT^R5$*Lj{o4X35W)TZ^V&dP%d#k+y@_&QwXoHQaSo zXpWc7B*&qTx7Dbg4tVZF@?MUp&xV_G2U>@FEpw;o#dzxeIE8qIRd;lR# z;Vuk|-RpDRj&o&E87J*5I;sB2@AbShJRY$$Y$d`!MG>J79a1}nUd=qIqfMQTbiqRb zC9tZ7|BL0$n!~XNlh>%K^^`*X9HQI621&y=@*s@d)8aSH@>0J)eycsN?cy*vpJN~v z(yG}6oIk$&2*zzM-b$tWwF)mzqY;5f%0SMCC))l1LIdM2J*P`hCg{sg5w#y;?ULR% zbgf=gAAKKM)ad3$QY$?F@#kS5QvPjzPDx+>XX?$LV>v4kUo9`0Xoon2TnRD?tRRP1 zQs%C|{A8SIq>ohfQ|q*&>TiMj28|Nzmm2AujTxI~IXs88EBSC1+E|ZtBEDsVzOC?4 z5oW2~2j3mLZ`3q6x7JM|vf-W8B;Sf9H^+b$d~|q#Ur$@#02bn1A&HiiDOr~Xy&nE{rLNtDrB^Rg4{UuL+EPC>CkDzvYz_T)wC+j7+D1)f$I7ndgtAOqdL7 z`hNU0(foKH8$aI`4|mvqr^I}x5U~}G8HMv#MwVRRFo5O=Y3b*-Lk7FFMkiqBP;cM} zd41$_&z-<~eFU-K)WSO5wThhn6CyO}69><1ooRL!Gon9rtb0fxz?XzoUE(HL4!r}s ze%wOtbi-o4HMV8@!vR%z$Hb6bCvS4;=)G!q-ntbcyDf_949x=kU?iQ`(b8wdj?zQ* z-c;<}1A1BDL`W)$2PD+bh=ZAkuqV0oJvzo*u;KB~mM8i6qr3(cWfl=OD6ZKd^XPm` z(nti7Yql%5_kt_Z9mvTIj@kO24U7SV5iNI*v^`N+sju|mbzU=G4?G5L7?g8%ZXjgNY!rc@gZ?DoG9 zHA(-3M9VfFS5lq8youQ5X4IcoUeGEoq!%ZS77Cu@Q%T&tZRx+r7=m~pbK{%%=Mep= zA_WBSNf}-0sa)497h3_3sRFr2c55?M>v^kYeElf?{;8(`S+WC=TAa529T|sHd`Z*> zW+cD9?ZyJgrl@`CgnAHuN?P`p-(+}7EKqkgTo!;B2}OsZ|1l1*ulpum6O*T*&;_}K z{H(RjbV+tb=}#n`Ef(!60dT@Gm9|2)8{!pPzn5a{ozX`r`Re=f3VAYXLTjGJq-|5%C|~(*K=hB_#s9 z!@HvFUnyva8e^TPXZR1A>|$d7_rqHM|3;YJ@JKg5S;71N8uEX=}pfs78Ezvle^ zpJ5hYy_j}o*2DQm=Tp}pFKVZMA^C4e|BrtJQvRCTlcfL7CKD4mIi<2y zXt{G?G`WdVi|&(4g{ESRCOtBY6y z*XL=H3ecc+vW7AYhhF~6=q1`;(@TY5A~^cGZN^D^oo)lb(8H5;I18vqZf)PZQN*u@ z9B=2&flUa@7CE`>n@d5|Do3}9FHXdNKY;^uav(^(Eb?{*!4)P-6oA+rTs&J+7AB_o z*Az#=I15Z~QfmYtYugNnk>gWB z34W()ntsEMD=_1UIt2w>TA60d`~J{_Z+$1H^N_}I(?M1ctp_SRt>><&?F7$(P`N#07HjRcKT)0@IjTQ4&;6vx0Woe57sw2z-N zxy-*I8XWiwHxQ5{Dd~fztVqKtf>@wfpQh0~eyVC6n6&Bjq-i$HmKGW=bMGnUsgqN2 zlU}#M=0_MM#lPGF4m}rpcGN)=ZNvHl<))@ZVA`|=KQ?aoU&Sf*_IhmxL?!q&|H<$h+u?S!QRI-Cg@rF!Ih6pc>biFQ4zgY9eH_E|^?ljr-ZpYs3 zYl@@Gnmakhb61k9x^9`@--nVf0teB5d*ySn8kA0EBg~v|S_AG&0pBH=%0*6}a^aip zJBJUpOVZ6I(a$Q6CeR*fnX}YV$y_HOpd*>`qZ7-DbpB0@{a!y$qW_Lh->N{0x!mi( z2`hj;7gOx>r|HuFxV|R%S`c+U^B{c%mGHAGRG;%A&Uxz2iiys@>8Ic0bZY>fNzSl< zuP&oc`vQxv8JnW5E-d09FgxBL9%`4w$h0Q}%Z^wE$Xt4`CZupyYZ6*)A~2&2`}fXp zu^1$NEkX#Nl*uH z@P%vr{-)O?O@CMazq8Os&A%t@qh@NPD}A%+$L)*k67MBJWF}71m&!s*=Nr=2w39O( zE_#~m)pRjVBpm}|2-&|d6le;ZIftmu4>FV&S>if1Bu$}|^iRyasxzie4!11<{>mG= zojh6AT8&|_Zo!@{Ganw~$ZAaVFG5z?&z&O%fJu!Ybm2*B7WtXAq)FYv;;~N-dvmFV zn&jwG@jputSdM{Vz^ndRg%7EP>83qTj4$D(UJbC;5Px=d+DpMXQ+OqyUj?euMCB4< zQ18Hb#`8pYPg`*B>BCwoXzs=(!>I^UtAJwASx6#mg#7$(6bIF##|+@jB!zF1{3<;3T%;r*hKIRwOaum^#N|j8nX{H2nevbIgQ_Ng6hRkOq{bG<@Vb?I~MRi3!<>ysx2rN@+3mFd4fS{?g+!f zS+x=y&C)`_%6SAm(`0@tts;RAfesL-GfM!XYvDP9I9@*o7YQzzcp%0lTB1Q??_8{V zh=taUyPDx}J-V2WT@l66g1NWS=nDlzOdf{8xt`zSu+@^k}tw%_t}z^Pj>uT0B6VB?fB?&)-&7U@7rtw;H!kRd-s{} zZD`x;x)mnt>3>4f z_15pF4P0X!sIazxp3zOupeM3Kwu@g|pU&^P!K%DE$cKw(jVryB50)48JbvuW#yhSv zFpn^iR84EFEWzz~_v(25N$>8-KnC7RSS6L1ttONtI?3Ap}a^xBGHS}bBbrUeuO0$M#9n&KANjDzDf&BF??@l znf)|r?1%3(wI62Qkb!Durd8@?b_hjBHaG9QcAW`&jL#hNGZTVqoiSSt#G<+|fYN*M z^XjR)K5}0tq)8}s(J7kQyzGanFA}jhkP1T@F;j%=ydK|ljg-)tOdC0^Zg90WHcs`) zcYi4EJ)zF{05mZ85^~&^bkA-MAiXraB!S-4^D6<`GM3R?O0iiE+`ImpH6`XDSBz2z z7c5==sW7NhE(-v+q4ECi_S{Ng zm&!yNNn!`lD+Wt&#>t3$VSx%U@?6{)g;2Qa_!#7fQg;BCW2tX|_}?mh2uQ<7`77{+ zhoformuVDw`=hmYx1;X34s8uu)(*Icug~2X@UwGo`EFQcw07D5krm6@n~+`@t6K%) z&ZMz_Vr1rAcD0ZqGcjSW5jx_SE_7+?;*`xhPVjtQ)89r3gxohPjeJg&Lif`t!#pKCDpMfo zh~rvT>TF_y-Er5>*JIC>(T?QRHT#YemMgC1UW`MxQc2K~5M_4X@G>jkmA=);c*kmq zZF-#V!v3jCG7nGxFk652HeFz6b&T$ixe`Fzf_Y~ng!;keTpjUn&HV#qdqf%|9N&aj zzN*fi3nC$(!M&A4a%sKtEoCBcKEx=osM0RKhA4Y$)%;UQdsPrD{}95H%y@~!6L@$B#ytkj*!@uN449@#Ly zv3+ygjnFqYtF0W0;Wjv8cV;2pC#?-zaL=`p%f8o%i$86TtnUK_Is|+})DgxEf=$ikEWPr>a;v z%uMZ-RztmTEv1Xb-KcIn^C-&L{(@`2DK503(Ap}QGFqTI|cqoa-~b~G?bQBj;>JI}T&gxd`(OBSRN*q_*G z-gM&8V_?JjyKy>WybR~^b#?oDNt~Oe_&X_y3 ziVvo(gauB!D3IhVM>iEt{2YW8mazr#$7+2-SGQhw)eIHzlsN zn#h=_r{OjV^TCtpY->6B?39`s(H)lGz+0|%eoe3$)9U1re_}ZF{EP6Y*?GPv2(`6s z5R;157=s0=%G&pZA1iLF(|8!y04-u!lJ9P~MchI(FP)2h`^Ijhd=+)PWfYq1sL#PN zT#11+xA2VycLCF}pdf|QE}l^Z434vr@QHytHH=B- z2<=2Iy9k(LRu{__@!g6NzVnAi!gAhTPU`G5SZ#x|+g7m^CJso`US(r?+TURwXMM)R zlc)aXaqMbY$2X1hwGT1J+_zgB+uF95T}wSROmv%4D;l?G-iYr?97ec%oXig?G6P-c zOL%LS(S)hx$};8CvU36HXVTuM(W86KeKtyZ^3IF+CJ!+7GmyGCP|7?B6G_C|{JzBb z!#Qdy-B;Rd`5ru@M)t(j56{pp$HNWp$`a{LTFxSM?CTut)e_X&gc>FyT^pC^GZe8J zJWs#xO5~<_GP*P+mrT``3-#CNsLE<{u;hTZEmn3iCKJq+-@|q(cy4q{Ih`93?!YOP0rR(&0rtxQKeWU_Nr!M~n zN0x)H)`ai+9@@oo(M_lD9n9jUWM(Vb*yT}MO{)-^fOOvjtHXZO87q}HN>~=^n6D0- zq~MPkH_&PQ;RzP*!`(nakCTvO?$!{{Xq`RsSbObyf1PosH5a)-lkiiW2xz6)vJ7f~ zO6Wnx3)l9lc^4fp-&NX~vV})AS%+iRo58(Fhu4R5M?cJkg?3qaH%zLJr-Aa0o#}53 zL`Ksc(vcw|S>KxYgEl|& z*H&K5%$P==K?jv8H&I0LNW1mO8VNcF72zd*#!t=OWK}A2#*C?jPtHhsj(_+2m zeV({lB)wL}yEPDUFXz-If+umIel4Y32npvX-=BQjF|pmATBcr^e~@j2bHIZ2;iiR^ z6PL8r583qmQFTic&gnc8Krlc$wNf+J%ra!Rekb{6V7R7`=R>x z^GJV~A&vcIqUPE&`YR82*V0c7xJB7PoHlrD);DHskK2ff6H_b2Y)2f<^4nA=x5uk8 zO;V0Osn$TeZB7* zPUZEcxSl)>6F{71saW>!qlC+Fi}sZAu>I0_UJ4I|Oe-iQg@4{-ZG5d@&`+@XUDvo( zmFwhM-KSWkO&01$sk6pN3(*y;O3x0fV@PutQ$_dE(J1Z1*nItCx1ZwXGHfrZEIHC+ z$`lQPB*SB5!0MqMqxOK!4#Q>#9U7Vi#(4-TUa8UQciKsJE7mvV13KHnjs#Q~O!&Hz zqu=c|eRTX%cyu&EmYicgQ+b1+{$C88PehI|eLJp0jiBvvDB|_un)qcp? z4-!vOp*3&v8Ay=KLkZ!vctE&uG+@O~@+#$>x%h(9^zB}Ll2ACaBh;O{7wFn`OWs25 zy^r?z<0Ws`ch@-c>`Qs}v2yz55^y-5w&OD^%wAU#%Y5~W$Vki7+lb`?y;V&8y%Cee zUQ28EP^VwaQBF2@Jz}Wlh+AL$T0a6*G%JyE*4jMZUjcdS1(c?eSPK zgMUmk_j*E47^IvXq><|Xit~(%>cCA@c9IEai28B)+ib<|nZ2ghauQrOibdUdZueAZ zSzASy_v(&b_u7B8=5si{NY&KK;c(Ycn#n$$=F_M@>h^Bwv%3<2e(q8}e<&yPDd7!IEvJbs$7kv|CaeQ{}uyWqRLBkB}_y=U3_ zpy$iq^Hi<{Rc-M?J(!P=O&aV=h*6WXD z5S-_?qv~(!JgmKM+N8jecXTB2bM4dF zglU8xiPhBI!(e&KzMV_Uh!-r>!vW)Tl1LAIx@Sxk!g3UTGDsc zCK(2Cp?WYlag=^+Pw0%H>0TKbeF92j6COm|AsHz1CwalU6`W>d;6v!F{8oF9Fxpz) zo^L(4fWq;*Zuf43romf}-aLshp$EH1O&HgR?djPlqqy5fb83Zz>d&nU=8c6_aSpzi zM}JVl8l{Y_A0D+Ww$42wAQ4fc->Xb-z_!mC75SxwlI6ez-K)P4WT!y?Xsh-};VseFbR6HCNX6 zrIk*FM}%F69|wrGOA>PYcyG8^WALlz^U*_LN%o8vNrM`*BWqz3YgPlqB zWW(cFvYeuPgJ4308UmYxspNV~FqE&cM4Smq`a<5z~ z%PEM@K$d0DhuqnMu;`B2>dEKN(@f}3W#d!<4(W2JARq zJ!ay&VWRV6*e-7I;NVw3ha94mzI+3vgnkN4E%yn@KTR3EBL9sug#c4gKVQ~v#_7a* z3L-`~b;-zo*vL!U&wFLE%VPpaP*AaSQti0TpY6WT1Qa5VRuEnGlSrdn$^Zu(q3-lj z1J=ctd1=QDuhgIuK5#_~10vPcvglZ9drefLO)pCAr)c@;)u0Css?mpa*~n|<$5PWX zUhL;zEeRk4R`Pq~D(<@tM(Jdu@hb=?cxvOG!)<7y4;0m)Ff!yaN-pd;-?n!;y|@Os zjz1L^eIIVF4z2$e%}o#;sNht5mmVIOGx2P{GbYOMu4;-F9Pc1O(N&}5$39J>6E6=P zP9jWY8y*l9drxRdGC&ih|I!SvxSRS}%#Ke}9#u$p!RV7=NB?~{9+6KaW;Xqs@8^Bi zN?XesT>Ha#C+BTSQ>&{hS_j}NM;vVoxhTpH!sj9{s&yX*?fke)_fw}jdM0|{F}fw$p%L5uex@}61L67kmu-t zn8_wPD=C#?SuqiX7kfcFUlwINLzc&?yX`-8MR(3* z%*OV_A&4U0h1KrOR@!U|qZ`)tk)hwo@TYQsvr@bx>`|0>mHjyh@nr?FS-uI)zj>ImwknRvK+|P zS;+@<WX@c3FYPk?W?jZVl9PhPKtf1_O?$PArbS>J8U#6lHm&{S8nnE z$+)zN!gndLwb(DsE4k?NrTOy1&ge|DzVJduE01s9PEG>#u%Kxa7yeX`I!aZh+Dv!r zsFi8*ZCA~K!&$*+QFO<=0 zQL#`N$6k*kk(+zI@=hxxHQYlrm&#sYwjG0*a_q`_aW}|HP7Bj-?iZa|pzfTl99(DH z0K?nJDg*Mn;$emU6M~B524__~LlS&VsVOp9cj+fH)44*%vmu12L`0`ivEIY1EO@b6 zSK;GVv)D10&#GL|RASFj8X?YfLNG&4s@2hEaL`o6ZCES#{zld)J}%NE8)_VrnUb+04ibJW)xpK#Nn5ua;JjmvVspmzAgHVBm1q3jDy4CSd+Cs*!w)wqFkMHFC0p*Txj3o-hOaHHybxVcO0$}s9O(UOkC6`l(bFBW zmB{+L96OCs)q;C#-7YP!wn3ba5bS%ZeU&SPg(DOQ4K39i+P!~TWF`l6%4OG;_KU?$ z2#eMzlBw`b79&>bp-)xst1*-3v#>Hzy2qGU)fL6+L=>v~YWeUg(<~d|Xh&oqK~fnF z+Ic4g6~P!yhuqPp*AmEDJ4P1ZS>iVacOD&IFh>?M<=Q&UgmDz5QFM>9{H{G_2z99G z>=5@Y`oZ#JIvM~8UY7wE;mHoR#coBELIZNBo+_hFUWG9^oWTRfz>ZF7=L62|fO6vM z*_1s&cZB*fBQDpxnHb2c-Kr1(guCzB}E zm}E@IeOO-~TR=P7_~gi|reT*uW&48EUih(xKSf2~0#P=QcXG9_xjj81!5o>4!qXf6 z2JA47rzZg4`60Bnis=UrNMlYofPv)OG*k7Xu`+>`^%=y0@f`)V4yaDlm7927P>+V% zlghHr(w9noo#t?)y=aNgS&>m8&6V-l5sqVNK4k(3q39J)mCJK`>Vw}YlSgPAmD<}8|VWsD2g(-oz{nNT+34c4h55GiK!(l>o^9pTjYQzs#)5jbKLN&}nvcQ-dM7w9fK zM&H6Wv3B{!PExGSq+P2azE&H3zQJ;F^CR_2z&2CW=g+RS%{i_I)4djR8IQL5S(t97 z!xp%=5-HB~krg`(TalMy-gl)#4^>*kg~6q;tZFan#J;mGs^B2pB4nz2T#N2t*Dv8 zszgF$Jnbh0rKvsO$Uohtt4r7z^|wC?e4ceqCWWDT@oZK)P37ydp9Yt5-@6vT5__VL zTyXR6cZe$8*;_aGjA*AZP#(z02RkBCzK@5=B~QBQ4>CPwDcnc7;Z)+`7HtL61iGE) zj2c*r_*ATl3}HVpp@A05N+oI*rFVk_Da}bM7OW3)EW^`V!zW*()H&>9oCVqz@%QWo z=8!!1u(xlRWX|_d1;ikqg?@V+pa#zTs4MX4Qp?*VOhk~4OlsC`Nd&i;8f`VS6ecyt z4yNO^*Lbz~1*$(Pbe;&Ahb_WCPf%U0&acWBvyiu6S6b^jnpap;Z{0JW&MMTzlCL?X zX5Qw%Sok64-`aRbat}gdO%Ds!J$}3~vOZrQ+AUWa8H|u=%Ip-1gl+Qw)nY;m2mxA1 z=6xb`C#@JDY9QG^}J?(j% z?D}))xwyS8cE`L?%j_pP-rC+B56MM9=f!>-6I?&x)1)O1+*cZTV0?r}TGl96ZI0vb z)PX%9yUJMyDTv!9_g@%OU$t_$I=8M*1IR zc5uc0HaVVVU=^cl(vTw954}#tydf;sQiKVsH{3FCOg@gwcr1MiX}wU}AMdT%9bfeJ z1T~gYy>W}_()7wCY0#}3Me^Um?)_u(jsRY7Tyvak{}(TW4L1yROVTk_^21~YRY2-% zKIH8^XKPQh2DIuoAT1jb^wBwn+vT4y`4AN8M@`^hE~C@Wzw(3fjL@1{Y7V0urDtd7 z3^+q?Zfuh`3VJfmy7{VV{mjZ#OV(*2H_;~FwC7Jdpg1pYmAhtsKhGnE!trnY)$gqD zb0PFl(wd84V=ASU;1EII0AdZa4%J-pV^IdzE=1k2Q+CL{?LdQK)1qxwQ1Yhb#Lwqo z>o@gIf&@#NMO5ZNvp*UL%xj$+lF$CSw)ba8K?7Pypr4*f45(VJp2-DjY&=2<2)x5B zy0VM(+aH`4KJSuk%Q{2xH`7)?wKJJp*1?*XIqXv`Ar8=2NA9&9jPOHxfUf;%9Tx-= zr``Cn^N7~}AHe=Xz|P+ilZlYHz}IvDI_l}3n2WJ}<`iKJyX#v^G@DC{~&x|!d7^KDdJ)`|>HoW-bx!FTmcB_96B=ARR_)FIDHV5*yHvOP9 z86d6qGn>N>7^6u@`rf=7XJilg#CLQRYI~tmi4?cyd4XXU`|FzFUsU%Hsk<&nW=mdQ zyyB6FL+(cTCUfOh!ph5f+J+UsmZ?B~AQDv_z|>PQ%$l(ym!&5KuqG*(Ju&g6-3#SJ zP^Z`$caxa;eR0`ZYX5)BsR9CPEk9P{7LC}5=gCuf%}SRneYXwzLEB(^3XFSkkF@Hd z8%-tdt1)+zV>1C5_YG!&PMp-^V%#5SaR>W$ar67X1ULUBDlX$c6Daqb1Pi!?So^y~FSnobA~nO_-9S#OG$ z>4&EO5SPI!UMP7=Xe;YEzW-arwZwr(%?^t9T3Ern-v5HTv2_?5f!Jkir&W|Nk(Lo7 zWD)2d1@teB?@IR-)XlC$6K_XNFl*9nAM?xX%V!Oq2n-t+#}&n%{_kv-pj< zlSLfftFMo6H|Q%%Kjzs8oyAn%#e>Ddn65yGd4i30eFEfKJ>BkS{`-XB#8C>d6QIi5(!o3nG`u-WvQA z!ptRX-KlCE!UWNqpZBb@YW% zZdt$+!_%sq+`$&kbRJzJk60dqigq6(=x+a3z7sUB#3#2T-ZeKu8d)EIp($=-{s2__ zGEnKVJ{A^+)Iw*>I%X5|?eYY=PxxXxNx;PbNx%^=GusvRfk*`X( zf}Yf7(!h|;W&_%A`jwyVbB9hk{Zzu{csUGNeI+j}qF;?-{X?qcDuNl2Q$LG?;appu=^*3kyzZpu8qFiQ`(jAqxV(xSxOc+mm@5XC!K|R zBiuS3kc;Ev46QX2p?{1&HDW#>r4Z-_0|E5|Zc}FXPxq~_R!^Q5d^4;pSziTi2he&5 zI>7n1;4J)pp%kVjFX{Cv756a1G02LsmFS4bPF(@VePO&wCSSqrNt(+3jfQ*!q4ag{ zr_2XwOtWlV%)=!;GJ_TTZ@g;6_KalHf+KB=;H@-F=iSHK6wRKTYFBy}T<3Mh_`237 zZp%iyEpQ6^ABwLH3fZ`iNc+}rxiRaebC#-~t&{PE;<;Rq%Yl5tMKglKHOH5Rooy0* zP}~fV^|*1=foYicv&5~WN81m)?ctjHUm4~u?I$GddpWdXCMs_vCVzc%?`fKF{LwT& zq;364jk-kge0#7m5<7AJk~X9)ji9*2Z=>$CaqOPWxnpruteP&ItfM|Jwv3A-x`l$X zFIWe|5#4bFI(V>4Ylol<5FvYtN)ocX3@nayU~$9`%{E4N)l(1zU+f~>_bbK+E#r+i zJSV)Z&yH#-{8=Akw437jjFMP%ZD{xmhak|k5tXw&^Qeoz2~gI8P92?(hMkxnjUZcD zXaR_tV3_Oa3P#cnccKehe&`MfR-JqrbWL|c_5O+G-jgHqtQU#8QapvrLwWl~6m9c5 zQvC5D@T?})WQI7q*rzVXJ~{S3U=T*#7D#X5ky95cq&atuoaN!k*+J7<36~Rgeru!P zO^%%SPrAiJLNW5PpDgfA;){#EbX)`_b`~#~8Fn6&F6SYF3*Lv|ZI`;ISsL&6R=yHl zY+Yb(Kzz3MR%du4-p-b${d}+bUcN1{R@OTQ-2d+cFQ)kx=uQkCat+H{F8GV-fQioAu_ z(9Ou65aLmz(c_ZyYw$^Ra993bQ~lIo-dyo{;=K3q{?<^&osuK*Q~jE(CWIHCkE(y+ zY7h2&Td=Z~@x0^6{d!kHe~D(guW#13G_#SWn4kZ|Y6KfaCq3o#SUEgKK^jq`EYi(i! zy9+XrJN&6po}c+&`?U)?*$2}n0CTitP4IrzTzIe%Q{~hSeeZ3*B#~<5+u^PLZUAA0 z;&lqyir>uxu1>ibM>+XAt41&A4x-E6Ov+YCq;@g*6UD{$K@z{b3`620os&cGhw?BQa!=rJ29+FG+ek&NI&Y}CEb-(KwM z>g5GwM@a=t2F;_!Jew?ML4kZi&e(`8;HG9)Vf?^>x!J}EoA(KYK6C1zFYM_6-Rx0P zJlpd5#&@399>w09mgkR{Q4fzTBN0pew09;S?PoR7SUP;mAnm0{gl3{rs=$6TE{8F0 zs>d?$)g-T^{f>h^mH7U5@iz50um(E*k~-ek*(Woa&a|Ab*gqIPNbraa4Xka_YFltd zbchU=9ya(glxltXY16S^2PswW^33e8G9aBy@>WegbyXRlzcczR1l6IpB`WnxG=DDi zwxgk4{MnDykLjF=LBR#R!-&ol>Mu6uH(@@q0$IedKfBX%gzn{JC8&Je#wk5{`7=A; zN?P69$}ge>Dx0u80~1Z|QcH(coamNyeS;U>^E1xkO;*ps4*3dUHC;3vcxHx+kJ=Nq z;pftj1ZYNMfQ8hvNtQZuV#5IzU5Pc8@*6o%nFv{77gWZJ3Bq@9ptt<-4yUT zv-Mul&}WX_*U)I`Z=uDMZ z+AefNkM5ovZsuuLca$9if9}ZZt7U@!L8+97164?Q;fwR3rfYdt25v03WQgMzvqXF8 z*HW%;s;pz{kVW9gZFT0};M3y>k!x%2nC8=zIGcs8*_okg@V4ig=GI~gyOC~;gGgJm zgJ7GoIO%Att94W3X5>@!!f$ATf)tS^ zO+-MX89LGw1q*E>N^cVBgcf=Upwc0T^sXXBsiB0PAT3fu5dwr>66w9S7u@^Yd(QXn z9q)~A37dSz6-E#6qt@%MwS3H%y|zb$72^z!DiNBForPZL_W<5eI|bk9_J|I|7;RFIsk1 zN7N>V=OWiPIBDF2gLg|i!?>X-NN7N|GS?-HxsdTx=a&D$=Y~3D+4h*gRBxBxafgGI z`!9`SgkxjLQ{&cZv$Ve25EUtpcU9DfojwxHSEy@i( z$y-;uYMzhm^7oj~^O1LOb{ju9nK3qAFq%8EO9Cgp{;C6&84O^J^c&p??eXXWf_s;v z+ALmPIk)mpJyfr({poy+vi0(9I5_!SgA_iXxtCsz6P@bPMLT68%3ew2OiF<~CsfBa zd`$V*5mOtKXMgPY!#6k6!xpw9%fUO_d{})OXxzPc)AgQ1BVQ3(lQ1&7E|=sa8;ro0 zy?IE@gVWJ*k(XxnPo&p7PZy3qM-yvUmBjL4Q@aWU8b%Il-v}d{o_UBQO?|Xlq1iwp z2%tP8z-pWLr-tx2GBJb*NDvOU4!^h>ziYl&7AvC_3m1jqW=n`(cvQX;lvtlRzeudu zs<9LG4h#AGX8O$a@OMt^0Jg;A?0`)nu-NgqS{U?k;O^6q{ecngN;pGIq}SMh1HMExkZe%58_RJoj^ z5Lnb>ZF0raME=@T`rfjq|5rKc<6hY7=tbdDL+EAY*tAueo#f`yt4kiUoRNa)+08bY zgG(22oTH%Nl^YJdxt(ny=>n|V5pO0L>a=XIRuwSYvAos(?VEumti>S7blwoh9s(Nb z(tHf`U&Z6j#H0X=oaLGk8>Vxs_aaN#n$V85n#I<+=1(@m6kbmKw(*qcihCC;aOnj>#VSp@0L2)1 z$NlRZU_b=ia_+#8(sf%r*p;E<|A0 zmj6kKqw$OA%Td|B*k>rSc8^2u*sdcBlcjt^R9CT35;AqJ=j*Fg>fG4lAJuXzypV_e zJEqrS$DQj=4Wpw|ynzzEOq+L?dP~jK>SA+T1-DWWh6|StfP#^}SxZmU-l6MKM>axDdq2d%OG62+#aGd7A| zmxtu;-`yQ!E<$PeO!{N?AN?|OFzdf#4x|%Wpw3zG&jPjbztO$8NpMKWO8Uo|Z&1_h zaFG!$Jb8s0=|&|*`WtkP`kS=VfiJF3x+Zhnio$@oPl@gtQaVvM@^^EI(53p?u6yqgZI!ab@jD(;nCJF1w+O}*fI zp1<*E`xn#+h3~ZnVGLD%9?A7&BX=;H)j}D@t9>fvy%kOhg@uO7Ba4hbWS!MpS?aVN z{YK!}I&8j{F6`lU(-#a@d%)rY1a#=528hqJgsXE>FfkIRtF8E|y}f-4+Z;l@5Y7wx zNin%NnBTRKY@T&-URT)eKJhO#{S6Q6AR=5IRI?hO>TBkngR9}x-W_`fR%k$T zu@rZ{?Y)E9)Mz?!BFvvWVd>iI)<=j)jY=i$G6|VUxh@aw64pWWEA>=tQ0>8@WK-wk zO?ao&vc?uWv~%lwxkljiXf`_$Y$$79l2%2%zf|0k0+s-xm{iONIlL`h2hL71G}`Y8P zn{*@@DC?jHH||LW^cHn7H5-?)kkp*f3Aj&9b1GZWyyO8Cicw7+Pwoo`>qj&Q=@mUS zTVnf>_rQPXl|Ha`5#FJ>q0S}UEJ!@JkQkd#Pvo|leTbmW_WdkeTlk#6oR7FIu(DfL zTyx!~kgU)U(7d&m7WFKzv6!orc!IYE0kwb*mwoK~+_Vi>#kbY zkGpMqQ=ICLlyqG&YtcAQ+0?a4BakAux9!!Fv7Dz;d-5r7$5iMW*uTF2%KvC>p}X6MR@ioi%PwSnY=zY z=th(7RV-Bigv+7Zjm zg4(&z6zf$bFy4EdE>fpjWcckT-W?-kB-J}TC=+FV^yBN2Fhi^R)V7}7;y4Ca>?m`g z$>6X;l9o^8XN$U&(iTz|%Zh&FgxFWZ$F>F%X@Lc znWIi(nREFK>r8uw9_*_-1_kU>&DMnqTkbPxsRJ(jg+KKZBaNg8`3-E}EILffvD*Pr z$6vVYnS^OrQ(NxcO1GOpgb_H~$Az-ha}l+RT|JQ5h0(n?+w}Qb@-cHcZ`SC$Y@+c>-QTG@ey*&$hgXn`MdOk1Q(s!&VrfaAabd#Kfd~i1T zYYdR;VpsTpWdW+9DlTa3JHXNWX1r>&zkt1t^@M5NcW@}Hk?{M14sC?Quw5Wef<1iH z&O8a}qdY?D;+DSTxc~IlfV9w-eSM6--touFX8rAZt5=UnUbCW_f-nyfNz2m8F4zoi z6CT)(fc=T&s2|J2#qsP;H4l-y#m?|)^p}5yS&6Iwyro5>Dz=kFGP-Tv=~sI7Amc|r zhtFT!l)&hRlo@cbou$oW1LLX6rOH)qnEtHuT0LQ!bUJK$xNpe>QHP&fO;(qHR z4N@v1%_-YUUr{$5S^5$ol?2iazGRbTOXaA7e*zzU`7{Nl_k1bCk-f(9ApQret7&)A zqk4SzX{ZI#NG=#s|MgrK|FG!0s91lWZA~l_y4ln7c)HPfJ&|br?6glr9)DMn?aty% zk4lQk;*%G3i1!>~xVBwR!!V?1eI>(4mXj?mRNkmcdtz&6bHwkflJ?iGE-;2pRX&mv zQ+%b#4yoc&?J1}Krj!tt!Y!wC&ypV~*4|Q%d;qZiB5lhkHAeP_p-7CdC59=&;Gl}4;Sym#ZRljgdUCdD<0VnZz+w;L+Xjx5fiFPZIn+#s%! z+WGGXZ-MXj6(zbhl1Xb5@**PcdmeXt+6GqQDRWG^(4iLTB4_j9UnZ~)rFouT!>$gKfjKV8He{ie6buMk0mbJw`NIZzTGnTWdLWOtw zj{@(Dnd-Yn4EY%S?wTZqcyY{TG&6m5nJ%|9mN*-E#Vx5mLhG8gJ=niiKkga7q+2G{ z`qSujm>`Xxr#ER?W6hTV<6R@*hN@x3iGuk%PeXYZ%^x_Xm)p|$()b03^l0DCEb7QL zH92d)EmRfeqpxPRJkrlksNUGak$5!&5Ib11BK%hz|36+fl}QlgN=3!U4~TvI zUR%Gcdqw1NyUNWS^3Db@&%^%fJ{6hqwX91S5^d`01vIz}WoKEj(lQ)R~aaQF|x$5RW=imA&l(&)&H!v z|M6Y_Moaj_)E}V`o_Md1ooK`Ue?H_aw|tP_qt=HSytKqmDgHCm&<-N%?f-bNe|t&9 z^IYUtTm-3YRo!pVS@O~BT)L3WN@#%PljFtzm-_wNxc}fGXs0LXUFiqI$%y;6(4V2c zcKi1b;lKU=zn{E?7+@#DrsauIOe2QOpYIGVlQsUhkWKyT?2&%xQPX3Id*Ct2ROLXV zuvvpal9;(D@t`yPZ?Us6%LhGzzs6O1fWJ&YUkLKQFd6>^ZTZA~u`9JIdjj@D!{4Q- zaS*pEBO)6hr9)p?16jtPMVT0UaX?NIHN6{~;g)`KCbT>s7&mvLzpXx=e3}Cthbu znN7l5bW^vKfdcryr;z7TNzH8Jd}>oSkkSkG%<+OI_-DA${M(#WYXjZt$5$`F4MbHOY>)w7Rv zBr}XL6zcwOU%xO^f;2qV}}S8Kr&@CI6Vxe{AiiV;V``lcmc0T8g&;+DUBr zSz=L1#UHDdxjty7OD~jCwztoh;7SrHY`Da91w8bwKLo551sXHB|9qrDoWu(gJ%0Ku zJnOFw*!pV=?>`{slXY$7Yu7!`r?i!CqdCQO&vwmAl9QFIpKHm!Nm@BtG5t}w``$bN zMsYS{JS~9#CyD!JYZH-MdWSefj>-y1-)_Cbi^A29yE&P~VY0L4|HP50BtEH5SWi}o z`8@z+30H{Kn5`MwLk!H zPRvXbsE3}P>VB)K-)W+@T1{rbtE^LIkKW1GRMHaVlGD`6^p93J5}U$c?E10(>j$Lg zJ*b3zd#TZiZ-*f}F@E+h{PvT}9X+>wmJtqvS&r~psrscP)2iav&N0MJ0e|-hSWQZ< z^oVtItj-Xf*Pd;($=OK^R6n%JS@||J-)NKUQ3iJ6?3zzrAO1RgH4xE{77!g?IIUP2 z-T$grSVxywtgMOUkT0J9<{d3EBzCt%V(zcY5j}^6mh${xR++G)iX^g(fm4&BQS!IK zi<3=>`D{0qi)-!cj`gD^cc=V%_68u6aMMEtA*TJVHP7CZkw)lSa+Ph$%XW@mR2p&Z zH_@62HhaM{zL zO4QdoEe{k)3?izPPiH;c#^yl_Z{u{W`X53Tl$EOFSbUNLSLMs`UHbgl=Ua4iKN)oM zyU^K_3E47j=DS{KiWKSA&-UaN`nJzP%Js+>Ly=2Na4Gnl;^9J1g_URN$V-(^zZ(Dw zI?X9Uy`CyAZp$vUr3Jn8+Tfkd(15$GF&$pN{l9@0P6wq(WH&*>&fC(J&5lAoD*i8D zX%(z|kKK(gepTIgv{fen$iJoLr}8w@#|n`${*+2cLab0&lmCWv!eDBU9mjO$#>_9)lYY_9!P@iWk6ph|# z@Dc4Mx&sdl(qrfv-LWy1SMe$L??z=$4sF)I{j=wd#S#;swC|fS7x%VK#dvj8LGq-k z50saQnPN!`-1Vw>{TfE%43=F}hAE$U|3Ro(6tJO0c zdP27lOw8XQz%nwZnvYa^jxDr4MF_ca-oA9>auaueweHy*vj?@U?ypAt^7ec!rnoy+ z@biJ!xx4n+s0NOSM3zPTyZKj9KCap?&!0AZ?`+pfns^_R^kIxwIx!;A%8PMTMAtLT z`pe^6`WdT_&3~(LHg3LqYcKoE@J_{}ItfyjAQG>l=SL5Ox)C1*EHEqIJ1-}iZo)sU z-z~}E1-)<{3kQsUmh)izqHPOo;KtV?>HCYs$Skd~kBfH86MXa7~(`8j?oM4($-&Fs2^XLt>guuSDv=H>9)F!;i?Yw44nM}EPB>vFsTrvENw^jiqe?KLFK^A$IOtP}=Ve~-+1d^rNlXM!N)IvO%G;(! zRD8?)yO27Yg9lL?Ay0KH1>k(fPh&?HFd`Kvu&dDfQev3a+!uC!c3jyAc!RbI;+WLs zTK)&Ia@Ol_9he7igBeQS=lpe6PWo0zt0sHf%^&w}GX^haiP~S>U95n!U#aw1+F5!w zn70|R&;`SuAU{;{2||*KViP!-iv|r+T(2DQ?SsOjq+wQb&pxPcX8`j?_pFrQtas{6an$J)b9GeEnmlc)bXq5T`^}zwzjp;Ubwbjma0Zc&rLQ5-s-6Cmv3& z-`~TGk)H4Z+@ob`>Gi$aj2C(Pzd0}6xYFc7EKc2Adt!cSCO*t5x9f7audU3%6qr6r zlCkzy0y$la!S}FC>+(DoF}q!D*c*$ZK6LW&lRhL(5~9LqGwM{7@j>MYl^Ov`9nPZC z=_+=XHadCdG#y_|eP633%gf^g^JDYZjow#*e^NN;r}Uh@{H2?qZ0v}e!|-aJ*theS z3NSXfANNQ;e_W`GVi#Jk?e^geS&g96m{DX|%8*o}NsBG*dAWppdPpl#5`YLiwIN7b zrR(a4uZ~uj%1;nBv2lJ{ZF zYUw~3Q=Jm@zGJoX0i3$(ywOHREh}ziKR!l8fo#MnHWGYe-O@yGtYoDNRCJurrTnhm zrK=)-k`x*KO)l^2Y3@ex?&wU{s@S5pPJ(fzkcjqv@;Ke7cTOzM(`qjDl}!doSMO*A zUuny>seP2!B=H^KGZv5}HzD)R2EO=5N;m@`UIdCcA!aylid+^TO~I7m4mTZ{aa zO)QDsM>gs=guK>$*}?2GsA|9O)3DfFmT7)j2v!y+{IcGsMP+CXV}qSdR_^E9!h%98uMHab`LqF zh~)ew@hz$7Ku%OuhKxh};MA-1D}gN4R(l~!-e z_4iYEB*qEfcca=q{qS}lha5SLx|Bc686Z zz7l}{;X@lf(1a>4WGNCwMA&Q4!djRwjoRai3*NyMVY)v9*Y=R)#*W{65}~sRW+exsKXC zSyJY87X9lhv~ubBl8^REjU?{|JBsccrpO9 z#Mn9M=5c`Ro7Fm6lR&!0_CP*JBpX{fd{dgtm@q?0`CA?qKVGREvBguj>7pmbm^dtP zb6VTU$ZC%4Anr%q(k)sAB6-}7{41XCm$U}_0_0m?Xxc}b7Mh0~d8f%dbBLCB<{ypO zU8RvISgkg^5*=U!pxvqRZZwp`O9@4oi?BIRqihyAl)a z^!gf}?|6=;pIiJew8f|jo_p)=N|zUs5u#GQx{5$;--Mf7UET$8GRa;eX`#QS7G*kt z`0H~BQqO-$f}!dO)_G$N-7O}j4cc5f=Fzq}>g$}lXRw~ZdyAq=df64nOdlJ05VmSt zODE@<03XtfAH%m#ZMyz4_pnSF!6$%5(|0N6D6e)(E0$c(7%t@fORXK+kG7wUZPVfq zu9qcDK z00`)KVm&eIbBtVbp4kc1Gc`cyx%MxYEju9J2W1A5=#cG~m9Fo#oo7s|DB6C^}dm z00%a_D~_Z82uY%DQmcJ7!Ehe3@_dZm@)eG2)A&=-<2OL^0=E@aN09|%EMliZ#B6A$ zqp(Fp`}k&nm_QlD*qmFTKjBcZ$L7lK`@Npouu9-h|DgH@<1ZCGS1h4V!NLdb+e~Ly z+Lc~-Rict3VhK;I9(A8JD=BNXme$3xnJm}5pL*nBW5qt__7OXC3t!RaYTic!v_i;i zc>VMO!Ww{bYo%r8ku^1^62FwrjjpY6^Egdxr7v{N%U{noI8I{-Qq&Q+`^C1u2;<0ZeZ6`jRD0VBA8+!j zb1h?rsyU~>ZqRoLXtO!D(|A+Dr@mWyWB>7CXCwZr=Pyua16PtJOSp3x9p!*k!wAiA zsf^tt&b(r28_ycA(WiqW${UN1qbmz=-SvnZVrqB$+ z0(ZtBl$e%Dr4t@^ae20}NFkrD5XiiFPS8zPzuctH;qECK{hL~5eKUd!`9tR3Js^$b z^`ICVz|_%Dl+|f6bH|W*wvFPle=qUgrTjcP22NoSpkUZXd*u?0{=;RCHrhPLxJlC# z=dwG_k!sH-Li?tnT3{NnyyGt~tz&s#{x(jPu9Ro+7w`XR@DsSY%X0K8(~hh3H|z?q;ads6^xtjc)o_>WH zCMk*xBSu(X1Altqljk#F>AqNaR6=6KN3`Uuv&fzFdYp%_%DT=}9S7yu+7VDt`Gcrj zRucBQ{9W@q(9fQ&OR&R1xZ-#+@9CX4@w#UH=nB{ID!C6z){i9Mu~>Fkl*p`Fi5yT( zSoyJc^g>UG#NmOCxE6d*iWk5lKT>}9g1<7=aV#)>*5E-x|LkLgx8uSPsfK4SW44Fc zDVI?YE$86kP<_Q6Cy|%wi+4|POc9-txr`D|Vgh8Iw)OPA4H#C^-??(s$HMG5^TQU> zp4MR@3C^kUL;OxTfQJvytbMHNj84u!SxjC$=J~zvyZYU$B$dcSaLa(c7|FwZBQShN z<)d%x>35l{WeDA0JCa?*`D*BRydO*bmD$#;;V}AAOfOZLW{*)mgPW;lPHP79i*BL) z^W;W_gM9XK1qTeQnAc5gyWym`+k1$;FQ#P}XnT0W#7*=ALV1TQuKUau1;OFQ2-fe- zGxd(Y6Lrz2`fIfV(k8Ck$xUBh(RKQSJCAfjk=jPR(cP+-2jFFX@X)d40t#%^P7t>{ zdQG`u7Y|F^KY#s5kmO+eowgbPfh?<())|QBn%v~3aSsg+B`w>enf{9gmLYBmJ=b=4 z9usw;i4C8Bf1yZdBK3a}>NjpQFU_)T8r;f4-HbRmeAzftNkVel_)ax)8n5z#Cxd@s z0kiPZlaf5h0{7y$^Kz4FK+-wHZ|AMiUP(Y{D?Jutbo27q^)lro^W!Jf_TNpaHHa-U zyk;db#q^K}i5nFz{#Ah|`x>&({P9N;^c4+?dlev49)a$7kZ~*B(Gx(eY!1#SIo}sy zPf}%e9x;!3f6Lj%0?KYUXhY)p2<#4Gf1Wevm>D&a0<_s>tEMe%xDSt77+mc+{;M@9 ziF}%Qj@TUGda^~>eqni=qY@(_K%Gm?DS={_Yu592o&1LGo@$@+K5258<-NQUUj|Ma zyf1wpS!@myEp7Aa!dIT^)qgqb^k<6jNhNU0_?MJgrB5Nfr^E-P%Lg^OrZ}yNFPDJe zn(f!-!pK4zJ*Py{OMYgzDRr8tVyA5nY5hC~_`uukY65|b$UXl)Z44l*aU<&`k-dom ze;&S0iWk$SnAYs-b*eWZw|IZ2^(pa&ye44*TUAeFkA|)<4Gc zbH@P2@wWvfU1trd7f^YZDKSJc4C_Y+=!Q^hDc6gN6->A3|()ENah)W@Fp#N6)nn?ut&QB?0#{54kiL z4L*5wX?0SC+b-3lOB;l(zZ-cQ@Rv8$P<(Y4yfF316gPn}Z zsJrFx11{KmH{B#Ksa#~1vIk`Lq>n{ZdyP<3Y_&{v`rzUIw?3y~i&|PlM&IeDV+UQi@k~%k=a!#queI7Fr$o^4*FE0t;31qkW zT5tTwWCU4?QDw5biuefsaTXUbN#fWpRwcOosxoueKeY|Zv{eolEEST~V*R~7N}?UsE`hVK zB4o~2-&taPY_DVupa$4;)(If?qolIb-EZUfhhbiSs%Eu)vLm&<_YP1b+Qbr_VdTY9 zR(EyjBN-;%E@z6^u$v+b6|)-KZUw+UanmnVo<2JZLdDO8K4q~7-MsX@_cm?bO=fsM zvqdxX&e$|sUXg&tcI%!yS8MGtrNgZDfo?;{ee5)a!Y6Gs|iV zZ4mCt{G2&Y#OYd7%ueB!i{!MX@#7`Y7IHrkPh-EWA#rP=$MIn3YWmt9vY zdK(mk`77<|C_n03K&rC>jBNGk3hcOgS~3F*gT(QBH(b|MWveZ%avt*gDfZbdUO`m* zvnR33+^s$%Wu?A7AJ3ZIu%*b6gtj_9WThhCB<@;J6%_-MdbeCQD!c*erD<)=4AGHG!LqnnM$N1>6lY@Wj2(F@GPn3eoo@(;Xk7O^a24%MRd^pVCV2^F zU=v7&H+C=01{{XC<#R54zbJbj^+w&iEGp_L_p5Dhbc6{_t>51&(>K zONr4@UN;r{9I|*OM?^L+`$j}$axlJ?S#cS({hdFjy1mBU&hR7)5Bm_zc9h}#3uEG- zH&j$*zly5Zm*WOWR_z;AS@#_Fl-dt{U;i~`XNuM0bJtsS0LGrNZiCK{Z6~tv7D+JW z*BP1yM-GhXo6aCVcFX8O+?^F=vQ6;L2zK+6NQ7$1`4;!>pPM~qEa$JoFn$h=HS1PK z_x9szKS9SR9Tj(#IuF6Kl31XXQ?%_8k=yb^$%_G6D@t%KBHcikIzxzv^11}AA3~p2 zovf&u;`vk_UVp6A6r4K~blsKmP(g%rqr=$zX>#MV!qLghy5{2#Z9~*M!ywTw$&LXG zty31aWJcaZ2q@hN=9RtYPb+!3=^PE2(#&`E0V?|Zrd;vf&m)}Qny5Tez6~gIIz1d;x%Z)2MVPsDDsvs)6mKX?Ncq_2&1}f4 z({o_jmS4?qT-avs|EtZcqT-$T{bR#ljcw5l;|rb>zHeHwD{1%fYUgN5nU>tHNz zA|cr?V;v4($+k)VdQn^&lX+$^Z9J|&=Gw8^SH;=|ENxbg-hE|GbsYAi3U4-cfWt`M) z%?RQgkCo4!19?t5uwc?XJrS6za(YA1t!{h(v&uDdb5N&22rwFwwdViPvUp$crzuyu z+UCR7HP6H}|7Rt(sN7{-XT)t%8-gF3r(H(vNy4Z)Bw?;3)U*Vg8g@{ZajHW5ZMI)w zHBoM92YnMB$b01EQ}#6K_|fFOGdnZ3Snrd#vxPEAkAZO);|@7YzsvXzBIis3CDvQ) zEbv{wn(wrY@T@u4Zv5F}JxtsI-QDNQ6t0Bz*`H8hbrTSA{ z2XwcOIF-BPdcQa&e{|(21Sml8%XTxp@{7H=(wxlnfr+wHkt0-s*}2mG6=It2YnOCy zik*RQX6gNgW`YA=;qkGIakQ zv-FF8O(wbq+ZQ4k#>&lYdpDUi9SfKjmk)d!-CZYJd(OG)bj?4Nx_-p^^#_;AkUm^_ zLaQuvR~5@HuhMi6thb3fQfZp@EIJ)K{|ZH%7Jz%aoOtbVmJCrmaojJ+#X6mTseQn; zBIp?o?;GYfmodwOq1<(iDE$Y=()P5h4Oi)2I8}rv5#oErVAYK=8%Jf(9 z+fff;5TS^MjKdq~!EGi_TQxDp*}P8JgRG6jZ9(!qleOrn*N*(wnB_>a*SHLpLCkp7 zRnYSV^@(+rhMp=QW%J2B#DF#n>V;TyBIq0Nd+D>&f`EBxcJ(UMuUX3wT}iVsPmrU} zcxj~}r|$!bEtftmCp87`khehHnyw&gysoXQC_+c0q(D*udYdW4UwO<=q# z$$sW5c&`yp?2 z$?@;tXtF1jJlnEAZP3B~fl-i5_Lk?%uaMsZMiyRGSjF-M1Rd*6n14L>SMc0E;GBw| z^?hcXGh@Osle{b*I>!_wv-)+}Nyc&&yn}}fh8!cwgCxwf>thQ12{AiqjFi=K9i$t? z#BVL`)89{`9=9bou2{JfL%AbI_&WYgyW9-WiKN0o#t;3o__rAh?pO0J;jVRu@&LLN zo}-@od^)tVqx?Jg z-tD(r1Ib!9U-##m2f8&sLhbRN)m@qa%?4n?={D+_E%g+byF#a0*rxOpxbIp2a+akk zW935iDr{?rL+H(>AIlY~5_~^%sPvTG3*p?slyKNybEqFv3D}_HNb#gCE5PN>r=W!Z znC`w>XJk*~C3^L!y?^Bb9A%cWH9LH&?(cPIY+N>1#a#z}DlE8nm9&iEJo?_R+mX*6 z>M|;%mzcr`1{P7Sb8~4okAzTLLhgf_GOuLWf!^Q9r$tv03mA(}Z8%R;6rp~0*jc`7 zvo7(yDHeWTKX8oP0wRI5of}QGE%%#nAoeVQ({TVO^I&8U2xMpDXzF`=xk1Be)X;i< zHRrLAWc7^y(XX_#z;ohPa(oZG*21^pG1i{O zv(+X1HcgI7%;iffsj@79R+ybua>ds~8aP|ay)WkSDTU1Ry?IF&sBMH8-m*upf!!y> zy2qw|^oYz?a|IrzPYC6P)#P{&P)z%+HzpIClx3-r#CpY~`Q|ARy`n`HTu}wWXPu@< z&0CiGKqpoeA%gf`V+RHSY1t?&zUqS%a@rb8JoDjujlDm~au!TSZlSQTNlwXE1E7tL zCBu`f_(i{-iBRy{GWq~0lPD?g zAw^;pwCn>pq)^11q$@<7=ss+hA&?C>-QZxQq)anMM{`8;QreO!qznJ84ID6HkCfEU z6{RLF^+C?4R8jdV3|1Pm_H~(g-1&Ucr=`#q@fU|JvFWENK)OC~Y7^!qd8J-$L#law zNZ-787^I_vd||*C5p!^RIb~h=C*1okMxEVyzi9JeR;<_54dXO1Xa70&RW0LDvyu|W z_<$(&Jt?QD5wX$Bg>9Cz;$U@LJ5sJ!TK&Bq=-o0J+LeMMw{Tj1OD$Spb}AA8M2zUC zGHx5rUc&qrQ&mQHyC$ssZ3#{|I1Kfy~+)xSJPg553U7Yyd2tshKZeXuKxjLpNm%szi z9wrYFV80W`;$q9drfOL;cdv@K^?7b`1QASIKa!Up2A|bCufMblqDfmax;FND*Sd%=EQTlN(cM zOSZM)U>9S4wYjj4Sh;p=`yK>p=Og6-qGjXgUfY^F%$$PD{W^(5OOAK@IBDZ02^E#- zY&O3RZbo3+wz)%cY=^-pGGg!qw6^8CD8ns*O_z@07H6IV`I{W|U?H3^U>Ik1 zvXx!YxL)_@z}ama2cGaExVo5&+(LuO=k2>|CIHIzuHcH^`%#mg3m!Xt@O8FtR0`c8 zb|Y^$NN9t|rUAsos=-a!-JEy0YA&(gbl%~zJ8dd7)Q0#P zJpq9`9diShaEZALX_h)VSy-hCR(@59ZNrL|RkTO0MLYN@>d?UCM&O)7Z44{w!06D_ zA*xMM1a>V$<9MuUTy&247(=Livx!OY?@qWuDT%7#jHs;eO6Xk@aol(1KK?9R>sLsuXibhwyU_WG^ZYX?UoSOlw_nUet0EGiKf z>4QyRbh1gXN-s0^y<{d1 zM9=Tr@{&(M*(dy4mKUX1vNZEEy>Dg8)~8w{dIloI4h`$3J+OT-4a?YH0qg0D}f&z$$wqIEV=Fvg{&SzGJ2<-^G3HiY3x#Ol^2;>A%r*cRCeml~2nmQB^} zY1X?6^I_ZezMlKT0-{#axA_qUZ|0V3B%zW+uZ5$hZ=A=2(-4vzlCS^Tj#_359FY;7 zJIb5j&px~_Dm9)qCV{oXmMQ9rueHngm_T8tNrc(u(d-c}?pW7|!<)u<%vN?m|{#z;%2)VqvFD(u{ z-`^EW&rM}R74A!;3bE@{ND2K(WcuV@UBzOn=0w|s^h{GmHZ#cxl_;EwDe5`CVfR&7UHt}>i$&*nPCsPl-YJ-Ag4*Wl zO;utOWO|<1rJqXWDu^mOtZwwo!#&~y(%-%TpY*hk0V_@>v8y9P92z}203i*YtW_9z=4}v7f0|1&OzE~akCH(-So1~T}{DL z!ki{@!DZS()6OlvWhg^zR|1=a&(=$Z{4|MEYR{J9n7zMMuZJpDT)kmevFfX<9~BR7 zt(jk0fU#$Mwcx^aRkff&^|i}57YjdAOX8F}N{!AS)LzkwJ9Rk_yDarQelNguC-~yz z^v|CBzx-&KdGP0yz6W9mvhgx|LVcFlOO0LoI(qq28G4$FIU%29`vr3E9#b0+4OeJ z)nd}BWTE|}IUlv%jDG}*W)|KhCvXjr#6hRFnA5?@I>-wc(;5~WEwNAQF z5J~cK+MIu*AOtV26BcU`Nf zHfeYv$!?v(XbR@PT{HirVXSxRQZ?(2P#Pz z!I+-Iyc$~8GOVZgSbBg+*r8}_hip0w4P5a4Am6Lx;#ceID&L+zj;fh@c5YQvi_kbt zsaVNxn4DL~$FC;N3lr+)xc(MVgCrwE*2_=iXMare|Dq0m{zen__u+aZRu7Oh@eC_+ zFty#dD1IM2Xo14uN^kZp)Y%auw@*Qjb#mYTB2ruVYlDz!#wB3fh=pn^-D2|8$FfDAl zG;)tJ?eT;t;pYF%ip*gMlF3v{o|tc&!a3)4X=T!GvXE}P3D?ESE|9rZ4$l>^8e4x-cGjZ!dV58A|>%o@-(Y|K!i~VOvqWy zijhxmMn1IGFY&J`VwgJ^s@dFpP37Sz5A9jM=h)KjT}#%G%sr_|d^3bTDB1c}bNrQr zChmV7Q~sAtwJCVUW>#x-k!v&mYbb;-yTrQVPKi={M(>;GZwy~CP% zo4sF(N+%%Fq(npor7Kbd5)ly<1r;eu2}K2@2Bb+y0HsNZ2ny0g0g)Q%EulxGiGTqD zB-GGbfB+%k1b@$S-o5wP@80KMa8natAG(87H;GqNbl@{Sjil%Rz% zCtLVsx*n5cPiv?Qhir(<|7y?-TbPA>>JrlmK5;h6&>1eftuOuXx%O-ObB*>dvm7~M z%Wj`=I1* ztKO5V&4XIbzRzC5DdwC2zF?`^qBDIwsL<7fW@b%Zz=o(+u!_nQ2k&i9=Kr!#$ws`c z_{!KnB@knmKZT!2+9b^vKcpglG5Ye{aKRPl#EPj;BA-(@nx4u?+z?H$K+&74q zMszdmdF7XKY&_z(t(eh8h16&AwFv48ovHvg>b zY@_E<;`y;Hv1qmp>Q`{4caLWIyX%szoc9G7%csiA?NS)VR9}BiL;I0#RDCEbv2lYG z{OHT-{gSGr*=Ql}Dg7Y7ptJ3dnN2y3SLy|V7{$awbb(LFK`Qj?2d_o6FeT9#YYo@^ z0%$TpW@^qp&(IoJ7U{9;UCagQEGVY2M#)z-_zP!x2=tZ1wYd8{n4mq|eK(9cp-n-> z?R=t0ij*kecuezpb_w_*%59K__(Ho!|8&bxes@R^G6jxvb~UK6u~!09TEfC~%BwMX zF=U_2O6^-KtXsPpY|HgOA!7L7=v2}*={1{|6Sp=!5Z=;#{j0a=I`n)wrztY>OA7#; z)@5YZ%^Sz_fsM$v|2GC;9IlX#38v^;>)SmHyz6GUB!!n))(aA2_-lNvs=D0R#_0F0 z%C<=Sz}47>N1Q{`Iq z7&?8DA&_O)pYW~h_e~WRdXOV=cat9*1GW)iU*ZB^?n?3e?yLF^_e+*gpF}3Lz5*Nga>0sReVq&iH^g3#zPR%gap@^9@`HaGM6%?$RrJUl zpNvDly6`(__S>qDpn)zq9O5Cp%5$vMxz(zSOnJv;eET}Vf}K7qT=H31yz0ZBB1<;r z>ac_^sl@x>Bkprr|HPzqo_ACEU|H4C9Pqf-U6dU1JJo z;%4|uav7|04BF0Pmb(_gPzL*?OL7X3frHaV=nqcsS_Fg=ElL^USTHMHs)&3#Fljvp zsZX}^#47qb3bjPofh+DSWwT9Y1o1tU!YNFe`&+v1jQV~Po^L2xXwux5$^I$lVU3XtJ^*r2~8ZCVNLd;$rdi%Y~gV!Bbvu>+QTYR7V zuzBC!%x-F=IB3G+SgcBU!U&1%^D$PcF^gGR)I~6}%p>5*($E#>E>k=dBRI;be_=(7 zH}4ess|PeL6n%Wx9GAZyi5v`4eUpD8^8$SMMqFT^Gf1rN9cxq&32NTtSqDt0ZT&FN zO-T~LFVt;~#Y%gdzkn?VsjVJg-6_Koh`6JxPK59$$ZZx(-~>BGutpBA`Y!Y_1b zn48j++mov{YM1f-=pWcnb9)0iD%Jt1^MO}u>E0f;t*U~v@dh89SZTdo6{6L^IpUpN z>t}}6AQVjH+8kru#@X`62)-{mQ3h+M?hV)Wvm&maFYknBiSr5fM(t(r&7MM*%&mSL zC6!40a>Uzor5^*et9%<>u{Cb*bg*s_IWhUR(qv1^*&J5sV1c6XSr!3m9B8q5cJg+X z{ho@*oJ^Sw9sNW`@3AxVH0u}_lNRBou;*z@W#FI5WUFbgjXOQyP5WZojud`ra~SF7 zHf17{%DU5b_>ByD#Z=$QvbK%|8s9jgrWMk?n6=JmT+c8&wcU4+U2vvGJQGnFrQc}d(pQ_?_; zL+N{TTT7dgGj8&OqT-0Y+}0<&Lg^Vm{`Q2a;`i%n3FPKDO_DH2jdjv1eahp$Mu49+ z{&alBXGQG~)+JM_PKs9evn*jF@X!e+x`m~@YrAhurW;qkrZ`&+Y5}WBMU|W-1n^fY zoOABP@_WjzCRk1{+d?{XBv=a3OTe+Z3>QD_ZE#8Al z(Bk;1U(9+324{+VFQ>`>u^#z}UG;*H6x!QhRa2tgQPhmeUymdl2p5M;tyD&b49T~( zok15XkAM_~+_ivZLJlwG36SbyHzX7VuXgzsM&JYp-4k(C5b`U00@Im{l%B)E=Mzt_ zD!INW1FSSM5m>mtyrv5LEev}$ zzHRb6$OR5@hRBh8!RX771h2fk&jL*{E}u^(CCiO_6d^lZ0`4SYTdP~?n%v%GA@>Bs zqn8#TMsw?1-O2rvY*c|n@mF*Brd^GUBXZk;nu%@}7t${7D2LOCN-IEG&-;^PK@xz# zwHh`9w*HRT5O_xkdXRU&OPmKGo7<2mlRSu!Se>X_!b->U^(UjmL@*!t6lpDm8 za|ui!7cy@O#7~sAZdW(ISTHJ=bpYF92_nuN+;sG~B8YLkT;9P*)_ssMkPQ*l_yuGe z&3-zcJv?2>KTQDdTvl4!7B>9V!`EK_oLTWvGU@2vOKA6>G4)knj_5r_qbjB+K;OIj z@Q`2DW#;m4>t3#$JUAsOf9`qp&dY_<5BfE`|0pA$3N_p&XGdxW&G^Z3@my3o{+ZdK zu=K}plG}Tj`xFIw|YRKYuR!UBnbYY%o-&j}~ai1Pc6Zk+|KhyQVl}uT7d%>ns6so)c)dK6EEzSQ&0(BcG8p@74WO zn{_~q-b$`M6Udv)Oa1961fSZ#6bG=Sm(34khjF7neV)E0b?E4cXt7OC8duyCP%N(w zW0i`NjlRBhng^EyJ6u?Bt5Iih*|s&np1lF8);9E9}VEm>PNf zoBjA}7W*|Dm)8xa6~8xBGp59!>K)$PPBw5$W(!hZFrM(p!$!xeRHk{n${`w@fW*Y_ z7f-byGL45O*B}2MyWWJy0W8Klir1Vb@@NP;h9pJ<z6T-Mbxa!$MF#pn#3u*g|GS7RL;;XB^3f4Ds9o;Lj)NOYWj=8U8zlQ(l!~ zM_J%IF(bxqJU>%4Q|eCdyWR2WGl(?+9SIbBkCDW1nndtpUA;{QV;%T>czDqnwM>l~ zN3S`!8pDzRzi;2!vj19rBVT=A+n-n8|6^OkJJ{Eu7h9IrRxVAtZT)TU_9U=hhZGkg z#?kx>EW82KCY796SMY4ub8z_3kbhGi{HT<-1~IrzQ6g~RN{{;1NO8cz159R`SqWS% z`VM2_4?o9Ad7l=bga98s3_K zsx<2#V>Qu|Pu~T`dYlB7zl_B`aL3a>jj_1}ZlzkpAd8DdFFiT%g>kHwNO+xW%kl0S z?%ccJ5Vv&8)dhc^_qz>ElOVivxn(ctiX#CCSaT@6ZpouEfSwt#4V=2r0OX8#UY|O9 zeRt8i@GkV_%6W&1nK!K;u{~MERSJuuih>hhMOdFv_wI4|l%3-?nVzo?vaU{eX$en( zYq{{xF*c;hQN}qPM|$Lf!^o$?4l+pFNP)9BQ@RU?mm=~vKv4f{v+5Z(YbVuc0uZ1# z&drvq%LJdFP5MRRMffoWWWOhk>M9XlJf_-*!>+bC5|1+6U&9|EwsxVkA3B?)II>Uf z!-cPIKU{8uAS%Xz-9|^te#rr6cOJvPMhh$NXh)y<7&f`4^q~#HX}&dc4YF@L2Ly4w zHi*zyI91K&QPi+!QBnE~RYYTl`hbRNk8vFk-Ip)fY`=6&a{IGf#>a=vB_#syxaCjR zgCGw5aZrg%I3D1J10gX2p2;Yw1qmxZKbTT$S+(PB_I@OmQIN)J-rM%BJr$|qLa=>1 z{hEA_oL6hJB@=g+l$lQwa(zHZ4ZD^4*%cl$maFD)utzH{kGI9Sj?t5+K(jw zB!QzMB+s!rBCK%t-K1NIOY4JnK70ac1SIEg3ggm$_Xc9m%^PRx;QJ=E2k z5XVK=v|HO|Zq=MCedIk8&>JY3zL|h!bl->2r^SmNSG-Yk8yUEAz~z-*z6vYc3y;dL z047cjJ?wRm9{E;%f;zYRXjdc?i%{~&XZlxP0E!v!59sIi;Tf6bsmn?;J`)wvTEVPF#yYb?sg zMLk9i;dUr9e|KYVjNgfnXyl7Ob>=W?-}JI&3>h?cy^>Df{zY&W4DL1}ntQ-B;anR2 zvK_|Z{`Rkqi-fQmVne1sr>w&EwKt_f>}i;rC&SwwnEEu_4ZxGv zQ2)IV5{e;z+=a}1Zyq?13PWDD_;SK$6dHo~g%uptQsm8_vYbf}&AV-1L>m@W2^h8d zeIN^!5#M&F7G(uu@x5+>AqO-MkMH*D-kDUZr&h$u#f#wZm~m?5KKBH4MPTxoK_a zEE=Cxm0J!Rciv6|#zk+Xop00KQkQgy-nDij;Jv3D$1?lDPXq!`xEEz5?Lw``@vD2* z^NT9J>y&RnKrRCA+tiYtNg=3YU0h0%tIVxVEk#3kO{NLA*V#p`9;*9U+YcHt|aBv$J$7En>WEbG=WIeyMMY)Q~7dP%?OH8Dl zug~&R)ES$(uaXbhTwR=e{X=fpOMqcm0A?lSWar+e%Rx@UK0F{ef5#uOBVtIOH1gY2 z6k)1))ZsB7la4DhkRpH@Br`ayLb>{ILu)D zseqUIrb%Z2tI}=H?NKi1?~(lV{slE8m^X=d1ru4q^^;%Sb&OpY5!7A8jXP3Rh|Iv6 zW>&0=;ZewZoxp|69yS@35az6FS4W44FKyrq})Z8~>SytI~F zP6N<@&UG0}^F>EA!U?q&1m2-RAz*yC+A(uCjh^S*cc}T@C)fsibE{K&)!gzFnM7-pQ4md0N+6c2xA)-u;h@L4;rUnBA|tinE@>@MlY3Xio=V3x`?uZ4MUC zGjuyPo|QT`NP3pw z7rqauVL{`2^7gV_Nz*`wXFvVpA7)JTs!&El8C|r!b7HW6jD?IX*ZL>lkWEDjw(umg zy*7vE{_Vp@)FcH1vV&0NcR!OZu(&swd+j$86kcV*Pyt`2=IBvNZP|}gY%e+ zB2gMv_?nkBQ=^3ElA2m4D}A`dWqw|~(@d8yS%($vMQaNqjA|sdFW)C@3uppdsu67t z_nY$viuc|;pid>-k^fdQ-g|=qycFbU%xS+!D_PY&9oL>*H*DOlCT234xlp;NQUl7R zg4@XiK(b$62ysaQ*=ijmYP-LGe~#9Z#CL>zAaBLmA56=C^~=cFlrBvY2t!CwfahS z-32N+Jtk~K*9v*BVqAM;47dD}Fne{*mty-APUtr$MRsoW{z%e*WW&XPn$`Tf|fcGCfz&zrQqa#Hc65HxUtQe;{6 zE}()u8*9*y0j(QlV>CX_t&Zz&CTTelR?+QmFj#T#J9(rt-F~wfn&uOB-a}~ue(7=i z_`=RRI$_Ac%L_Fz>1gWX$biA^+o+`FKDHP{yPN0xcz`ITbz21`)_jJ`pFuNZrLiu&N(p-V{4w`8VWG*R zfi^$lv16#4Pejci6!fgGj=Y5M!qKW1pRlBeAYqnBG}Ekb1x>FY-(*--ZKnW>t8D^M&pBq z@aL_FaSr7K9Z0Ii2OH8z(az&j_Uj_YSDrzm6DlOCf*&GC`+xjV>Gc>m|Icl(lz7|j zh3SN-v5NDqKGh#khW_&^1yeU2s+P}1`%6-T0-aTc0v6+N+ah)J&J`#wV6xhq%eTjO zNNLO8aNihJw(PivcEPU}SJe|oU%IZQcJ@%~9Nz5#v^gYXUdTAnIRXz{v0@-J zqwAx*w&s|POK%ue>K%@01<;=p!*7#BymO4J=_lhZ<=&NKeL`=BpZEGaR7Bg}f~9Yc zpIx#*Tv{Jm49jfWwx`Yp1^|0w9p`DcD^1+NO&zwsUMMLxUFo4Fqc4GHS1lj5pGm^` z!%b++mcHCB%@-Z}qiY9g1pGbxk2QsM*Hh?Q?!>a6yCSPnh^o=VUgk<wfswgR;6KPtE#7?T4LM_ns!&6WMIuZOZ^_Xf=C_S{(t zTOMM2;-&%#$XZ!t4v5rLXzr}aYkTO~5UbLth^6|{tJ@-O`mck|SUeL_EQ)Oe_Pblg zaL$ebL(?@22q;Gn5E9_&(_U8^swj0Y(WNFC$DhzFTfeRNk}M#e+WjaUAb`9g=}G(cBEY#MwS?pa zj5Vo2sZQSIfPd}pS}$J>D88VLD;=P|UM=xjD%!J6cA@R<11)a?(^fBg%+&07pLASs z5DrAq6j@5ugm2NJ$sfe@_Mzvmo6<~%er(ZhCo8q6#9Eers?eHKL4Y5P0yn~GH=z#N z*}IR32E2v>hCjL7`6&^K!hb#dH$DLSBB?L04y;_-NHeV&xhO^<-5i;GVQX+v!h&@R^opdE$$JK}EH7 zTR9u73)y@~(&0%^%*IJ=4XXcM^E;I6rgLe%s=`Y_?Rrbd`=i(6q?#fj3Uc03_;tE0 z?r1d6N6-TW*wEr|NqzUiAW5J0Ygh$75PeoLqp|7%`kTm%XS_&T=2Musw-q)Bw<8yn zMB?#V)DWy2KM0=Ey+dn#K((&wPU}eQJDoHSP>aht(1>{s8Pkwr7%C1+-e`?uQ9kwT z7F3&YnShDXhyDp}J1$|p#n!zhbuOB{z4oy8XbZxt*WgNkXuTI)KeTpPMjX?u)Q5Z% zBxs?W$sK-%PMr%_x8ve z>~~_#=~&%PA01N6qB=Bw_s>98YDo!QISi|8@)ItF_44jn82i%T*a_)7d3jPFN`s2coZZtBge0x`oL4d;0paMPYa9s}X>1bF><@ z4Nx=IIjdjd8_1BZ$J@W!Ljrtx5SNS1qqUxc^ZlNhMi2Vh-IPCZR(p$fPZ89X>Fsv5 zvX*pyIZwqn9U;V3!#7K<6gZM1L};$MyvFjvLTK`Htc-;6S1;iyIf!@3P$x3l&7W)O z%b2*#8T5ktsAUI!!qGR}fiu<3y$k?$}|*nTAXkkvaEd z=>|A86t1RYHGdeXNOGNGGMEJVGU;6njbvvCc>SFr3_eR~#NT&|b8c+WCYs~;xsLx2 z(o#C9X?uidsMMg!7mU>0AF*9xiql|P_juU`p60E2#iTvX!ESu+9*f_N!%^0BRl(Wo{YJ}Colh7(Hd^fFmI8yMnJl?nHyb~Q_Pzrfmry5%cr29P6c zxgS|qkfxyoiLkHugKEH1@YqG-UuJP5$ae5sD(1#4@U?(Un(bkvwt4g)+r;QuIvXL* z2-7Yl5?THWGE|!06$g=KNktTxm*jS*syj#pipoEEg%=?-GRLyo>|8FHUY)AgZG6~r zf&o*^H2s4U1+q8xtr)X6_RH;GE!SH)gfSSCT$6{^&Ky0v!STO9mU8d^0qQJtnQWdj z`}aS4Nnb=H#Wl>Fzp_nZ`&TCU=R~7|@$kCGv;Nsn4Ph)S%I98bH|cUH{!gUdVFp_D zAD$k|#q1w-)K;2a97O1U@gs1wpnCWHsB8!u25M!CBWc*SgD>$iCa^@H(F>9z4J#EpcjfkT z1^>%x|9AW;qmNw9YbJ3Hj65iYsvg|!lIh*d9;c_u%J6*OH!@%1-4M}sijrvDi3Vj5 zvyKS=n|wLkME?z4W}BkTq^{nR}CoA!C#s1BX~@fwHMkNXQDi)t~_j=?gw*_&5--&auuG=Yf2 zwkDZZtv#ELmY0^=9$3HV({EMpvr80qd(EWHEpGQ&t0Y8JnX#Dvm-RYa#B)ji?8x2M zOxz67Y>g97<7o2P4_*9X$IECW#UsJu>DT3-9ddjq;{N-?6}V{B$3 zY^Rv~Fn!mUR^mjBRsYSM{ZBVk>-`TL_|H}7Mat_QzkNS9XRfc_3}-YxzQM&@t@TX1 zk5NnUKV9YTZ*x6=k8I4Pe_nvWX(q%gqw2u@X35rvwl>WSIBLwJoG-Y}pndeIG%%hta}MAnl3BMW$J6QCBKaQy#e0ae`5-TmX0zC|9=3z)M*vOdqAJ#+g1 zO#rSLHvuRkP|Brpwx0j9(;EH%IYViw{9KJ?<%>A*bt=8kfDIt|;(%BC1`@txmV#H& zdlm|IKCs!J6h;o_IS>$hEK9H1KeX_z8tsG%Lo)-y#~lTDxNz%8XN?4{CI+CO|#Y?UF#x_<{aft}!y$jK3tI^})?* z!nv={X}%&Xp5SZC&61Bt2_}2K>8yA}0veKu-1S&QmLigUr2ZEgaAL>+)=L5mF^T<0 zQ<$6dPrU*``b4ntCl~Oxg~I-KrmmR;K)-cKibTQC(^EC?%N*BmxG%d0S}T5Z_slzN zYY*;rS5XhwgfG?ijo)rKOY8|)RsZ(Y$alV04W$auuAM3U>_+t3CBdI5e!`YoDZiH8 zR;-ojcQcv9i6%3ytu%sznwQP7_3NXYJ+T@#ISN>r9H1YcdJ8pi2?)wyK!YL@|3HJM zzdfTyhwAegG{;_pT&liI#@pq#j~>rlAC9bfMp`{9oRJubM)B=;E7=$*X}BveoNTAMkJ`-ZIWARP zUu~y(Cndj=`em);Gcf%KvF;!qL@q)smwu+XlrN$XpD_zGz1EJmz>B!qyX##Te>c}O7#*OgT?0@^B&{a9^h{%@W#n88gr{i$HcTpJif=#sw20s z7H1(fa8g`4{+p0%ebMbm4h;6%#`bb^v9l6?@NktXz}@lbODp@twg;SM^fLa$(4D%C zoN6?q7Bi-H`>0>gvYf*g_Jk&&;56!iUw(>94)S=}1v8xQG8guuQ_QFI0Z?X1rzc)i-Mgr+H-#FpIZ*aBXQIsqM58kIPF5D(t_pXOnpeye!=2^e=BwYbh7Q?8{@8s zA8gUOf{3oZff853C_3F9(qi#ozsiFWlqD76IyK~g%xU4(N~A;A-HI5%&}(3|TN2HU zXjBr~GoG22Ie0BA-`wtl{S%m)#gY9;Pf~TtVgT%$RfI!GTV19#Nfa_9llamoq>~fd zh6HTsNG%});E71@0I^rLK%_K}gNgX(D?L7?GT4*o5}_ChZ$x?ebM6nmZH|Fpxk{k@ zx7fTD3j`V2H+^w4Akl3awMlMWKtG%^@#^iQrj>P)i`UySDEuH*I{`|PIPmsjM`bzP zxfkmoM1CMqH$o#Y4KD!=q{ki7IhGYea< zu|MaLdAU67;5am^h*7gue^dIX80>=vja6rD3@FftoS)~-#(hhrtq@k>B^I&{D(ZYj zkF0o>G#GVhMel7pm-_&7^Q#xIpRIqqzbYSRzKo!-UGG?bY^Ao(e#BPk-g9i@*^Zob z*vc6ua?f@%E@k!czB<+N58(iFP_v_6YW|(!;c3^u=ro+$67&82RLtg9Ny_eUJo^x= z-(VP|a^yxMyZBrttC44)WZ_3oU`eTdt1PIWAg!=55UmE|whOte)c| zZ(fi86rOUl1a?kn*v5nac%r*Z8;*1P_vQSXT@)@8R4q%yhPkDf=(>Q{Yva>q)t1r3b7#DkWAw(@VfU|!sg-*GuY1cJ8Q zuXrunmD{z1HwSo|EX|5zCkTanF)pEEbfm+`fpSi}LhEa{U2?XBr1{LMe%>x|@%}}} z`=MN~yc)O5oYK+><}Zye07=KTE;WE83@S;pfIgkVJywYs(8;b>UfbF0qjt%uRjuNt z%H(TExYE{EH_agC<9SJ_7F`Q_s(rWJMWFDauQc~bH={daYVv|cq6EuRaW5 z9xxKKlS>*S?4>3^FPQ|$AdA)M-vfxI-e{%D6?8yVf$@Oxbp-(oV$Kh@BxoOH`3s7Z z1<)7tiZ`;X2VJhHKkvE}ZS&qkVHw~O-%O4rpYTKt2rE4Z#4ZKYM%+yT=&vbOAD<#wW$0Rmo1}<%gI8PukW)d4x!HrlOB%Z$$y?i zU}N4S6eT|?eF(c$fkaUD-aHt=rUTs>T&_7CAxFW)qi^lXgk>!x<&x+DCwxmWaU} z-6{@DwN68EZME<;`phv$EkTPI0IC-S`MfWQwK{INjGUn~YR^m4o$f2lJ62*mtNq@>U$4m$!}w&?EU zGZ1H!Wau5ds#`M;wB|LEmdkv*xC!S>a6agV2#rM1i0BQmm~L3ful9-ozd^XGl88aT zQf8hG)zEiNt^8woOJ#S^S-*5}hQPU^?grJ&p`Piga+_e?b~B96e*NuqnNIJ%{gR$^ z>>1)cjt}Q}ds`MVWbI8*cKdDGr=4&RkDx&f*(FLeqyBv&(r7kw`_v#*!U*&9wV0rJ3QV17Q<7}sj|R@l;CbxQ1pG}FOGLpg!7QD?7JtX!h8 z?8TxqU9c~+1_fnXTl$#vo2P12-){^mJm%BM^J4yES?ty$+m)(Txh$;Gjo53%lU=jw z^G%3z*+6=*ncel2Zhich>&ObL$l|K2PBNNki4w?H%K5es>>LFmZQVq0jtlJXCI7IK!Lw(VYo z+#{Jf@2e=BMy@7aUNt{$I-=uiP=&jL{Q2f_`zvc zVl-xFBc9*K5s50L0o-0^u5Vm*a*Z6G`U!7M9*F+LqxMk#SkbEH!!{DeAetS8*|%=X zEy(P!*VDaoA)|+qXaJ3QL(7KGEw4gijzByxS-sQkoRnIhL-?{a^wY@#WRrbToK70h zW}s`mxH!-D_hsaFI9PKg{odou4UuYn#gJInOJAk+cg2-{+8b#|whG1R^Y;34|E%(6 zOhxYZK(BW(_9%1_d5Vm0Dyrey-vqUa=%3b7I-MKz!wT}o0iDrvz-?1B+A}rsCU%+! zROQVfqM#I0j{4*s*AGuk#|~|)GW*91;b(tX@4uP+jTKXOe-iY5S$})F`T^bu`gUuf zcNZEDxl~BV^WLVdGl3-q^#2ni`P1rKdtC-1&wr-G52e;NugsN+Jz{>Q2L>#f?as~k z&!nW9{7B7j#mF~sS*)OD($BTePO$H3(X%aoY&8CujdJg#kc;vW92sntBcaZP4C27}#p6sC`fY(=Ki2^MF~4cc?~_VgO@X-4n~tvVj*XYUc+Um3d_1!L`q*Is z=Z6f|rsg9QN|&B>pM9`b(a5nX)5kXd!Z7Dbbn4f$Z`21%Eop&UA@z<&jtCuZ{%-yC z;+D_)r=CmH#;v7SUeUn8Yw>NB+tRIrI(&Ere|eW_8-Qy!u6$Gl)QRL8eM~N%u3y2! z?Y^CD=UcpD5M$z2(*90gA{Jn3_0vABY_R<5X}l9%d^W4bUGNp@0;y4=SHa1DU$v)G zye%^!%~SF@U6m?;eMjyc@V0nf^L^)u*Dv(Vfq`dB5DekH+VQ0kH!aC8L0>2BnuZ#8 z*`fFM8Qr63#h%)ccRN$P?zYp(85Hd+^D;;|p^4%K?~^gwDmH65h`4h{ zG)^T~+ssM4Xfat^ePS8K@Aj068NuQMPV9y5HL{9FYTl!0;>;IoUU_+R##n2I|EST^ zSm7L9PJYz;F$Sz%Z0_*ZL&gsn>2MR1=V15;=njd|JG=euO4HCojd3;{yX&3NyCe&X zC1nK1B=3s({kk;#yDL_HtvMM7>{IeK=h?ocJ;F$9>B^&(u4`x^&iJK{+;jC`!3Eu+ zLm!_5hCsdw%zDE72d173H<(vDAea}{9rg1DJBSfMM3s)N7DECKwZ>=iyc>(@81iOS3*r9L^{S^4%6R7s zMPCc*pFOI}%{0H7hY?O27EKF0s_M%WQL}179N4Hy#2#aGGhp9eLM|!ptO8EaPl}tR zFuB4hRn8P8uEt#LgPo*GMb~v6iKi5f6Uwa5h>f0_Svvbi0sc*|?)FbsQw#%?`$y)q zkb|MGEtaMnV!7;F+U`;y0r%eT1h{TQ$E|Piu0D_Nv*|r;lE!r(H$b)+vRc7U*^tdo z#~EFiBtUdcHgW&EiI0De3?deD@vhmcS`6hjZEYvTZEskTRR9V!5=^6jdM_|9- zu@eaMY$n)BZhuGp} za>D1BG2`niz}}d`WS-1=NOCH#46R34+TD>dPu*z8Jza3xIZA&HzdU_s-EXYcr+l`i zU>?OrAYLbyr0H!ASyFHvDct)`MCM}M+0%MHy#fw*7)BD2 z2+u4kh^^@mk#?n0;l}&AT#Q8eF|J<=79^E>OQLo8-OcOh^ToN|+EsiS-mqKw!>Azx zid9seZ>%=vNTx%~^1j~eg~hVoutKpNLSjK8^$#+cO~GHS_kD5|59LQAq!@W|VsFTE zay^)I^BHf+Oi5NoJ6;HM6iQlnS=R(qI~H_xqG6WHVdO<|r+@2q_(R{r9hi2$tU+@LR7Noj8+uLinKutdC~nKL~^H?|25){F@4%I2|MA~;GDJ774|@E;mLqeMy|?kquUZnSWS|Ef+tOME_O`f9t*eD_Ic@Xo8=cMSGd$z2K{sRQP&PjY3d-k*Z&DhWlrwt~YCxXrZ&w(NQ}8K%m}t z^r2WT;BBDjbtYd>`IeqrUj+4*?&u%V%I^Dphps!$NVaJ0B}41>(f%Ddvg4wRnx#f| zn;=PU!f5$(Ob2|s<~pYe{!au(d&IB;sXuL_f3WI!wZctFul3ByIRs$Fouo&g=Ojg5j@f*e0&TwNC-`#+= z!DMP$KBu1D&IVtd4m7EAT4~3;RJ>sSJVvvvrYEWN)0+o1s0ws3hjc^w-bj3URRA&Y zofq)OS$l8qA}Pe|*8a`Nc`{5C3!6cSf0FdtSB%f4nmjG+nte zLx&P-P$XAXgdtWfmh!tQ(qWkXbiuhYdy$np+%N9X>P@M8F%LD^1jK>X1!WdMFw0bB z%X^ePHku+aVxFOwvaHt_))yjlx!*%nI`ILkMB(7x&k*1qiNB zcl#}ka@qdSUowhuhDqqup3!=TtjZ^KJEJx6R0bH`S1yYD@qnrLwLpA-TK9B_wN(Of8IN0%@kw2J zp{af|mGcj$AD)~!&vtQE1X7WnmR>1x33t{_b+}{bt;$YV!V_lMuL-j~8(^EaRp@mV z=a;cK@uD^sOkrj;WsHfB_p3a4B)+t-;*cDT|Vdzm0g z3TFEtb9M^z55(E<1st`XPrB&)xU`VQw++23v%=K!v`0b<<{;Y0Id7wjd+WNM zo#SHJyI~l}Yj5EY)8jJUpE(RO33KpXOs`c%&UnEPd>A}fqwvpA z_xiA{kusXHb>0%m%w@V7S)kX$Y+pT_*6RcSoJL%B4!{CYfMh4CHO8R1ux5?fI8YY*tk)M|0}i~DlLxJ{iUzclq3 zfL1nCx-mOScyKZ$+z!F@#In*Ab#0Xd-W$34|8Vx6QBAemyLV^;f)qhOX$lG`O$6x# z6%duCpny_B5kcu4gb=DUAu7_Ff{03&-jXOK(naaLhaN&G2_eb5@Y(z9=lP#~&KT$Y z3InoomwC^7uHSV{P{?GF;m51aLq0jY76Ou*DzzVdC=XPw)*G*NICo>xqH%$goTErH zUa+)k7UDN^mrKbb5g+Nb=yh(m_RN9P1obVhKVfo(3~7W%+E>lw*(r4-m2tfsu7K?Y zi3tTYZ&i-uY*juh3vTM09Dfsd-(kGU?1;}CdD_66Y9mO|SH$4jqTkK!F16E3&k06YZHs7+S2I0;yVKr;2C$ z?=NesFy)~9ECqlLzZ+uCZfPw%p^&Cs?S|Dl$OlaesGbO|rss0@PR?%XFKW%=hu(P0 zU~k<~4fLP*5aE3d7PHN6IhaRND{mB3#3;Xby$8&y`d-AGV9NXK?HUPMH|IBx48aah zogF5cmxNl_wh^k64*4(~XBN5zWL?A??>f51Gw6i$JbOb`q(-Ox&J!T)9dtLg z{UJ7M>H=RIFyX($Qf0%+#)Q2ZWykF9U&c^44tZ+J9JRGh%j2uLTRLlEbX&i`JMuPA zg&byGMzYV2%}3X|_YSid%b4x@+ZO%Q9feztgT)Fompx+@C0Uh+z&bNGrpFH}a6i;p zSl6N)Pqe&{`xJLCKB$rW-&xCgPZ`FPva2=c#C?zgrZTdZAmMe}y8@5};RgeakDlo_ zvky_n`f7q_gH1L)*bbRgUQL)hbh_WJenJfzyklS6#A`b5IfC6?Tf<#zgjEP{BU;d2 z4u5f%Pt~m2NtWXV-eFl#m?bGfK}86&NjE6qdjoAAl>6vI8~L0&A6233rLKZzlKExy z1U*2|bDVs}9~?a5rHhi_;F)(`;y zekhUsa3rpqs@?Rha@_FUtNvN5f!(e0USfUTF~sW&nfW5NIXORno92!UBfy+Qc)WXx z`yu0{)7TvzC2f6cM)k=(lrYQcgZQh40)FgaEmpT|AoG5V-#!u^RorrlnqIhG{Wkxg z<#W7&Ol#fqW4f8h?|Xdt9{zGzDegU}I@GqqocrMZ%ZleneO{32XeHtjON;;=UiBh_ zX&7WG_XC1kCX*+2ad$mcy}f?!*YL&F=w8FN)3f=OZ!fkRwMj(laZv$Ov(g$eU$$eF zqcpL|Ahvr7_YYLFzVof!xny!J*wc`-qMI(42Ki=Yzl7!o+&x^D^Cz{~R3Z)4aoW!T zhnM9d2>H?^j7mN-9iY(9%n3GLUFw-AA!^=j4i%LtyqZ%jtC$M48Ckb*72XYPi^E)- z;2l56ES7Db1nCO-2kI;A9{O%u+mdRZh$`*H1>RU|J{KoiDhyY`5udSQ_(X!PHznld z4WSpvV=rMn`|F2nHi-QyOZSRlY}=>+Q*n!Vb-+#EVhu22+8ePaLvU8G9!)z8yqXJ^ zU9EpEbKhIM*B<^x({3&|-$sb|wMOpJx{beblYw_JrnD;O4R1B<7c2)nHj@QN*D10)!*4H6_|kOXZjN&6_# z+F!kQ_+)qk#_8<=XlF6y&Rea_xdL{2<(&5d=>ln8120+ z4(vMHNjNUhlbR!UC{u~P7XNuUMo(pf`67-~asLW{l(B6lx-{G@b2MfgIl4S(Or4C<}t zJ1R+{J@_RN@Q<4R%LtKO>^?{_eDk8uMznB24hM9@IhS4N!&IUF@6yrPScEY*;1R^> zW+@^tMl+leM+b03M)Wr?g7|0mftMQZBZ|QKjl<1;okDjS>^rzP{wH5_b}5uIRJM8N z*EJA$vu=KQIUm01owH84Cd&OuTzG$7c+SOmb|O>%rvi|vv8~LnOa6@Sg$7%qyAV5w}b%zkB7v3 zEzw>`{ssPoTiONsnUxH_6Y~4zQ4LQ~ zl(znuh`ozFf;ct1e(v|ZQ5Z$59679;{^hA{o@xl1@?^7mPA>5o7WBVJ-7H|F666lH zU_lwyJ7LHo`e{YE_Ly&L5WmrDH)sJHJSMPfeQV$XjexldFp}%mGzo&Jw3zJ$)*~bE z|1$%4^t(U)QcdZLT|G>-sj=cT*^U#0zPlxrCTcFMU79?3r z)!9#s^J&lKq%AX;yiPCF2ny~p0btVpNQ=Et`}qTN(~KVv%!alfi0g;_O<6 zT$Z~>ixiF@mFB~iWK_-o{txK&UrEYq{C}+NzV=+;2o2hq88^DeOX|Vyvsp~69Au*A zc|vok2h#=B*q}2aTRmNR17{TBw(N)Ii2|4B%1%?el_hj0u7d#)-iKImWr=S`MDTxs zM*r6j)1I*T92FeUYIa99h|S*Y8V6~F>}fi9f6M;lEne&`e`+bPasliwp-0Bj6Un9rpa4t_~26gyHAfBgomjs`OyT3o%&v&Nni~|(RAE(Rrxmy0DMac z3_%Bc#g5CD?$sQ*cO@3=WI zzo-wuE$9Dv5YEs9_$h7RMX+JIZUx!>GQ*>in%CiiJ|bKBNNCDrb`g?76kd*?V%V2S z)ZC=!&NPJF75V7{p$$q4HG1m6k$PuZ0YfE1mYcen16eYr7w(b#vg)CQ%SrdEqkS^J2F@QOe8t~Cu=(5fFC4xE2@q zxT_>UZ1>P1l=xd7sl;^ILQ9)6GScVBJ5WvC3a?Z0|Gx766l_(MVUPn;Q@zX4(zBw5T(? zCQRr~IH4B$u-kxP#-E}=J+=j3Q3GbInJ8+hBwayg-bIsmHTIS=V+f#I=m2upBzcwD z*kgAV=#N6K@>+4_@|U90Jb5fdMRn=*{L0V5#JmR(h}r;5&2Rnezn@gfh%GB{Dcy%c z#QX;Oh`3?Jmk{BBt)1z*XNP}W{rhQm@h{uVL|`}_-HKs!1Q!4P($TxOlozGhpNA37 zY6OqFw77#R(=q}3&~;+2Pd)j>3{}TSQ%}2Z0YZ~74PwIqd6zmck~Z~Tz)fED_6$Gx zjtw0U@$(k|3rgg+t9zckuxiMsaCfP*T00MO^4PcIjw~v#b%)`5)! z*M9}3`T5X5gThgw+B4j6%(sebp;(TDKS2X{(XG5c;k`j-D2ou9))2&t+no5@S%-T3 z7l(}Tcuc$1-EBBVK223a?)m=QOzvYO;sNNi1T#4IP0q2Y!4gE7+h4}R$w`wm!Nh#( zoF9m~_3&V(=lxcfNJWL!rGaapQg7q9)2lQ`2KZ^*Y=Cg1nEAMo;$0D0ASGK04P+vw zPlKI5sKEloFGuDqO75Jk{UHrZsFOh5!W+GHcUpUyiYCm-AF|sle|yHz-oH*RDP0K= z|MkcJ3hN_b&y}{qgftF1ES|dQUP?kosA~P2$*EW3adH%O1sV*K(pk6Vi?+)q;=t0e@6J0AwUDZ}S^@+zn?r z5|DdrR1g1pZzNc7yfK>6^SWwrpu}f~F)?41Vx!@z0+lQo9Y->;zIG(WssE7nIvTDs zj3G;oAuqb2$M$z|lfz+G%l~D=`scv3@%k5qjf_1Rn&9#C&;m8tIxT}FcjYkvan-z= z;V67vh60bFu9C!+LwQ|+3sPtm$2U=+aBAn=t=I&^|>-$*2xoL&X%|g;sN*j%_7^gmp(C%IjJ5AD} zrfzzp`|Ib;%?e299XqQLz2+&Aje5H~hpuhD^*fD=Z`fPq2+j0-hGH-HoWi1*bU3p~cysqFFVws^m!HSTx=VJ?1U zyGyoE34u%SSxh!lq{#c~TX`qc4~_8gP63g#9pDJ88Htaba#6CIY(NpIwKvG`c6PH{1#phla{rn27 zU|8B!L(N*B8=b-f52pHrl(5o_urvZ!Bg_0xH3PKe?yx)B513H%ne40H*cDEPrTtyi zIBe1{-h}B*$R4}px-iec?(YPC4}6X5%s_Y}DUH@1U#+24Muu@X;RKY$AA z=DX8X<$H&GCQT?*0Si44E)N4sB%Pi=6d%$4LS?v~%9SsA6+9L(bSyp3lpc!_81d8gt! zcN&WMs!`|Np+g3q-%&b1uP5yZ%%o=)SD@^Kwrt&cfa(H3^-a&0PTpFZo~NH3gasl-6NW+e=P93uy1@P9rjk$Uw%TII`g9Tr-m2IBDdtGL}yja5scLNNhf^|l=;cLpXe0Jv)XW#Ct zag?Zz#C!PL-AM-o#b>BfVMzEjv^ioT7MC3mTt*Fe@ecBWa5!MTa* z$nAFcuR_h;m3CO}VIPanAVa08`Qe}i_{mzxdJ3dqG<_weA~xP^lKk{whupaGT@LL9 z9LDShgaigV`^Jk)*ZZ!6{F2`F6uQ5+53#4y@W-lNK_Z{}O$kz>F#UKpjYP#}7Z&ZA zi3s|{2>zLC5TLbDXfA$O_krKMAc9{e_q}LH8O6Y+lAo{@otrwzpq_j~m)EoH_|KM; zis*9)Uzhy+<)p5C4}T-JdzOO6!A~c&b}Cqe3-e^?XWq&Rk`|2@>g^#9DYWGlAZZI$ z$esS%Qgvc^Z-=DS83#_M(kM8__KxuX(QIvo7FFd!V(+=ayZ@i$Gf>q?6(;il=J^H3<@O z&Wf;|6#Wa?FhlCxhh_*-u^P`0Wrf@+`_n-KL5KLAZ%TZegygCq?EJu*h9S&HmnyQg ze!A=f3uM>Z=c`ClPH?*(T1*BzHJ(33f&X%d6SgXsDrt1+N_oF|kkAI9xcSj#*4!bl z8UuZf{YYO1^EK08QLCI(((^GNMQxiLruSJdJEXQRPX+>0$4*`ot)$(0y)USRMtaGY z5O-8b&z$h>;aWM?-vv>6=OSYi%R*+l6dsld34MJvaBrtSN?Md~!sNVgUY+V&ffEYO7Lb){S6d3eDU}vB9h6%$`R?@;nMY*HRh)2m zUsuD~$Jm5gfOtQ3!CL)@HGDMrGslWh1@s2mjT(IZen1v=O!;C6!90R+TJN4|2%*h} z*KEW2P0PEe!&UoM{}mb z2_9XGk~N>9aQhgf+3*JhM&-*^|CpyD4>nVH%fEvKdV5NJri=?}yn!7W2Htw?KR>+Z z`N@M{w|T6#VY*}Tt$@FV-z{q(-SY0jC!t#c^p`3wxuNY&c^9{tsy`W56zv`Mbl%Si z7ep1<+gQpXU?i)ylf3wcQ}e}Tuc>-{@6X{BdZqX27VBESEgE?Z5tGzPH>YY`1NiR* zoonysJG1!dOP3=5x{B}`;#8AE*!*-ap5va;ORWb%d6dhEN4m`gKfoq?^D9Bq3FtNO z8Kf-nu`Z-Ru3BVaYSOScv-wqN!&=e~QAg#+?lMl3D0*O|WT|}Lw#xkQkhr!C(9V{e zgs;@5Tg_92Pis$EJFa}^r*M(`bNOr^wl)(24;HM<`lBlIyWHiDX`PITCIaTFLEZ&V zow@B>?(l}zk_Qx3mkthUug;qlZu?i#xp(Q+n1-_&9ly)=G*5jYR%koCNne$5jDF^$ zAnJ*w>fVNI`Fwv(QceGRN^N*xQ(Twv`dGNWz}`r0h^3z+&o2@fG%1*`dI=1CSFQeV3^7=7oa z^~x$(@E2X{Rja8h=4b1>a=Yklthw2F1=q44huniw^SH(W5Knk%TNtdor+woGUT?i0 z@Qsg(ud37hVj<1ZIiCTin4kCB4tFA0WZS)#|Ad8i*~gU`a+`l>b4s;8Q?!54d?2T= z`4<>1z9!-N%sXuie%b8m=5`(2pvuHvh{AJDcH++K?}ABt`Yu<*$8Ym0RavI%Kq}<> z;~8W5-W|Tb_EKxg?6>$0s`8YE*;bZ0Ub@Ad=Q4drd#XsLz%-@p{#K0r<8wM*k?=*H z`FeJlrz@WFjZdXvTI=&oQPWT%?e4_!PHX@PajyRJe#Bd>ZDx0v{^_6SEzMZ_>jlm}vFQ`U~jyG812Y^W~z^ ztz#d5m11tk)PEL7Teue6(kKZaPwQdeRkPzM_Gy9^bBNW|^q`98({G2(>}?k4;15qu ze<|JhycD{@_}VqmVO0+vEl{hk?>k-Q`Kn^6H`?;`@J+Hw;`JqO6W9ZS`;yTL|4DVt zGwlZ=n>gXT^Xk0b5hK)dQ0x&h-OB|Cq_&G z9n>T0h_tm#2qkIfn}y%+6YkRnEdJ29lpjpx%|bu}fvES)dD*RfVw?mra-zO$kakP* z>3(6;7D*hYE!^xJ#^WYO1>X`T6?4W04OkqWpWMOc&)yPe&8sMuti4Gb!(=h3#|>XE z^Pw4OItc6$F6~07CP%%+1TRXE#!>30uU!<+C9r~l8mG$TPoTqasz=kQP)9%4XM#v` z)*q?XmQ3{57Snh;5r-J#w2|v-+%!GRr@vZD+uZWJz~ggCPB%t*)BNUy!uPnjTHL)F zdpo1x?K~qXq0IU_(2{UEmcl!Y)v^>-&gi!3vgm!I3Ittj%tz#nFGu$B*{M}o6 zfpc@E&^RPX@nFgQS(!ZS;o0Ilj^4@wKDY}_j+A5Sj+@M2F>?MnaVbmopIH6eL5jK7 z_RyRp;W1i>IEioQRl)1*tq4}l_riyfQ5$We4cYevjPR=@c&ynDr-f0llBMC6k%x3o zJ+5&a8l~4RgcwAJ$ z6;^(NaiaCj^;W10t*5?yxilNCnwOOQs6wi8sK~i;j`KENvdqJYc57n83j4Pc18&bG z;7aAWyF8+QyZj=E0m&hOWm_IO$UoTqB9IWUXhkV?T7D5rN4CIr#{YcNjsf976nhP zzxO-Or6t^P5T2poiHHm2-u!(7swV5=vN-1*)ciFO^Jqi88sYqC#|eG=ip_Jz07 zUiaty=PX^yK3PvfKL{guYPjLi)XU#w9k|2=Z*n%B^1grYE#c`d4}09=Lb8d;ICP zC^F?hX_p`Q@nMkr)2YO*BE6T*ov)0Z3gquO6W?Ogyo+c|I<(wP2;2cbCy-F}hX4@F z+V@EKEyfBus=HcuYThYn`nXuEZ1?ah6aSJ5;bdQlT)kO|z`Hh|JuJ|Y*oeS&gJGwa zuZT5umnMu4D_k9*+S?sN{k<14yCWZy>`(fV1egKQ`VEEjCeWcGo^Vf6pxG(M;yhV-Uf;69frZ9kKs4wM^x|^Bd!3lH zD4QEM?q5Xpvvrm2j8q#`1TRy|J`ANXmKW+V(m++Q?zL}2bVZhf`4a1RAANk5^ zA8wf~S%koMFTfW3h2(j4F8Cp`=402{E2KAJZSDrIF5FWXD;Yc?5Vtr|>NUvNgRxQL ziamu~^!;{Qx-6>P8T!TJc4E3pX)>W&fCbr!i$E(njxo%nv}x6z<>QIYcS>G5?`5lI zA@Mdo)^4`JT;RmwT72a9;TKWsF5lD-&aEm*hsH4&oEFbbTA&P7%=tD*(K{|`v0l|& zt;57OUG28A5Lr?$ee1nqHdWJV{#iT#wNYI?8qi!x{e}LRwdk<6fmxJ5USQW!IjM1` ze7W*kpIlbEBb<)w6#d=?n5pT*4-S%4EKB{5hii;gq&M+x8;E5i=^ugF__|&?NG}P! z6^px7nyl=D8%}1P_^k2d>e$Nt(oy!rsQAfE7hX-KFX$|LUUFO-YoOJfUJc&!GXA>9 zF#25UqqQQ*)PNsy9qXfCze3_0YJ&Nrn+z_<{_;arY{FwE2U91CXP@A@piX-hRf8uB zF>k)E!9*s`%INPeuO~bMNHxOEc8MGAQzghn(Y`d^4bcRIFGN(4+bq|f>lk#sDtTjf8RJfkC&F{7 z-C4miVfqS`-Xf}P2nC;8h|JCIE**|scrVP*JO@;u-4u!_?S43RZhzn^MSIYQJt%e>x<6_RL`=*_8-#SM8 z>N(Rmp$v~%`b^`;Z^Azvma+t0UwF0ApcvVAo_jF3ll~OMEbglH!0ko@-o(@d2jwY z0)G){7I1(5&TP=rGVg9q^o-V_H9!@|A~0hszZ@IejU@{`;PctwAY`Rrlj281KS^JE z@{TC2AmpHeh6DrK%@c2GcHW|FPe=;z+Q*NTzDW2qEFLoDUzOG9{V4Ob+8aGV`kC@H z%i|9YbGmqOguwck$r@DZct5Y|?U%OoA9RC$zm9ZrJ=geEc@uN@JMwM{ypf2hT7C$b zInQc5>hdi$_*DFt^PAGQK8fHikFk1kf;(StTeM8fifYF_dw4==`=Vw3-ax&xlQ=p9 zW5EfzQEU+Ss_~WOLx%Vfw{C;pt_e)2YfM>X&oQAVauV??pUGm#?U1xp{n;iS3wwbK zqdZx~Sf=n)#Ua*~5q9p`1c-@d(96aA7XERkXSsd>U1(Y}qQ%_L3#pzjV+DpTf2?@= z_>qp?x$Q;p0@zqs0$m#F5N}lPI*E-+{k(J9wY#(Zg+hq`ylLX?m9ibJl+@|dY-5BU za)SrLi?Z>t@XzbF`Ab9MhDkDH2g)l~@UdS3ke$z0N>`zgt+QXGH(QJki+7_#jkLN| ztuK_udK(O{-YCPOcY{hQ%REc?*0e~j6D&1nFvl2jUv#O(Hb4_2<>+nB(Ha0!&Km<; zB9~)LGdQZT%JegeoUFsXVFR(R{5TF9&AKHu^N^Sxt~_kOp^#i3+3B%0agWO$$zFH+ zu=qIY-p+|&VKY##T}YccHS$G255Bb)B9||$;V5)Zu7A}>Z8-AV-QecAI7wCJYWBmP zzBhG6KraCZnHQfeaXeQ+v(nB(mviLc@_ltlE6~(d7k`g4HIK~svyh5k>$#xh8q>Jx zWE?v0ktA=!EM;~QxI@`c*lbRu8ko5#BDW&ERW+L5acD%^yo=+1ukU9N$NyM2r!0=U zfRH+xn?x(be8xe8KdE?azL?3Ww=nqnc^P`N?n$%N2Ev++zpk&g*DYc!(v7SxpW67rmx*w6t*BF=@^?M)T{}!^oK_uoL7l7YkI_kj z^r%1m?$HD^Z8|gmGgw+BbM`xa-UXwE`QpIuAv?$B*M;^8f(cS3ZzPO`@CMlp7cZF2 zilVZ^_nKb|%EfvLy6B$tm)(Jj?&ylA&^M(vcy?)No)@b%q3V(9#z|aC58VR|iXMO|36W+5!ZzBo1 zz)3j0ThTD7Eh3o}a9t|4$-u5tLA&7No@YsrwIfZDw6Kax4s}Y-TZ%+#n6{NXfbZ^m zO1=O}PV2^{yRn5cD?vic*l7(X1QD~>-z}SgnIHwQXG9pS-+^cQ0b7E0>p;4(dzLC= z4}OB6*j(_>tyD{ZC`>mMdO^d?x%s4i8ggwaO$FF90+sLvO;RS~OWyDK+WCrJ7A{XSh=KlVOp!*=-8{e zqQn1OVAXKnaL?HK5rfUS&ei>~&KqYpW^D6r&gbQsgNmhnhI)AsyVgJUJU>i&?AATD zkdfgLM^5p{OLuoQ(6YFdt$3G|j0HaJvX|tgk_AlWruMR3Fs}Y6pRkJYy$?nUS`8_7 z&X>B@`rX!BS-_ay`4yMSbM35UFTBnxOAjS}77*=yJ;wg%JJFEVCb7u1YgU95d+KC( zc_&Qjwe63#7h>uURdRJ}B;Q!Yd-C33#C>NGQkUJ>3vN1KPdJ&Q-oC86li*UdJ{I5j zYP|EFx_a#+!D+Xhp4q(QH3|B*fbG4m0A8==h2&ZbHAqc=vc;g6A~+#>Jxeihd5>E^ zT`)1-8u_x1l+u1Xv5#PH6I;n6N!%#)JtO;8S*$bPbKGQ`hwR#5ibM~3a+Bq2xa>Z? zwD%1{>zUdG&?WQ32jv?a=x%Tr`oJdB|73lO@<#hxc&_RCLz3Y;d%>**`6aN-n5S^n z*TV*q)I49hJt_Ls+yT>F$!3?imH?Go>L>ip^D6sGN5}AH>1}#PMc)sJ$zKzn3<>Rz z7G^l6MY!a$^Zc-Ka(2y+mR%CWPUKromH~}tl3r}^_pIe;ATQC5Tlu9NxCg%;m$rPCXEMZQ`xbj+2OKC|XRuNPH<7Aq z)Cu-9th%@{f*p(+IyO-+h>aHuPOj@XTy~8noSxc9OL6rS=GQcvXH_I_E}VVqvv?1I zm+AiP5M)|)u4e@(BeWaY;wzw@Z(t}}vp%8)j)k<@< z@!#7#0bPFjLxkz6vL{z^%=DSV4zG<>d5S8sMft-dOTpwL(omvg=6LC@ z^IB44`=(%eE^A*w0HQNLB_z+g(ALE}4Ntjv@a7Fyw4;eoX8ADCZHdTNvRLdaJg}M= zRC<*7e>MOTf7WyaNFBj6VdjC)djlQS;4Kc1>5Qt{HT}8h@Ft*(!E_87d`VKz&O-)4 z{91oa53^3Xw5-u)dS0|~CCko)3%L&z^`!zPb$tYC*Adu+3AP!DA2L5v#c;p9MKPv3 zL7en6(hvgTbV7&|g5s>9?Y@XUbr{V91$PNMXiKTuAiXiYY-*vSo0EW7ZjjMdU&6SY zfG|ssON{qWG#IRu90ghzzr#O;=*Yq+v-G5EKH}0zd7v5C97z6+A?a$mb8>z8*uh!4 zNJW9zXK2{C1)RocT!i(IxG{q#gPI5XBx}OVbMGlG-Znt(-Q+qw&LD6xV|gx~7nOGR z=8aceN!xhC%dzmp>b)k^W9*>i@~iK0hnvuSUz29B{*NI&%xQ5<ynZB@uM zAO7lk!Sb*Hm2|l?@)-l!vb{oBQ_IZ1CJCw~T5M5<`=2D>j}`Q*&(rCe7nKch3f zw6n@JMLsr-d2@SD@s5+Ce`xV&wYiVAWiEDN&MjVO6=^@#Bdh|h!>+F|AbKTW0}X48 zhtV`O}U{91x$f?2JpXhKp&%mh!O*I zvOn|ep!cjSig)6Ji6Z4S@kT{@EN)XTEbmsuFDxWwC+%A)XgU~Xb7Nariv5t!pUvJ!7g#rzG6#|=WbwTB!i}^<^Y5Dw$6+jZ|1{5c>VN!4*#9k<=t&2 zkFp#q?oHl@k5#Sl>2?QaVHo7jsX4Yer!;c7i@8K9CPB$mnFPpQmX%o--h^wjWV$=G z{492ev#zf-K`K|!^+m%YDIK=ziE(f7jWK%}ZsJHfHV*EP<0GI_)=pWsdo@v1Yhg1} z#}&|m6U&Lw6`+)E&wL*CaJ=5ee>^0!; zjdVVIGjANLSB@qb$qKAmcFa3V4s&Sko?6LQ9O}BF$Wvex)TFF=i#~Z@23yS2rl=!oK4OQ88Pqd&AJYK7&Z|qWM=iX=bSUx)N8_6?nZ%yEgNdKxue`YIj z#M65F{RiK}6Ak8X4^wW}OjOvq?71cfs#A7?E1qz=e%W(UzZcL()ZQOk&r0LhcbYhR zueR^C-3yQu{hKz<&=Mz~=Fxo&3s-MOYzm zw&*9^@mDJpXRuH^S`P{SHRGIC;>~lfR%ZbJbDZr@Z;PDEeMq}$nnS{ft0JyJ4r{_2 zTBbxwMB3df%qar%ShNv__tG7|qMxP0vnaElU!QK?&Lf8C)jNXyG2uAM2pX*T3M4Q^ za-Jp^HHoHaZa)mE0e|9?euupQGEC|)aG!cC(;OI4zudCc6D9o6acJ7}^C&@4eJ@?? znzC3ah{Z-u=7_l%oCfz52Vo2DZCT+HSh^V+hug5O;bl#mIs*;2t_^4Z_?E+y$8xg% zZc6Lt?O?aQ<97=P;!&rFlO(ZK728ObN9r{V91gBJVG`{f8~0bA-RKsGja*^YV6Z;_ z>M5;BT?)xwZl~f&p3x8wT7}sWr|WT}>dV2xn9+^1gGP&)u1O&2u0pH^{mipq^|Ezu z?$Jo9lwTjeMlOSFzQ)kaB`)Sq;nAImIK#sW)}M4I9mk-Sm?+FS^tAnqeW$&ldeWjd z*my!kX2R{j5@)ekUzNGK6ta!znESD9>4j=TY1?A#ms?u#mK=q`#{yWPr>FWZS#C;z z#`iKk4RGS>E76=c>UsmxNoj*8>ioGvH^^B$TYSenUzZ|2Sz8o;h-!4xuzXeYt04$tS?VE-)=VPe(yPYxG56BAI@W3|`*Ze1 zEhN})nE4q#WJ(B;7?u*+R3-8xT1M&zbfn<}oJa1EhH5rVxN^^wzX|Yr`Fr-Gj6Rnx zUs=?rJH%SW^O$GESBp}8U%!Si3Ixs7#F_noEflr9U-uV+rAW^4&+`#KRvUm>LyB#3 zt6S`g7t`m?v5kAZ7lP}y{q!oJ@!yWxiZwT}@Of-LrusEF#c}but=WjE=3#}RSQPjq zQI_P~i`i+3E?xWtyCM@+qkg1>4_Z>|D{L#3Gd$h*0g(z7!`Jtj3s>}^C1ax(bUUL? ziUMP-xfoeqyWf3W^G9Nv)yNxSWpH<}pYI}Bc~)%xbuc`j^RUa0FJwZj7Sqc@&4-%8 zR&q=Z?Dd+2ioQZl9=n2k=ytW+GUqYkv{KMQKk=uH(SfN)A5lEe+AGaYaC=0TQ1EpC z4BYZBOC^Gu+SU(JpsYI=@rRCXD;Fc*hP!0Gnrkz4*#E%o!l3xr?6~)XS#u^twoaqO zO-XQrRfnj&2u(wN--23V#wX2zddZ$mO&rn`TDn&{alEjq=~fQzN_PDM;XTgjQ`&H* z#h$Qy*~^;(HDtl*a~F?zZXqb=x;9!Dn}!z`-|D`K4B~y zxtBffoYR0Rrt}6rnZKGjaqoDe71H@TYAy?Jm%v?daF7@8Vx|4%)cubl&-U7$i*?C9 za%tJ}7n6I?w)}KAH4fD932Y#_*HK;RI<9DsmG2^1ukxB(@Loq}xi>`hq(qJPDl197 z^Q);q1&r~eiceBp#*F6BE(g(6##g)^AOXG@x-TI0R~tF|1&gvES+>$;$qSq3SNBv- zCUS&EoxKXB2@t>yAHQ`S)GIVOAtm)d=R!rJV%(kC;60YhL)KO=@$lr2+22a7HZ)ok z8H0zH4tCp93m~i)bx(#~q-;sn+M&yTxW8n^F!D&QSPhBd=W6}Zr8%dw=%8C=+X`c) zTUp*uzte6>!@-W$RTDwD)0Ke0DpwK4Un0OdaU5FNfW^PP z9<2aeAWznpvsmqcD<`mvzd5c(bA^&Oc@ZqnGKlHNOn<+0OshEyVvm@AjOpIuB!tre za&_9Ruen_BbKjCb93^wixxcm@7>v0m6D-WMg zPY>=wC^EB6K=&uthL;&nC1LQJWoUGk;rHe;z2JngDMv&r`k+x4XB|{ z`dzIsQ&VF0eBZP5p6kZ4Z=MyUw_lOJ4pF6z`Ml_Soc1z7&0zC7C`WsGwAwkfVn03E z11n_sZV-zHYJ+gFz%y~rzDd&*MvlsLTIg$jkUtawN!- z%g=%QsD5|N8&_ss8cg*t8GU5AslH*Fs20g!nywt{oM7(vJuX1~N+E(A$pMo_s4yN> zi3iqDda#%MDP!3O(}oHrhy2oJ3R@66sbc?f_n^bG$Pw2`k4@uST_we>Tk6)R*$fLd$)?HCqU#V&vA z6zo@*%CNQH+_NcnElfBGM`c^Fj@lF zKticzpUQB@F(?*b=YbfXgwg$}@`PvsRh~{CdYh9y$2edSR6~i?I(+q|OUyLpvb=s{ zU$dKhD@x^oaAUeET}UJ`ok;A1Ju!TOX;Fj0 zDBeI0MjGw->SiiFS_5VsOg#(2aLF^FRD=|W-#7s;!4_{D(%!~W7+Ofd+316AANx7N z9e%BNmU1NnPgd73cYvA&+^YR>oe0wK6vSg%h=MqwA9nHYe7If&-JccV2H;gzAhCWI zW!x}}`1!nNYGE7ICQIq0W{>+vt6@FL%1yTV8$)d`?d1)pg&Xe5{;LZY<&AqSDr8}0 zWxMAz=0t$5{FFI@VT$SoL)zH!)$SzC(MeBRddoswlk@+a1tQMT8X$a&b?FIjSW zQEW3$rcHzljks~|B+$lzUvW?4zq4)?<|LlpH(p@i|&Q|kpAThU2cTAMY zvD23Rn>jwx-$)6v?Qn*CmRjVcE$6uZv4Sq3i^P^$1}BX;&iZpd|I&D##DW_7$o0-C z)q%slKw?lAH007?h3LgDh_-2oC`|8m_%k>U%U`d1!PN_|nD>ew-Hnz#lbJME(U-&> z+PL)6`zcBg^_vG~51DPuY_$7XnPtWIC?-HnTX0-)cmEs^%kdom@*u#TaX7KYCi9+0aRxGgf#H9F7JXZCWP;a+EXt&F9x<#UoUE z60F-P3mnI9^|e4kHx|s@6jw#QP6Wnb<1+IxZ$4)x>nc!c?Xq3?rVw%ddMJEw1> z6Rx+Pe~RumDd=+!tlK9rr*vMqBWtG`S};oPkWqtmY<_33$=nB?@ukXMvptzYA5EAM~P&!LLF z-yNMw7sZa=ErtUX2J@lws{s}M3x2QLt+Gr4&`*<$>J&S&;Nl=rrKE0y$-VQ!j2f|M zuy+nHGvclsq2B6F+YzE3f46@AFQXCm5Cb}THN(wyWL(5G8ii&!9bC%diaIvZeTi{t zY3bPH2^W9zqs*klqiy#z;y>H&e+qQ|`6aql84s9{_fzb`0bl)qx$y1}48kMPF~`~T z6Y0z>J)`Pz?flt%P2Lzod<7iZt-gh#OMun9ly=sESPYM)nI@(*fDRimlg`V>G+H?U z1yzOC7Ly`M^#3}gHU|QKu6*0{M^^p=k?BvFuQ@q-*_|zCsHyA?E06(U)%LYGLS-{4 z+Hqn!%CtcqHon`#ciF|z(yCux@%*8`l%Pea}Nc4GVl|`3$O<#d3>XL`wNCphBAowtFG?pRk-Xi`v^52ULTNJ;Pu` z&*4mMpHf+fXEJdm)rfzm4`B#`q5e!#SQg!QjjMd^bVy^+akyagM!?IU$;X?%s8e66HHHrzg*GN8~_nXueiZlyZnIKuea zi{+$vFp4e!n7q&hR7vgBGocWIZ44^l3u_4dKWDg{Rr%*peqXiur@JV<`?s)%Jhe0Y zt!5tY(g7)z_dUSt|L@5RoWEMFS4^7nNY4DYAb}0{N8l6ohE8eHCy755r@U;7^-t3T z8U15Q!=8Ho30vEoKoAD{EY&@<3?tA38b1%46crEhow~i|2)F-B(sqH=X%swGi7dGL| zy;^KoW_Jorr20C@jmPXPm_`^Fn*TP9i+^q>MG#9s;i5_We#v_`nZE}+iEIzve?7P~ zR-~9QAJk{urO1r*IU!%VbV2)@CC3~3 zG@HgI$a}uH0~29udoV7i8mGqGNX5&S$x#UmR@xu0?0t$AP-gsVCC~r~NU%`Q;k0jS z)|rHET!bFk`Z-EKIHCJB`AFO3~Gh2^G{WM;O7DdOm9w*m;&v+-*vUf{S8>-cw^h@i*=J^)u}vVLd^IK_*l zDwnFuC@`a7ffcQ_O?pzJ}2Je^>erqyaY zENrc)E1Z)op#C@!p>Rc3lf)6idPC)zN-3ajkv&MXR{nVfZoSYpTMioC#JF^eo(0Kz z37rMi?qFu|^UBkDKDkP|hKb#CyDL8_PLFTSmL1UXq6_aEQayFqgAS=H2>Z;Pf`gWX zU%63-9G@?iQKCheQ=>-ER0PXPJSC*brYY7tY=5ek9*aw?B(lG}vMKdmSkEA%41p{F zKS+dsg<$I5z)mCnKhoYap6&nr`wp#Yt2L@bOQ}(#cBxSj-%?doRH;qOQnQg7sSwnT zQMCz*Dr#?v*n$|H_6!ngM~xV9Mt}eRb^U(l`G1_(jq7IaB%kDS%`tAAwB<24 z0Xojna|G&NMd~Vbjf@x{u6ePQy1y=GR_7w;K3@6q_X+xkz&R{vhMJhf*r}Z^E73`R z@-z(H<4fFG8Ss<0bfN5MSzf9g*`0(3k|%weZywDLWxbsK6FNZP*&Xqw)ipnFMrAe` z%yU`8lJZ+`(RH(LeNJy4_9J!1>-nXGVN{7cilXO z@|}wn-Oq?lS6+>f7P=@^X`wer=-Ja>$Juv}3=LU$r3Se&+rEhi4UXWuNcKwIzuIT0 z{`yvC1-$N=>$zgz#rL+0zqJORtaH!2MnXp_F|rX9%vG1$wmtUr{aY^P!Z=4;RW4Ce zXyUHud@t?3VH8uc$%ISOECT)A;S{`k85IN&o93iGfmDA!RlT|zpha~Q|C=s3bRGjR zlmX8EV|hzE%zhheAe$+}c9$|vN62t*{Ao@O9bkT&FH6pi;EGWs24eBE-vj|C#}pa- zs1*;5b|ZWZO4J6XsvMU5+CooVJ~GNW3fa#{uE{D2npF+yG%1pY1x=&`<#ZZdj3T|k zZuqH}+YhD3)Ysr|Zp*+Bos6@XNysj3`IqzNjX)hYX#LPphxqMU38!J3lxcDvUdVc; z`X62Uq@NYcYoC%2Z-xB$=fs!X<=^P69r;+hUX*X~A4)ZGHb5~4G>BQHPlT2+Kln1v z>T_1fjow4>Pq+t7GC4n1IQFHapV<87?m>*!uO{{_-@_WOiS2AG>J6Lu?S1cV+^=N6 zngu-vU-9GG2;lnomHK?9kPx^03FCtKf)T1TSUehi5%@%I^FnSNtp6H_hh`XW*i=ZR{B&hw2(q3=LD|C@lJ$ygmh5kP(jX>$o|`qhr1 z#$QiNdAzJv|8sdB2rnaE9@2G>>~Be4QYM9o*Zu;YkJmnNG-!NkZpJm-N7!5asbgFa z70aK%@D*dpq5^!#ktr+BXPyoeia#*`BZ(z{N)Ya_EQMz#p&|X69gW!xm+UAX#o-x? zsjqTuBUN5)g`BZ=$gWh%FS(J)WRgUTCg;}ZV#ab?-2CDc^^U5%>>Jq`ymjW14U?#G zJ_S|x(@ZGY8R6refSi$V%J}5mmfXqnt>w)^s_ngRLyY8@Wp|0>8>J4kxQH&=aYamb7v?iXk%e8BQAdO2{YMuT6An?Rj>M9MyH)yC zLxUQVpP&*ub3f(DqxYftzS6|R=w|skE~h@TXaCItaQ9|5yT6d@*jeSW=Bse2SVW-q zzJC400em+3GHR%Px%;LfSa4E;!S<^1bqnMI+5VHThOJN+d-o4Vq5T1@I}}`+h``WA$^x|ejjNaF z$mxLmqZ~b3K-oAntYLmI2B}o~`FyO;S=r$1-t%gIt2$g3wT9Zh(EXKmv&`JDkc`v) z=}kD^kj!x7u3uB#4u!PqSfx46rNFNEi0Pij)B&TF=&CvtOA>UrhP*`2r@{W6KE$Hu^V`^$p*a8`ycrxgUe&4 zBsS=6w&V-fBG2@rGRO-5(K8b~-imhf?#6L~BFFTUZ~c$059FV|WqN;0(88paM56F)se+x!<5Pj^6Hb>(;(z;=2`#-rEC=ECnZRn<8X4` zQP??qq{voftxslixHu_ib1vHG3<(nB@=0iO27<+htM@C1_u* zv|AV#3;+$*{F=;}C4d)~{dw58NBIgN=ebg=Te9lc2-ziPK!sB0a=n#v_m^>1D)zNsuCLVj>&C%(fNbCfKG$WWWBR;?581q;%YIpY?ispl>*FftfeoTB zqGb^A$~EcuErNi(KJq%fP}|M+dX@|(5>#6Uv56bYTFSKg6c4C7(I7W6}Z@i=8g z_u4n*H5&`gTSTadVWkWFl1A-n>EzQ&r4LOe6Pwr-ysM`~tX??7XSww5 zZmxlxb>)LW&p!H<6B?z1`!58Gzi=hmM#i`b1Ca{9ksnMpLws0c`;&bnwyOQJbj=@A zn6nTQq_AgiBt+L>kna5_Ic{0}WW{g*$lHh+nFVrWT;JH=Td;=hZ{FYTaWxA*Pp#Y9 zzuE=!&R#Tcqv{4w#XraoJRZ^bOr*=F@c4hm942>O^KDuQ^?b4YVwLt&FMEulWFVH* zVN2CkZQ;2$fY_nH@JtUE4g<;cs#$sUdWf<}5C3GVtC5eI;JeufBPg#=#2bMx!aEtp zUBOw;n)s|GfenaDdF6LCXe|WCO=t!W1=Q7qY`QAhpilAqE&7P;%k4$XtAsD-^)7mq zDhvJ`-!EjY}zX}S3*_*Sv=!WQPl=yljLr!?kXb>4W9I= zHg+2L>-wX-J|ES(61IL$4B^PNT5j>@@7rijXy z{orzqZ7kfZ-;4SDA8=nElv{TR7AN!#;sZJ$Ug@~4kx(Dj-7}$uj({(XI@m>}DMPxq zl_QjHF@87P@txJLOzga#!4HT0Sl#U{lGLJ&-Q~|(_IQR(MmUCBys8teGjF)4;@A`k zf2v^4licIrYp}0(P2)EueAMC?y&`LAZysr@v94A%lT*Uhbf(@6465x~H~j)+JG$5q zjxSBYcA=q+c{e6rpG5g(b-%NcBqdHyPWfVAU_Ndj_-NCEy9|4TQxP@cg|-_;i`Gi@jh-Nj`^7kkDtF2_z_54XS@Ml z(M2Ql(#YR^P?0q_LpiGsEy)%oqKhx6gH-5kW*4GcjjK85FAp7{(;hE^&076>oQh>DLB%4<7QT0c-Ii<+=>RNM3?JVWuT0S(p3j~ zu;-v;7ciDgi|KqqDugLTH|?bO-oGzl%3xWEMQK6am%$l}I3`lmk;`1M%q990oxfTe znd>k&GYQMzHGpOnAF}%NeJi;$Bp>9Z%zS@XEE93ZbefK^ww8=8?k@Qg?PM}g_wW*} zt_ehFrpUEtOQ{M{=dhL}r^Qup{K=L}^ySe_o;1AsmlrF}BfpwR80|?0=<8W;ee-z; z4jbVp*_jmGtoL9=Vc226dQtm;7l+#j=8uNhL@mGvk3PIjehcfTi0^S^Uop@%9ziKXQ8ewyb$NeFpN#?P2!MK|O@|521%3_OUy zl^`mE`sCY1_IXGp!`_&M#RBE)uu6YLUhv;0zCU%$nS~ND1UX&-z7oeW_yCwryJxqk zP0&x8Q7VigfElT}HZ%f%m+CL*i|kSvOcdl)Ai!z3TWuSlA1nYm8-QV(7X0P(ex`e1 z>wpJ&;}x1*y`{f`#o?Bbih9N(A(QX?(1A^MwF7bpvRYo3R3pU5~S`p#mb-KEh7A zlio*b)fB7XtNMV=wX@P?OG4s~T+)EFBdJh2W<2KVz}_e0yC;PR&UFJFHn(T!J28BO zuR0Wt2fTpSt<~kYBiwc(Vwo1Vv1ex)N(-@e8uJL!Sb_9w| zTGh1$)vUTC0(I<`NJ!?>?r#{<{h!5y)d_aWe0Z{I4O~68yYJT5^qCWxe|JRLx@^ ztu@`Z@@jQ@_z&10PbC({W@N6Da{uVnlt_V>k5#%L3tEeui9^S?e|ICo6l_cVlqvj5 zD=?Y5f`O15ho`fQSARW%gX(5m#Ue~L>F~D|zQ&#&+9EpN(Qca6y2+mG*p|7o1)LDP z2W7qLq_kyU^}}dE0a%ZPe;_pbR5cx$UB8xH=vEeD$aH&t$kX>rz!Y6S-Q%??*0(83 zNquLbF~J|xW(9_fx^j8xthCLm@u|#}ciJL@MFj1>dwLiD^xVq35t6Z0DaX$qx#kmn znA@3`00Td@tmLRK+0?NXuZtWI=Bgz9^0M#Cp8T?Ly^kTi?IAUyQYfYaxls{* z?o%|A^}_7yW0&noA*Bcw?dgq$oU|jIMQ7sj8_<`Ke|Q1%`;Qq0^_rY+a{`Y*=OhMI z|5%OSgFc{%!E|bRb+D*Zp1TNVVxFY6^|O6dA3}o|P;mf|05(`A40Iz373%2(UxH^7Xs3;LE4*zCx} z*6QBwkEL)fCzbvS#3H{mtci^!)X7m>m<`i@5#dxb4$+EJr>>u$XkC2_#)guX-IKd#e31P1|6-jQnZT3 zDh=hj>9(bhMfiP;^&$MmRS3V*VtWT$m7R&_ft&bZ3Y!{-Up5JECyb*9oZo=8AQp<3 zy)zvsCcDX>oSR%cL9F0jk2WyR2H$Sw+Ha2d?fUMB(v+@UI6^$@Z;QZ-%Fu5yDFqxx zh%@I00IAR0{wt>)Qr0YLG$=uRhITy(8+-B$cMoTfrSNS|`Ba=_3m4xj+}RjGTLnTB z9k&)!tQ^h$mUr3RT@hMu%a-YAh8aIQ&y`rsrMMvyN0*@BD?8$6n;7OzgSkg6)8-8V zDc!a0-CjJ>CcC+9r-mXF5b(L{De<-ZqnLM}i-64bNmOB^L{0YM-O+S<+ zt7dmfF(#t3a#%Oml?W>-t~M!Ay3+&^NJp#D!b%2Ox9o}nl?Ib*SLDKSrkLN3d!u}S zZphn80WT{WUv524(dMo{sWatcj@aubX3h!TC$9VWOOVVpL;N#>qz;=BoiO zf2fKLm61$3?%>W4El0eBsoGiX#g0Sbmz+V5Jd0H@mJ(5~RQTzOc4=dd;xHETg=;|u zN58w$sS}F8eBIP>9eo~1J1V6 zmV9t$7xPWvPNHh2V11lV`tRlT_pwz}!d&;1FqaRv)$CafH)@^e{zKA|OuvK+=LG(4 zTC(@H{#ff&?+i8ur29~Y(ritF4Pk`W0|y48fE&#sZ?`h#l~p7iAz`QO@&YYV{cF-@;J`>R$KZHybV z61*55$2~HuE)w6I@Xe9TLf!I*rb+E7xA@;uO3nH+{=KNoYO!ieF%jF+% z^S6*BjpMjSSVX1qV=mp8CvGz%^Axz4U6Y5uK}7Q6BfJ~%Ib11Y{sULJ`V&az+(sXS0R`^*)iT-;kOeyo1 zitg3nxRUDMP_+WMHe$A9&l~4K4s3P;fe*O39_IHK#=CN9qdlS0Pi#&u`Q%gB5LTnf z$MDrrr};Jk_%c@@Rl1lp>gE+bB2~R_ z?sV{fMX?&-BE)2bfyOtG)3o}NHf2G7bS786#jgCGQwPDp>FvmFa(o=$s1z zF|8r651IhVZsspS^M)~yZpOX8Ou7-d6SQx^3Qr$|TIViT0bPIOF2DcU9>S(x>=C2| z2iG~M%Zh-+p8~wrr1d0NJ#Obb6*SG`kl`(>wAGu?bA0_?oO`^l)N1m(zN51)$+xF;b(RtLv!uc< zavP36JFDs@e zB0b2l4<3Eg_WJTi=y_Bk$LHgY+KxlNE{D4pxR5H$5$$ML)s(&)Q+$yo2 z(+B=D%EvKggL?7$WE16}>S(hqY-)}|yu*u&%Zb)D%;JAH-bqyVG(`wN*7QcBpna7& z=CwVKcF$`>4vft*psGiO+0_dXAj2czh@$1^n@)aiD77v_!mn=T!Cnr{Cf-Y{dI`(# zA^6As3I0BlP6#JgAuDTOoJD5pkcV~Z5tZ5|G`S1_uhi@Z)z^ruHLRpLc0FLoBu-jp z2z`Ov%6xyKnNYZA)E*jBG4#Mcv_Yn0BKfi{(>(p6nDt|@mwVRHl4r41=Ggh5``3*U zPA*ha*na1wgfa(^m9-Erd`wR+=;O5qQ%Uy{Q5x2g9l@Ph-FMjY-#HIsbNsv|cz`(4 zos%1Iy@4WpEZ2`)$b3@sbeQsbjB36@@0Zx9Q;$A!lR`Z)1I^{P zun%yo)80qThD6k2ZIlK{nUuUoY{eDdNOE_JpMViVPQHPQS`vn82>hKQxI*LGDKO9t z9W*Dj>D{r)@l#$NjRcRj%$@xBSUK+H{5zPJwUZ4Owz5wlqzG>rQGnU~7u%e*X(eWj z$F5_tQ2|s&jDw4}fJTFQ$TGh4moy>9GY71lwV@iwtwT#&wst+&Z)Db4cwY#fvA@%h ze}Rwcu13o};Ilebg>5=eZ|N|Ktn(sn{4#Qr)g364o*AneH-{}g^iEj(;$IfQ^+ToX zLXhU`<=?Tal-oI0Mw~c|d2adW4Vcx`jiN%B(+4iyDfa`G_9*T;*NGRa`%T3g)^2*b z614I&RqR37cMNaT#(#6-Y-*=QMhX)h7&`QwVZFyQ%nxqZ({QC+R+$FqTU}(Ver5G| zk0Jp#zCim5$o2G7NY$Ciy}z|sQ-3v}$r#^eQ;m}2P5P_UEd~BNu8z^X(CT#sI#gCH za|&NIiz8yn}_>nJmSdH z*df!+b%^Mdp{Uk*FS1CZ#^L$<%+2=}VZw7>!b&n7ZD8~CoysMKj0083`WPLb5?FH2 zcTM)eK-;+Sg8E7u-dG1l^($Djec(yINJ_y<>`7nQ3e3mFoIxQZ7kyL#4^Qxjlm+77 zSv>M4plpbaew9ki1l;_WT(8LACJs5R8t_DEms(!d{}5o%n5}%KV0F^wLu7>v?}Fa@40qMC{iXsltJEhV$oR3G*V?!}^@l&&P>-L!zBN%gsM+Bv-kmOY3!8Mm0c73AfZ?0@%kqeE|BLS;-7Nq#x%+Dn zy?57BW*iuKz%Gm%%|)<`68BLMwBm|V0I$T|2(9{aRQcwrfzyh}?(DzeP@7z%7{5li z%g`A@Xa0!JYoS-^Jz*;{Vx;>i+~x~sX4<@?&v<>qQgPfET>Z>tWXqXPtylj8UbIU4 z7u$BkX#nsFDrNH&+V%bl+FdUayiKbH$aIC$<2gyE;>+4p8CtY%EA_tmd|jZ|n5AWW z5_-narCcenWp~S!K;Pnrf$yM-&H>-vtvExx8FVUA{+JkW1G)AuIu^=-->_SUQOPW$ z|DDYG%Ov(^x-S$uu4^DMoB)WqNGX#e-? zh&i(h&E4gRA(P>CXIwX?o6r3>@7C+ly1rjCUwQ+%HA?KAnwLTXYX6gv{6Y8&DlW`_ zpxvZ)DObe$2d55ATJ(K}T#r`}yI>ii=_#cI;WIQowOtw6q)SRYG79CO{{tEOzww~| z8?1Wg?Che*#rvyjmeeA*?evy@y!`*((o+WaKat0Oe^rjAelk@Do_J%F`Kw`QKq!cR zNb8i6+t%cyhH>m7C|k|tKLxq}^XvY7#Z1jNY5?l~nnHO(mn0RT^UC`Rr?veX{rrEs z3M$j=Kuyi;cph$=%QUWe436PEepVuX-{UXJS%DUM9e%mt-^Gsq2S}6#Pu0`^7bW-q z_d2`)YX4AW2d?8ac#Ql02FUnnfQS(<+^|tA{r|9e2%ygXIB2E301S*`_FD`XwI++@ zzwhztKZA_ws3l!D<&~aFT`%$7U6rQNXyyj%4vOLa;4yzjM4;sV z5Jgn-o;iSxX7u9u{r}RR7ZYbRo*O5)Tw#5uv|iuA1@ifNJmooJ@wOH^^5q60KmR!J zaKd{%>|D)d8lRU>x&_-zMjx!_573A<`5gsf`;CS(ISe)vY42P>DyW`K;;P>nHXG<* zQgOLSYkQQwyC1gOs`wxO^;6#qstNq*T;R{w(?OMWmAik~*cVUd{FWQrhvpd_z8k*{ zrpKc_Gxt95m9KY}q3svs2(X!6Ht6XaDk)U8C%>i*f7 z&F?=f%|w3y(D-vhG0N^#*J+D~Dh0v_s(K^8bO7raFXJanOvecV~p22U$~>t5~Unkf++FAAoguXT-Y~$$^-R3} zc~%AembqWC+!o7ds~AB6r&1Wr14aMm80fgr%KAoNyE^0w)eC_2#itCd>M--5GopW6 zj=l7!55p%qfz(8Mjq$Xk;| z$)(V2rYzngC$9SSFDp@t0tbh72THH#{$mZ|ztWi4<< z=#DHGT<}+*=QZ|d_3$XB_;1!zVaHVdM!_ErX!pjL6n!ci>HjLo)qHqrHxT&ng)9l# zn-7OA2xMeQaVsNkh}PjS8D|Llj&?fA%|E@{B$E{+Wd0u}bPQH@=u^dYxcR6EusJZ8?Nfxn?OpZky_U?a$Og9#rGD)dz@)p&AAH%>f}nk0Qh2Jnac8+_k&Ugf6t6X$moEkQ{86xB%y$*c2Rk}f zc!tf(?UH(liKL)pYq5v9)BAU~9y!A!Zf^IjW+*V&gXDHQ^q4i z>qMXtM-awNGWva>`LQSqzM1se{hh77^kA^`2iVD_c@{~@iGm$m>EgKo$jttWSBQZB z#_a#*;|B|Q{nVIz`Tm6vNb5NO<1}wJaF^3fYQ*xuOQvq_UX|xITh%eD^%{Ei^1V5A z#4Lp2FHSlQMhqqo)NoE)dlk3*n1pZn5p;D=MubWJvq8#)T%zBg-$||v(q+1ytWAhD zI#z2M?1CJ^@wCJohE~h|8yN~e`Kf-W?}5|@I{BY%(LeArve>>k0Ok;w-Ea0Xo}Da2%z_vb8G7fj zyoxM98YSBw`H-H<;IW>lH?_oyo(c(%oL4>F6E$dOHIjLwx6(Qh^T_;{mt@g`?pEWb z;x_+i;rg?^5pqsB0YddUPJSO2EJ74q`#v~CRv^I&Eqa+M<7_7sC29CK%GgLAN^cr3 z;0ArzZ0)XvO%HpBdAD)_{Tkc{bFFT#KA~63(+#BFa2 zv8Q-|%o*%WDYHS(L!-!wos(qC31;6v-hK9eTivk%q5Cy|OB>3+{)9quTG{}N&AeHE zqXcFMvFkaMc7h;iZfiIkjdHzN%Sw;UXdJrGPNjuInW-}~yp8tLZ*J4c4mVEQ-mydb zhojzW{2v+$4xNE(vWJEzCLo6pd>N%3(zVgFYH)V8aATUS(JBLQT&Z|at}wF%JS}YI zqpn#)^Nm|~QElcw|JdqXxv?}tuDP=apD~1ET29=uElrvvT!1LKn)-VOpTwjRF{3_C zYqFi6N4-)SIqr%1Hz=x(tq0~OT1?VOT=xGqnOlX-W0Ht5^{dRfAu3n!WOD{uKI;}{ z+@rH1{fBA%+KX7_2~qZYqN9@aTo<}bkYA;R$G_ss7B%Orz1I&B-&3q()gd()gK`n# z{V8fcfV!sjZQ@qlmn6~SM+(lPzxO}hvl|*&)V<~i;UIe6lYBhlQM6^Hp2+}Oo5Y@B zQc9MD>2fV0K~^!su?LcHW71U3^FKAEyALk4>Fib1JJ0;$$(YI0-NMXaxtdixD}Jd+ z(q^TuX?U*RGe4W(X!8ZJWqKQaV|d5|bYXX@Ie4eY2J~__*Qstv(le7_zG7NBRyHXp zIw6DkoWTbk?hY=y58yTeV8|?08{f>zQHHbi-_?aXnRwZ`jJf_klbN+N0k!xtKe5%U z%w43xoWsm-mAfMrU-%;*RVfq(=_;NCVEfu~wE_Mwo?i)A7zCcTGpR^1 z1l~*N`u1e>!blZNc6!sW7J&x0cT`4Yjpi8{Ygn=!>}< z!x_hK;lJAI_iY?EA7dNVQSMBB(_pjulk}t=G1Tj`ZCsny7*^L zDXO4OZu-cT}?<@8z$tN?q3Q*sBo5Q8c+vAZw)%1ExayP6IBUZ#{i&Mk2wfE6 zVp2mr&mH`2K8MM6`qx{nTt`f!Lb7)a}3DZ(#>09S6}$uAymDm_nMmH z4}O6hj7g44H&M}sYeGX{7Pyy3R{mQQvmt9zuH~mrGfA^vstb?rVz(9oYIljBiMp)P5}P^K`!(@49fFs5I449NVygQTCS@C8EUX|JZg@T~kv;eJr?yWS zXXIy)>b_|AeUO^7MWERcGC76kn}*5yFEYAZZ}DlhyW;nsVB*sf^iJGBGoSZ1#@cTV zktek82z`BUB7q7#Y^bODoiKbW%>uZDB>mNT4L&dSD)@X|rMkib4;do%H`lRgsRJ+` z^JqBUQ^TMljNzZ5(gUHYwfE^S9G{`*m6c9p+a(ulzHo6+Gv+a#sovjj{=mB~=FHtT z`3$D^c`c0rHNC3_gLG}%i^;(^dxM`=E~`Jcl!!<#p^B?r$rA>BKA&QEbKodbW@>!+ zNY5t5X8~V}lEF*gF%Q_qyR2_yvvM(z;*#~oV{)X+%#yaZJk0Wh{g=+Rly=^ccer<< zwc0ovr20*gP(>Fsu9^zs!4xsnx!sQzr}TZP{u(Ea*Ml&k0;>bA{3bB4Uq*REqgb>V zgb;CYh&hc4z}1PujC^mpPjsm|3}3&wUD;cp^^4CqGWDJz`D$JkLWT7(tsSv8xL9m{ zmiY4cunlNEL+11mY>30Enp<;~?W2FKtY%e?7GE4>2pblZd}Tke4S?cb zbz46NR*z_8CY19a4Jr^L@9KzDN2)T(ic!?SoWSr=RYG?YH)^`vr7s zmpti?yAt+2>CZ3!vY$8?)En)QtLRF~dkZGlz16HK{1vdnnpXq+I{C^Tv#&Jv^`y<- zg&O6Enxo7kr+En5k2GYTpUpjmPbpug+shqso=rmrFx~Aobk_4mbYq53$wV2kk)i@9 z)88MF0lPUHQoS45+wGAwKD7T5(!&ed3AJK(VS3Bp?fzZ_-VNEi*MHp9|E9`v{2r!k zvQV@SeK72o9py5gGA6WX+G3fYNRDcdOc?V9?GpzhJRT!bPuhhJ=x<{G=``IBT|wPy z&$f8wUh$Wy9u;S!+5dfcVnE(%gTupJ={e#<1&8W?i1mFgFal#fMk z|4LCK`&&`YFdsb0aoI5*v%e=V6x@095p^4fA$$2oQx11T!QOus~=fVG;J2E4v7ms)H;K^<0i^Q$wAed1z3tu$?f zpdB!qD?c@iPaG?O2Rhtk)yX~rxSeYbKHw!-a?}1D^G7czAz-$KoG7}rogWH@l4gyP zQjoM)mbXX3nF1SGMg}R#3eOe!U>ftG-L83J(1PWqaRRMMjoxzn&e0*rc^7ebqZ_Zo zk+iRPc(F`>a=bZv5Le3)Z;>WieY{yR&0cqR+95)+#w4PdMe?)RApgswp>@_IU#~%4 zpU(M0o9jnCtBTygAS0h1*Lhgqh>I0Veahls=JxjYloh9SSI{l@BCg2!hxRVvBNy^Z z7vCg#+rIi@^gTAmrYV)j9#Ivi6gkFonj&9WQ*)K?cb!=W?xxDCChAIep#qVgWZ^Hc z!v5Gmh=kX?Ey+~KkVI_#ed zj8t1g>IvPQM3qrc*&jsp>$V`$4iAqroO1%I-t`Vr4{~l8IH6F7c9ULmzkaL$i)T6!Nc`jV8bJ=BNglUv+%hfin?=K0Kx9~36Cxst#y zRDh^kl}*m+;)Zr8R&85D*R7AZpog$)8?g2P3A7!wp2H)~xH|(`RyUHMyJlMCPOCC- zj!ba9uxjrTjj{!)@bYY(z?_X19udIXH8F8J$@S)9HkwG8bme1y8fi1BkF}}gzhq+W z(9;4}VBxt-xh&Kj192YG`$V9>e&z~oIi9{la=uAv1D1e7wLKj68u0+BEW^g!sG_BO z{b!LPVJz|?VNmlco@Na{`@i+ehZ?nwg+pa1c9OgB>u+t3xsu;B5WK$NrwmK|E!wmj zhzZBRT|x(3(e&3&YzLJhf3tC2*voq@0Q$nvc1!5Ip|Lc9eypGCB|Yr8PERTTu0ds9Q=eI=dEkRxV!{-nzG)UK%~B zcxCEYG3XqMmu$eKMkzCg zAv~|IpBWEsF$eW~hrAe(ZTodGhlKE?cWRK4t5T77Sn%HPH5tk@!g;xwt)|_wHj4Z* z$bG!M9xE`;4vmj)ue&MduyH)#4JfKG_Dutzk8=kQxZv%Zw2hUEgErButSkYGIjM5& z-o`h>`9j4eeA~n!2q;R#0wH!(D%RT9m64NqBiVzenj$`A?_b*~wsN4Z$vaEea;LF< z#G}HLM}I{Qf&MIfbGv8UYuC}+NUecS=S2r(TQPF-WoJneE7B5kB2zo%sE-vLzHGxw zPVUO+;;SDXeZd{(raxNcdUt#Qy5u7ZQ-3+sWu&w*5sw*}=&@Zll~@eKY8b!X4^*EO zTr6|aT}bVOl|Xt@VCir)`7X;DY~4M~-Fco6-$lJf_(YpdjX6wdK)R})OJfE8ZOvfZ zusiXddpN6Rxw}~Ujs@Z5j!M})1l7{7#ioC2<5%TlOIYb0WY83;kQEb!%Kz^DbGLCc z_t11fHA3yzj4}4WsECL?@9OgMx_7nQ;bQ#3qh_R&>m_8V+(W}bAYyBA;n;G(J1MqR z6iee*YHwR&W4a&bGv44jz=Jm1G@aO-{D_VOkH7O>Lx$WAQ!P#J7U$NtZJ7Nb%vsha zjfKki&d5cdS+*Plts5LHMs2ZEClFV#tN~b-z?F6(AULPsv+}wLt1cUj0;}Om`3m38 zw~*H_uLe|k^%4cRVH4ksco)Wf*!ci3uFY#fH>tg4N9v5^3F{ps`Xk_|r%@uDc5`FW zZ`wHiyS&S^6WC*VqdHQ>P{4mBbOq~#(&gAvBrnR_dU+_p&RE@5^?Fd!v0&|@QfkY(X#)oy z_uAy^(zDRml6KvQ`=~OB>2b-`sUZ74lSut)6W82q^B*>jH5Ls4KY^m5=^YVW!@*|t zNl;#N(S@^&MS|(i`-5Uj-AIyK@4J{?>_*bYFO49$xEo!7@uYbcA$Hj@JLu1Y*90EX z4YI+C=y**1)yAr8z?&;_9?~D38-D8G5eg%n+T3PT`2kwTK3MMP^r+Vi=4)_Bbj|WT zXuiY?pUE$Y&UlSXs-mI#;-`-I<42F@RKz`scGNJ(H3=P`D(SKm9Fn$)57+yelFUm< zHy7Ta(w>7oSL4A*@mR6a?)k&ZEk@N7x&Gh#)wykDVx9czyfW8|T#pqO3+1szKDW{b zq%Z50F0k?B`wULP+mcQDpJO5@t9`!+rpy5q?Dk~*!G)Euz_)brt|o1|xUuUR%0sw{ z-mGN5q6YM!w{)#ArlEF0;j0XI3bK6ix`iqMWDcm!>EC%Vla;Jwe7Axxlb^SCG#jVR zU5hhfd0tW?{3WJ+&{PnhQk69=j-Fw90)02dKJ9rz0tV$b_BN3{p-QXpesY1;Xa2q z`8#~ApmY8x5$w4C1;($ow(otMq~y8d4M<*0gNcy}x~OL%s*j%kmg>YJ3p;&+2C|TW z6EPJhW?XM{-l{wYKR$`qRX>RVG02%r z@6?uvLz22vOBbDvpgSgwH6ETb`iR=nDlB~T?IC=En*3^-w7tcv)#?)#SK!N$_eVTD zi~B&y{s*Juq6K2rZTbGuR25~*EGISr^PDDreK5)_BR3|>? z$d$!FFWr*dui0#fEZpQj(AbNutxc@0zl_jnvNRV%v<$5G^6q6&PV@*^6VPSQZ_Cm< zwePZIL%*KrHF~%lD?E*fwV1~pp;;{dhUv78mmdy%?jQk9k*Ry_4}5jyLE_%(L!S6Y zMG>D3kHT|`1OYQyXYC~M@0CT_e-P6E2*`L1=L1V895^Wz3~Q-|34G7*rF9L}~v zg2<_!U+))czorqMBO3jeCc#ldR4H2#v5_VWI3bi-Duhe<4&=GZ`;H){M)yKIwurMP zGcf$du(lE7_dzk8o>~1ti`k0mO~)$%Eu`_5SF!Mu_~$1}2Rl2%vYPM^kDJ$E zRSJ$F)0^S=Cr>XE_uce`T)akUKtS#x5MDJ8$h+nyE3xpn&B%X*ZZ^_~Gg#Xpw`MK! zvdFYy=QD{vghppJF^2RD3|9g)U3j2PZy!xM&CCsuJoX=4P0Gj`WNfsID2xX@VR&Y~ zbeVXx;yS8Asc^ygtk4yZfSYdleBu(L$fJ&+rds3o;*+?L3w4gn?9x9&s>;v9NC_lx zQ4GpYpxpy$(O5(G2n_y(>sRrc4~aG<|eZYqmKe7NpBC*i5EA9+LA1gPY=_&FyAw`!+vj@lVScKYofD4R<%k1#Ht}^ zK0oS4n6TxHE@R649l2-?xxpCFD*8u?49eDTQel&JqovSASx6gRSl5A#7DSRfip4YY zTN&;SWsq#vKDB(VZ}00QB~nTjyE4r-o3)*NBeLe_Y358~7(^ruLV0csR_cCJ7=r2A zzTZe3$^UN_U@891u`E0BSbi^$Nf%)<{l5r%&#EN7 zY5NweJEHrNdQ`)0v!>SXU~~cRMmIR{XBfA8Virjin)$mRHiyUf<={S-5>m7EL)dv#Sy!!x0HA>H_-|&|(!3l^+1Ywh_K7da1w>GLG;@o)F^&Fvb$XmEp z%D{o?sv~WW{l=z2Ly6P7vv_`MgJ3^vAU$uPNvO|1LurO1EPqzfKPbg=ClMt^5}*?fi5BXfhvNohW_PS1kd zZ}cUomVgqz`i4;M@ssdm6 z8q~pb@1R9Y5?n0x<@}Opj^iIg!5^?^oM=IT;USjj;?Ys+$h}6SZ@RSrfm`z_QTNrrG->EPudGv*#)HSg26(&9-@xjo1 z@g=!>I8Ho#$+%r&*xCp6L9{}uR9syOL6PxcOUdM3otC&;E~#cEjqY||eAo@FRp~d@ z59b5+mi%Z9>7v)rclg$&y1UE0fo2FzpTxtc{M|lZ+j(g~jgVW&2*m#6v_?+B&C5#Z zinMX+&1`mbZkG_9bymV_iMO^Wtp?M~pNZ%f5-}z22obzD~ZYl{{stFz(I%HD3Xk%+cngWn!uSO9rp4VbleCLZ)^3wujlF&!C~W z2|Drl#MX)NWmp^*XdKY6Iw_?7G{`HterQ<4$+q=HIHpA1y3T3kuI8W!nc1^XvFtEBu!wb-vFCnI`7FlTt?>fmE~H3>HNeW3X9m*aYE0bQhWfLgYlaniR22 z>>4JisXzaP(z5MReF^w)Ci+e)T`=mjN5c(^iGvfeA2ChV8N2ITOK$c2<7Uf3?3%Bq z-W!4_aWe}HoP};R!((B3u?<1K%SnS#f8=atJw}@=k~}lU@leR)o2*@tjX5XI@ShF3_byAXavLFMUD9>6qXKLe3}HcBF7T@lKuG$;l&LUFnf? z&udZJ(&zMHQ$3u%!$5xnnaG7;hH1HgPMr$O5v?aaeTxfB{qpDs#qO8ayy?rBbGC1S zcDD9TGzl}UoZdf z+`oS^^2#p+n0y6@d{uTOC|DcY_`SP<25ip_l$e5#g%;{{GAH9KF#d`lo0Zkw5#8Jy znjo9n4k1fnFn>kN^doLHR$|6Bi%;$s_12^XiuN0`+!8Fp?kqD;GX zqUL<#mpD(UlzcGR4s$HY1@-NMie}m}hp#w4V(@NC&#*wu@_rn)Ln2Rj~$L-NaCZD1-g1^LWT{|C)c;4(1Z zl(eI1X?!T=5HM-PzWXn1!YsDJP|51h-}SlC9v2{U4Y z!Y283Qp1lol}GSK*OFR+AWHvj%&6p9;kK(0C|!+aU<+B7lO(^BdE7rmUjgx9@WQ{{ zxRd)~+KRnQW}tq`7=APZPmg1Ml0M5En#*DPmm~RqXP#;Rc(>){HYW>k>63Ee3*9|4 z|G!%vUF5ak?>PJ)38#BO@bh>e=-bARuy`it#Xa;f#m&8|6%83|AOeatxh2gaB%0`P zF;1pprt;@x%d6k?$e6-x4T8g6#+dR1SN@?Q`(XRgY4?P9OvM%PcK-h&&*{ekFQp=? zA5XL;HyER@48C7ZN_O&>czK=WIjD8HKVcc41Q(Bm3loO3mI3{qySmKmKEwxV8BU_6 zflmIOn=5+fYZKy#LyAKWA)s(-G>znFw8@)y`Si3Inb6>aF$t456S+-2!3IxvNcV_4 zny{7Wr@}h^*H8e)YsmG*zYNZ+!I#KxHXbs~1YZ})VYq+@#c%Jyb2P2{ocpOH#UF5Z z7t;qr)9zch!lL1D|537`g8Va=NulMhcr=+pB2Wc^$M>*)XUmj`vzI6~rWpr0*b&6K zqYMT<{4Q`q4oXL{y><>0JUiV!2Qf!rvzlndETSdF>triG!#dKm}9h@t7o4S!_*q3L)#JU0pu;rqWn_MgATmH^}8 zI5Q^`=_)axtD2+4ky9U_|I%c&kwmApfX6BOle!4(nTo?J&t|T|$Z!m%8Ak8aXL$io`>(IP;HLibp*{uhktO79x)0kR zB7dI&l-;)2C2`x-dOsA>)r9w&sbmaVV}87 z;3;;%`Tv1fZNC2)|AgDP3xW+W+Y1saKkzJ9>#_<+4vnzQQFECv+iuzY02uB%%wh1* zWwv}S!aFY@9Cqc--fwdaEL00Pm@Qg9DPPMQtwq>B_n}u$R zf34J3Q5nmDi?j3a+=%5)2o2QCz`O!zN8o|qs>=aXu^+G-$Q>@>K1z{q4|$)ngg${u zMeWryg^~Q{m`i{yNd#=xOrq~JaRJJU^8Q!k$t}VbzEr|OIG0jJqy|BCKBSk za$JzOfB~>qV*j&7s^2y2JszdkTq{?BjHt1s8Kl9%=S=g}X^q8>z-5iNr7?HLV8PE9 zg0|?F8Hh((aba<34%JN}6%8~|jqzT5VF8@~74-;QNKyc5!R>~wW{e5~IFKj{Y zh0DoW7%?&$IXj>XC-;n6){c4`s1~hRDO_%qb`jBY$}jywOyt|>I}&OJhP?4`H9P*R z+4!i*6Hi)o2-_HfvptxhXge(%pWBaDJ z6J%*GmjtL=W@eqJvQ08LT%Y__-n7nJCc#oRYxU=J_L9w^&xjaH*^JfjgH~5s<^_E^ zgl;GZ3h?u<50r_U05&max`2A#{((PgN-}bz9{!(4fVsBk=(Yp!oLXJ>2Il0;@h>@^ zqm-Qu1ytDbTp$N&)COLTpzSd(?2^}C2r%A+Aspl%*xf0pOJx2A`4&0L;yK4;!%0m+ z=ljaT&c+HDvE+vN6hrhjD$JIU^vDUjOJcp>419#B6ZPgylO99Rmgem5kpkO4Gcdd6 z*5$91gHu{Ytne|Ql=yVyKG5~6we^CsUH?L%$PU*)2R4fwE>R6O8;n(tWI`t?#B*vhzmIQ=VDLMZ z%T-#R{mJD03MMPODnm)ZbA1bxkEntE9CK~le@l0woto`a{oFB=+Mo+)He?#bt6Kp9 zeJb#Kby}F(z9|X9m$Sm=3reyBif5q#L#7wvyZ~Wac-y2Ne{PF0hHnXcgPJQCDt5b$ z*sPE`Ylgr6!KeDBn)Cs)!h8hZ)0<6U%;Xf@{WEjoZb%Bdlbdq^&Ec9{Tb~XkRc7DK zcy?Z;9wKEuTCLg~MU2iA68;pNdY(lcCmOu0vj0=^ZKcvVV5{WVJi%7>a4`G6F#KDQ zESeZaPwD+&H? z5rhMKK46n{lbk?)J6nHNM&TzRK;^yhWZ&PXqpHk{7W2D!{znY8r%3?gwpE40taCKB zPrryFGCLuMY>xRT3QgAIFkD688}xc0;`8y$ZF6Wr5{_LXK}i4bJLFR@%QTf{d|dKN zsXN-@q3Ani$v)A!?OlXT@hR)randmTCe-IB^Vm2FzJ+6*7%VC;84IyLePOOvcEvKD zO@K(I;c{t9z#sWpKbsNV3D@0}bZNhgw*DlSh?Z&(+z)}xvx9Hx53=cno`NKje&1AO z{r%nV85JLCV|y@N+wP*>asN^|L1(2cqfDBf8aCfjzD<$}GcJcNR@=%Fo$|)j9lXSf z@I0DQif2lQ>M1m&dXem+ve1ehtrF}D7~;;YJB0cUz$5ZnZ85K?Y-KDc=IdJg9tZ@T zyGtGhMQx;j*}dHR-?%#U{S=~Tn!nm+Oqb##OIemgPBg7WMa>>$+|%R&cAXBq|JCuF zwN3R*y1-9X;A+Dqjw<~ZtMp1iD_*`wr7}duzs9AAqFx>3*noHLvBG`}SzOO)AmmxP zwh0g?t`WaZ2i5N0uzNlsp#OZkL$*~OT;8dcsM6yNYe*|LV!pqtu~m&-yp}PUx!-M& zXk6L3^hS8vJ78qopGfUSTm&1Xrpbg`5Ot!n3p#b9VE?G-T_l=h7QV>*$nuGTYt0YD z#-T{7IwUKO{8PQwr=u5%pQd?EOhj9c^3TQf*Oa_faPG&&iB7eI23Jlfy600N`fVFU#6Ob&=Qq2QAPb$Phh3$hAOC4%y&$faAC zy)oNxnp&ej>A18-1f71&mDlieEA40Zrl& z5CjrcytSa89{(`{>nArAvE=Di2?4vRO7w`D>~u-?UFr?yEhanneKXZy5n&j-NQthV z=o=6jwh0k0;;L4p{Nzqs2iwjX_8YF4Ds5P0Cn1~5Tvbm0!G|5M{?0+`IT`rJ8#))b zwCy8!KoKC5d}kr6Cl394@)`H}-3r00+Mm4b5qjn>_*0J{(p_145?Xu;=6gR2ZJP$c zL$ag!&u~#@Nv|S5o{X0M_nL&y;)=A_M9CV8+5<{$hnz>h&>37>bU!j^{#`5OigZ7s zZgms^@BHGKSYtny3BWMwH8e!!p zpm9=}=DV-&ASk|kN99nS_XHl=P4pjJZ!pXkPx7ifZ;VEEZoCilcjElU0`+x<4>i?E zj5%wTWh9-|gh}=uL_3e4LGRs2ed{JKvZo-lWyda{bMH2PyD!d7fVPbXxIz~z1@GM4&RKgr z^<^e!FD{+`oe%NEi3#U(ZMdn~J<6EdqAbxAufkNU-+<(@{WiUa%Zv9aE zgM`eDlb!c4S7guE8w-hR1`XG}rRjW8Lk`*FsUK~Zq4y}vPPMP9^l?72ch0{a>dpBk zv--Q-)m)*{lrC9u`tJL0K31IFF^m>Dyh|J6fE-#o+`D)E9oKKvxzWw4wQOm+uZEmx zXuzVWwq7*03!FSuf%zm}oqPCO9WsV{4JC~sx)rR~wg?f9@R5P@aRjZ2e#5m6br)=n z6ut}c?T23{X7(Z80L!XV-)FoL=hpdzYAx{m>i6?qO#C!=_MMdWDB@A7OF zkuu)R4uRw8To52fS1BmdpK)50mlheET3gE4nyK#^u;ulWw)X*2s3xQ$*6MQ7fz#vJ zE0kfMjJTKNlEQDXL%4rGiHFKi?cV6;%1hkjhPIpyzF#zMSEAu^k^QV2cj}SFw@gI# zt9CSNvEc05n|?jIT5ZFlyzXYxJ!MrLyw?d`fg;Pti>-DG#7MbTy(8$;@XT-Mak7E> zo~5cY(Jw)zfGl58{%MDgtXwz6;>>FEi#r_;;w-J?WjnM5sEgt@qW3Lb-`V@<{=WZ; z%5sbDk8JX~Rdd3NsKn&6d+cA5JTI|57gFx{?2&zH!PobG_zf@DfQ7o0*b=qG?-Lba zX&d+cLv5DH!d`3LNQ-aE1elmNGoSF;3jXOGNDtE=ThYW(X6v#`2BM680Z(&edUqe? z2N-|dGJwP#j*=ByZub)5FGmdOXRLpGfYUrqx$?<9mMft`Q&Z+qNK({R&v>jiY+AvD z>{b30y$ILl>Lt@j{NuKdx7@a*W|YU8Q)EkLcMI=l-h}yWGRqUD5ksOM^mPb!sJf^7 zq%OsAw0-jxvG0x!KX~_zh)UWlTlH$N1tmI(d}KWq9kBSbz};OIW5?(sl+UBQW;A$Y zd7_clNiw2bY8=UwJn}kzwWBs7G_{q!&7sJ4Q#uGTd)dK#5z_^Btj|k^N6lD%pxFu= zF`Wu!KHkv{CVyhqVrBQ`&Wf5YnDJkjYWVlIux9 zfiZVbjEdBjt!-OMlF*i&HkvRXHwQUyKCgzasg6I+y7x5?YVjS#Ktn{*lH#%g+lGoo zszd!Ny-ztG7x^A^8Qz>0h_Qm)-%#b@T^UK1?5K=ptpe-ayshKDJ#4F~fDs;|f1Vg@ z*+_3ObQSu#klQxKQ7tKf+-${mr=8BlX6070wUSa7!l>#@Nx@Ia^zl!r>+FVH`%@H> zyRXQ;$b3~kingTRbJk}TSV){y_eEoBGyrKIlK|s4bGLg0l35la#hFj%KE!ohlP>aS zJ8PZ(W?bc~@ur1BGpnGOtwQ}+p(%U$*TMaxZBres>KO&ov7>CWUSS2iVu?sk#I9Ub z@Qa4k?6DAQXSX}{YBGtx1Rw8q>%IcTF$x&tjfAG8>`TWir0NhS9X>M?5ld2;^l@v) z%4D_{$pKashOhaBUg0Ao<73LJG#te$M?d7dM0tY>3z}t_lK6OKOb%r0%2z#qK7PHM zDP+%C`_!9sS{u2Y*=GlXsz%kw_fQ&-S&A-G$=~s~i|$G!8D%!i!h6c_9d!>fr$Ib& z5)~t4qIcihLvK&@!x&E_&%(CvQ5%(>w!9Gb335AA0w)v;V+;n*%q%%f)YI9UP%`Hl zo=2RiJw=&SCOZt>*S3bbYdCqcn6n!cFL`f5ICt1LcZSbpf)8<0lk_tMd9w9mnFEcI zy#cu~hMpru^7P^IQE6^dYSc`DGf>FWimaZpo2hdN-F)rp)Nzt74=$5&PQP3u$6Ovh za+F2SK4ET6Bxb?EPJpQid1L01Z?S^lE>R5Nz2AFr( z2P7Y@tIoa!9ql1(Itp|BjJd^t20-k;+aL{_6wh49lD}Tx(|c3c3Y)Z1a3#B2_p~(y z#JJTz&3W7DY%R5dtG9CIXYS_VE`@jGgIgsI4LvHNB92t?(nQU`fd*HYp;>n8ndb3` zPkYzrS#P2s&puKu5DJ@r{vNzTuCe{I58IKQ`;9;;Y-*h9a(*o2i?Lk6?LLuX&pxZ} zNU8xFMZV+y5Swb9uYe9WP;fTrxX<~SRl7e%)=n!CG@Sav0&B$}no&WC{LULJ1{PXR z39PS`QgtMxfa_)IM4v*%Pl$;ymP6$7h4Ngs$b`Oap2eARk<2P#p#cQB^@3!>H223M z?%*YDYLc6&P1RI1Qd@f3mY`WN zhVF}x@NE7%;`6F#0)E%>+M%J8(mj?q_XgLa^4<5ZM=qa;4Qgi!9T8p>B&m9us-WkV zVjD-#9=E8}?NqJ5`uu$v?a-bcKWx)V(bV)ab?U{StuT&Gw5I+ow&OF_jo(();4BXj zhJTqdzo+oWJ;$ge{M4t>0MfhFTEyy&8V`pVFZr0S_F_5mJ5wOHvYty3ID{6ZP~Kl< z1%y|{30$k6PID|hzdu8r8wVB%=D8xYf*t$)laQ8aulju*VVIAv z&lb1Xdk~xUD@)+U7_mo5=SI;<4}6dKot;>RnnAi}#^%S3(@fLMk*?8huBq!w(AQ(^ zE{1U11@-zLg#{yme7W_zv1gJTF%$l#KSkj~%+`1ho57)Y+r!!)1%?ZvMX!^1@7>*! zmdQY{_?@eue{{`q8l*NQ;pBAdvA7L4`R}Y4|KXr%U9ke>FIDubL0eL>gx&51Pns?q+p8>;X)(I-gy7NECBKs3qwL>N%#qwpDCG){Tg-~qwy)xv3fJ&!cnelvyv%KL14-3h z=YRhm2PQJ&5&QY34{enSPh&d5>T!6i(IpslRQyBD1@;;y3x`Ec^%Yl#C6CJX$a`4D zLBF4whgFUR(S7I#FhbWG)9B?UrId>L<{d|--twRfrmE z^;h-Y#^D+4VxNvax`L>3iSgyPDp>&+n%jv_Z&^!cEv}RfB zrgk7DnvJCj3h#^8?%plw)4w*U%?^omda(@>+ISN5JkO4`8I_z@NyD)I^4Qc%a7=ei z?oCx0?Cg^~K~4*u+A~`-N!eyD8W;q&jT$z8M+D`_1OCtv%uT^b% zZ<6aVY4WCunQx=d+=_Kz!T0&;`a-Px{kzmva`5QuI?K!Y;R9T_R#*GF6a5+auIU8N zJ@LZ3M>)n*O74`a6B5L}XzC_oEEk%mX@^G~YE zJ#-A|GRc?1$}KH1;g5BQnfr2ND4-P6yBR|e{GjShPUhpnjN`-?oa`;RIF3xZoREXX zaGRT2By0UZzbAjFbeY^0F;rm&wCO>-z%9RR%Jbnv$6J-Z**t1r^m(-4WPkavrKV14 z8*(s81;BEc$3m%7-pi;M9yDXmibQ`gAH{~a@djrE`d-gH>J+nAeOuS!|3KYj6e%5? z1}e>misya&mfN#y)%MU~Z!44`7=t&45{_N}w5;4eLtmEbzWGKgm zpxtF>LiQNs6Vv_;n(3e_6DmKnAheLt?a{`NWE$GyIL$W6GS7L-y-%x9Eal4CkHX(b zV7b=^Pql9*UU!l1YCDe!J-kv`kf$|GgB_i+P^UZ3Jh6=9Q?u#Ngx+g~p=yG+-vHdQHK&Hc&a2UKMCjAYjL3BOwI zrDPf_Dd3p>EXbv!uW;|9f4$8VHg4`Q&3=nj(ZP4Y+Sj%^)t#is`xPHf-)`+~i5b?Y zqrECE-_^=15jbv1P65gclRTERlk+{TKXGQKx2H2Iwj`X=w~+<*|%7#IftYO%wH8Q2?#vvp&KoYi{#~KMC^0x_e{dEbbtO zPp=R4$H^lY)|WP8ri!^ZjPX*kVSRRnRD*CRt5zj%x6O?*p1U7M*p5%R`x@RHW)|)> zx^WGTa2jglL^w2Gab^)Vy@|prfSRx;fgWUzj;BJizss%1O(y(SOeSFaHb8Cz$uNC| zqS=j%RR+pTJ=^*|ADXDr{?^g%35ZME?RS`bh}5~}+`}_D!Y8#?$j4wy1&~&_vLwCe z?IlTy8_7A2dS&OziZSF?_X6)2n99+l8?|2JDXqY;%Wv5p0wM-UB`c_yAGg`7 z!n1DvX4Sq%ZzFYG`8gv+d9`NA7@e+Y@*PzHACsFKv4P^gWUl!#sp1*E@+(a!^E)FX zL`<@DO$rOQM60)s;+k0)NsIT)%hDEZ`%L!BTotnNyRBK<4CF5vR?}jANCezo=1s!~ZLY<0I+`5VBA%Ppt$GcwNefl<7gUOCX zm@%ij^s;FK;R@5>(^i$7L866elVmnkEbU)|Il{llZrHyPtS z=`eKQE8jaCD*tlp)&rFc_NKF;kD?5gKfhS^#ovmM%b&?!BQ0fWHL8s(?ZW%dhxB}h*@38fzEASAShdjpxYBl_y2arfHI&!x}NaC6; zno_=4gI#w;f3%xaQd;Iaz{6?xo>0uaf&ZJ)G4t}N$=6d2`z{*!4xIO;wqg9%1@tRx z>t^5+iF9q0E3LUb)xSflMaO@Sf)BeCYm9wuc% zb-0Nqcq}hDeQ^C@RPR7jegyr<^mT8JI&Ntx16v=`D#Q$RFvw(Ulajlb%dHQ>y&Jpr zl=JSbY3e**Hj^O1K&x7(R1A4~R}t54rC%(CT))%bBmsBMw?sw>H>&3r_Y%r}XQdaN z7_qxmq$PjqE1Xx!1qm-vSSNW*qvO=fs{bR!3DFr90+B^eU$^uDjlK+o?usus`O~BL`dklG35P zFPJ4ozrG-y?JX)%fwfWhgi%TJcM}lB^Sh#b@d;^!Qu-uq*#yN;6|xmo522YSn6A^WA)#4aTKltJ0=g2R-fjxxk&F7-M-SuWf&|4oG2r@Lc-W6=qE<`k+vO$-B-7Xna3RqN^x|Dz2gKS_L6)S&GjZF#ZqDLPCpAIyfccXvo%N8OAEx+&Z|17 zRT^<++%a-!+%fq6KrwmR%N@U}Fx;bw%F3suXRjo{B6Msj#PHJ|l#j;Q2Wn2{{U$Gx zwY4S5$v$!;wQFP@Vw`W;lGnXFS$F%_Jwor*@L#Q=hx**b*D+0M`9lq-O>C7DgAey& zG#zt}(~K|=8Kl(w!_;epIHv`Z8Law*4Na16r;Rb+CXI{&(!N`ZmXl-|oeM0(QP|U@ zs=2KoyooPfzL{zEa4^gDC~=>PHcUDqATOE^pbhZ&w=5fMIOOM;y^DoPZ@CNycS~sc zcVG{AMuZq=HZ|&ZAFSF<%(BQu=tTm&UN$Xajx^};n%TWZ=vcT@xB19ap8tlNl*k^ z!6o;Usb$39gMaVVw^Qd+%b<>g@?fdK?oy*|5A(qDo4acZgL_$X4Oh|8zwYDAf)uVY zM_YB@pBl=MBhEh7fRD$Y4=-~w5{-RKJyF{9`Jpz>@6opD6w0CXN|(-ZEws>>8BM9{ z++O^YMu=OHaw1FdZk^d}ChZE@)@VB<6XiE#Qitf#@V%;42Elg*@`Juzo4vw`qa7Kq z!x)#J2Hv=PjVZv-u^;>E7Y!4A*Rx-dRe6(6J}`ag&cs{qqv}JkRvH`kZbl{o=LZ9U z!8eUr-H$c`?ik)l+G@{a54O~ff1QzQ)TV6U0Iw6X)cOX`l}P(NA@G9A>^!!Ia*87T z>I1iG3aW9bV4LY(-c9cL_KdD&!N^kX3GVYT80hP zavM=u;sQe9r9HKxGn8gRznO@AhXlnUL9;DihdALAMC#HqY!ot0E3fnehMf0b+j3`Y z%+fU5F>UkYhkS=PTRypi6eOCa35_Cu+A3lN_xPDc+a3Dsij_UtvI&mtrfkTL)mdd; z_p<*bB3AmA3c*zgmyD^+s}+MWPUbE~606_ip0u_+e8c4NNG?E{_$$jMH6gbhsoIK0JfXG-j8nMN7W8KnQo4;9PrF;CbrZ| zY!z(^aVfd+T@OCF|6E~uJn5qKmBiY^T?+q2mUFsL@p-fG7^hTCRNOmf?SvYnZ$;+m zJL9&`#udRzVpv zn{g#NUM4>gPDPmt$_3IHYUx4HmfxdW*K^c2FOOgL`&wySW^Ga8R?=dd1a`iQwt1>) zy*IFt)>9X0`9j!Idw;k6Yvml4i_hQFk+rAsY~w# zH}sYtj1)qo#oRl$N2W{7=LhERw_>#&Z(}XabmG+>)Ri+=op5ibu(f@W7!RUj88~|D zo^N48f zQa>2B%))Vg9(L;f8SE+(^PE^R5h22>Kb77Sm@6W3|NbSPX*aT50@QchMPAjk)M2`} z_)buiDyS?SQ@!;T#bRjfk>j9e3ae>nSST))2d)X7HZeJlba?7&7@0H5@p>Ee%%iD4 zq))t<$2J7FH@0a5)(Y7TSM@>C&zXKXPl@)$9F3(GC)vr}FZkEMSJ_Bl9Km>?AM2C0 z?~x<&0_^AU(ji!U9PTNGZj~o@@GO=MjDz)fqKE*IC!zlXmNaSsGV7BwSE2>-kJQYhT#1T$fi(e$Nwt zEcA?OP?+>BD3R9<@Pu9FB8vQzZw&=BR5yvDq(jDK125$scN||};TRV2I7#gNEtvcy zxmg#@_CzzFGJ2;``^fUy^1~6mPQLDU5N1w+HEm4czoziQYX6S9?J?q^DfwKC z7t)N;XLYuv;ga90C!jG+l(mjXO-bal%xS8o3IYLXCir_}?+e&fqogUmIK|?I9$-Xf z%oi+`{LBlGwtTNO^($~_<#8KGE|$q>RzpiGhbPNKU?4%rqh?K-DmL z&o(f5yBN%bN)E50>Pe^Ht&#bGRsBh>;Pm# zb8qiI&{Fu>Nl#Ltqs72soJ1Q&%da15!w7p{)|dwRqiRP_^(}ru;lBs-ubH|So2$F| zJ1yW`;y7&%8E?kw3~cmOe$^=VI2YJ#3gF#r_Tb$N^krmkw$p&M2+%gLmd=D>DCNkd z#g8;Ww~3|$sM5lJGT#Aaem{a}27rO*z#609r|Ks}{R>O}WlI-U@Nd&1Le0F&LL}oh zDW2Jm5RtFGq-!1Xic=xFT=8dmkj;E;QnGp+`j+9`qhDfUcyvK>`7`2r#ZCVG6945m z(3m$v06PA{5BhR0{Gi9&qDanunBjly_CMbBub&}jv~BdoW&WhX6jhjBE+459{a+ks0p9An+NFnn z|9?N|UoZJzJc=hFJy8K^wRJtHqxAKbaLm4wOtKAYAKf-pBgQm+Ws8xnv6C45xsCda zVK1Gm`382q?eeNLya1Ryk(0l+*!#}-f1y3+o~jfR0+MTTbdhsOHiffFT;uTSUO;ZC(~ZLjzaZ4*p)*M zmgtdc^d)}zF)){}{{f^4{{YhB3m|1D(b3T2&oogI zs)gFbcU2uXBcT<6lJ|dVDqpNuMhaljHIf-~Gaw{%J^ZcL`Mqw|{^ZWlq}%m^Us^3p z{QryO|1*W?$dGp0HWgy6(ohEsb&`MnWEF$B(R4bw2{FHXE5p&S~^OpU*+3~V&pcRSZWG&MXn`akhzEdOsqdQUV zUarv5rvNH@RdYEI*9qw;3nDn2OZgx08F`K>J_T=ZeFq>SB$e*3Ba{DiWUvn4$jnrv zJKB}?`#wJwg;Uy7x_)}x5@#Tpu{1;XBz(rKqu-Hk_Xb@#;+ zK?_zbePEvNE)>bjQ(!Zxup80|#?*hc(EWIK`ec;8y7<%R{{Qb0jhF*iT`ma8B zeYSWPK;<}5PE<}qV_EV;{2>41f3E-^kZcI?;|NyHnq!tBI_1FaReAhaYo?NCzDd#S zIC<9>ogiU0k}sRT+Fg%9*3p>wEisrLwUN+dBA%SD>j8R05xZ`qD&T^kvttvRxBH)J z50%pGPVWWsviyamtAEju;xmATBFt2C5b_}GkWN+CwhP?t4iuO2X@{vUms%bPy8*R| z^5ISg{gVsu`?+N8N}j>worR3j+oR*MqeT^C6H6jHqe+3kPAT*ei1zrT8+r-F|F0kU5V3b2gulH>a}m%nzBn$oT4G;%=tlQe){mh77mYH)C`V%6%&YUT4o(c-f6*a zHxUx&Se)zI-@>*%3ZyB>=dSyfj)klo@%JfnLxfIFj|_{Q$Zo zW_#?Ba{fCk2zlJ^ax#VgT%a4FYjlDuJ2$#RPW zLV;XpP$VS$`ljx zAF@Gz1sB3G!c^?|(;?Qa`=JhS^pFAaV6G~27i|n@q5B$7R@vnPr&)I^emMLo5&bxl z$R@2m*`GE~=&#?$MlhMY*0`F;9pgDLw#)+@0B%B>Zn-yo=XG<#v|u}Qv}7+`;9E0o z(jw&)=awPg%Hor{iWkK71a5PnDUpb@w1eEZX%Nhmw`E*-76g}Hy1k!ea1hbDu1j1G zE6ve-_d?UMn3&(fj>tM(b3fT}U2tI@u z5o@UzY?rw$WVE7XUEdV|IoNS&fWu!8laA8#e78SU<+}3D$p}WS>G@#iM9ha;oKZ@i zx*%9{1+fk=R@1d5p27hB zzA%Wc`L;OIJtD`Rs7F@`gf+ByZI=9HW=`&j1X%G&(j7@T>jP%iJ^5P`^1LrL+*_sY z@>~`C$UE`-+LJqa2~5)7KOxGE$NSL(8hY4vdt~-fVmU38&mw+%a#`yx+o}~}fbj&U zpJP@#TvweZbG)jeT-h)&zHszv%gPV15v|3rwnx|)M2w#A6=CiE?Jp<*PSxrn%d?I zV&9MMDj%1i^ksz>%AtCqj4zFqiJ2h3OTn%<50Y**9}prH74Z}lGzS-q7|<0A@q*|R zLmGW=s~guhmvzdlYF1FZgfgK55emgEfHhpHzwHw)0 z^T{lN9H-0Uv!odKYpGKVVJWYT2g$3R>w=X!4cD+SfHn{ar+lT6+VeDD2H%7{`4r&3Gyv-Oe={E~fy7$q>r%eC8^& zQF7N#+;l^Pt8(a$qSLFcW$UbNYxoz|KB*3YJ1m+)WK!&dW!ogK>Rnao6DoW63;gUt zM8jSt>e$vH9$0*hkfV)~u~EYfb`2hW`cl?#)}eYsy3|$P-Klz@xJLHOqdNq>dwe>7 zkDi|v-#VdtpQqM&WS+dQk=!)Gi1sV*iG}H@y;H!jl3<+sBWwjR1@fc(r~RLE=#oXYnj5t`{qe8p2hrGlOYr1 znKhiZJNM;jzAbabP?4SINPdMKb!~mcd#~q2`iGRb<)&u;&`?wzmt(KYovGD_$Xt1x z>gQcx8;1LhcqW4JDp+JP2>=0oin&JB z?#Eog^5yQ=p*95YDLm+e9fvGyW;5~se>i*Zc(~hd?-$7(5kinCQ6_psFVUG4F-nlC zL^mW6MvXGs5D{fCdM~$LB6=^Q8@)!9!C)|Y@AZ7$XaAnF_x_#dyw0=#^v`#`X0CNz z>sssm`K%e#jGwHgkNjvdS&WBqKzL&m?cnT7=2hYBQH&TB(ES5%B7SZ*9Nqjp(Tl|B zNhXtnC*biyEmMsM=S}RnbWGdkIs3kn7K-if)tmj>Y+kiIMyC)4XPXweMT-Ghuij=d z!RCn@mh{a7Usv4=UqmNMD|;DMwhV8y0tf4{1L#U7Or#Z zEVXI+N$!$1tzcBKNBvFAJJ&oX*E3_(BR=`{PvfH{(gPH|$3%$QU7h8jr>5L_(<)r$PTUvxjFy9AduXx_ zJnE9PQ+x=93yOJs&aJ<=IE#ZiOx3om&RH*N-6@mNzBfUT8KwDc3OUTaFuM%5j2KL& z8NT7BSHBrelL>d_C(%3n=FZdVOcYih?r5Uh(9LyAy-wTxW@|OGuuM7n@~@mjI_5uNC*h9R9lhs?6kbSc8lDCox9AXyVI-3 zE&2I*(67#KF+G~`n)up&BvN)fd`XX3L5oZF1;t!d6#YfM5ea=-@Z`7UKt*ojR0cj1 z=(!+Y(BqaItKkSiex5g3qA|qe4v>qXIvf^_lwK!QxF{(kSm_j#SW$dS{?2LZWST5T zcdLeCG0t5EQg*yAjgcaJjXSD+0o^s2m-msyX=T>I5LeK;!s>O5`5FBDJ#6(cm|g($ z6BhLL*vsxuitqvVVJag1_EU*Hwqa-cD$96qfCzkJKcnIk{!KpWLYKw7ClC-IWq?kP zs?hI7G=t?8C!|1MK;wzKQNaNU+(XmH3YzPbvD6iDRbK-Nt?I6Eug8vw8(xv_zIH)t z+#biikM)BY1z)?%R!HGfOxO8_7?U2$o`0bSR zSpAH#{t!(C8%k$ZA@R$CA?PY6gY7vRG9rJIBa{i`S0bQFgt|@~G(Yz7}3*bg>gNyO?0}gOt^!F|^?*XUTE(54`y&Ox7^@rm;qQ8dcd( z?MOX)NpAOg!OdDOnEX>cPG?4Hz0hr0w|Z+mNOZ!kpwqePPMClDP_clw5+@fAkAu1L zM5;AR+={V-s{vu5*KdZ=NC%E3wpmdb%o+nVT$}M#& zsVJl|N2jV!N(^zpUNCaX<*rXUMuyovfd`Sd#jT`*?vmz@?mfRS>FM~B<){*}nWn_F zQuJJ6H!;*mj^HTL#$XFCAw6IELq9aQnGVPRZzI^K8ztSXM9#V;cjkqtpCIhIm$#Y@ zg?=W!)6%5CALZl&N%{bY;x}#M0!!mq!)E;k|8SuY8aRVjt@fq74lB4p&ofFu-kr7Z za}7PUtT~k2?zE8+YbD2il2l@NQTW3>!VmG=^_jGCU8Z~2R4Y-x5IFyi}Y7i`|WNh={j*nD>Y^GiIglYUe8`EX_APGy3^#{|<^ zhxLgpdz37Q!^Dl|@>#OGN3-Hf`-Fok+)r(va^BHozTIud>MZ@6^3$YUm9nNFYX#Q8 z7s+{TcRnc2D&B}vc^1%>(6LA-W4~`vtjkY{{p;OXx=o#zIXyF8lzr*w8++IrlfjO* z>&|tyr|MRpsRP^fB7^Bgf1#_UBqTnJ51rclf`u6fdfL^0bPC&K*|>HLKV#@I?|Po- zKY%>%H!Xajz+o@ucU$YD12b*s{BSW|WHx3ovo18Yqb9Z$jX??Qt@qJLXc5h==g3x$ z;&r&z?+PckN1BMU$1p3TiSCKDLqqD=^|oGbK`O;Sa&}DE5Q)F^cP*uv{0Dx8IY>Qa zasjEIR~|$`Rq=Mqu_vD=a_(O;Y}Co$+i9w}pZKCW5Wj)#EdOPGd&7YaS%=fYi1)si zD=0ZLYyU2Bo;pD}uF+`OcrU_E=ix+G@es#HXzi3#JM$@MSyBqphN~N`xj?FMTu^dIo#^L2{dr`Z}n&Nj{(`$Now5>5} z+ZZAVAwH~;iP7)Hvrb-O{+o%%d_xBTVF77?%HQCt;{Ndx|F|#uDnf9RHf-ufk#zzx_<4$w$yN? zy_)z@B7OQwgC_Vh`H45AM3c4HV5eLo*(#giZ^6K8LM`^zk|PlcYI>@KC80}NuON6X zYg9z=J1Q7Qii#2|T>t2CJ|DiP5btalGqJdxi!A*unePBpO32!tv3Y^3?0MZUk(+`F zJ5e`h5Yvc9R{CP&GZ;5!zriEoYzYfi4MU1OAcNjO^^2XK46pKh!4TJhv=Pk2bks(1 zqLA47iw`f+<3Ofu9_@}d_cp^{&*i+;D@|h;L{V=3t%D;a^a-$e&K089Ta_T9G;xVs zcUUY`MSrq*FZVmh2FsJF!EMd>cf*_>IyCSW6gB`#FoJ_Lt3-QK^vII~M;SKHii_1d z3xi`F(8cNX#A1<7oMmClYFHvih)3LRr4f8*Ua(X$z^;)A<+q)*wv!<`jPI&KWuk`z zi6oG6iIKbl1ywtroBD!%I@9!+#wT??yiO5Ps(Has>J>3{%(h>(`2tKu0XE*U_>-}EEJHi_UL52uglPL)-%kf->QjfHaWuj^6 z>{~5O-PCar+oj(f{CV1>d7aUpoL9INs?c{#FmugIk~Po3P0Wk#yA^+5{6J1uX#7=> z&YV?z0IT?dI*tzT9nBq`wCN74qK8KQ;XUwh#^E!vSWwr;XD*+FH6aEmyBq_H)8xgi z2^)jxq<1M8^|w8)1}6ElBAG4fSitR0F&#y&Enf40g1Bfg6?VxvdYL_qT*<@K@s zfW~DZe360%p}tuvnEWwu0S8a4GU8$sOkuJ#sGm=cZnEN*h{PVa&^YxnN&K*ce6Q{C z$k9d2!D9}Pmgw8s8VIXjN!cp(b%jVv%EJogPUg5^%C~zM{1Fv-S`u}WKTTsI zQDUsuEN!C?aF6=RMsgG^Iqe0*R@_r5LsN_E&N-5Bt1f(V*>@TUF~JSC$a=nR-(Yr< zw9upw+j)Go%O*vxO5lL@zPxGtGF{cSMCC)svryVE>R%r$|7c|i^QxnawtGXhuT~PS z{PK(TA2yHht%&`3>5=Yn?eG_;ThAT0J5(T#gs6j;uJODJpvXK}O57U=D|kzhW56mK zzHsnL-a@SN4@)s?CB5V5$n2K)apGQ~{!n`t$XHW`=T)o{Y^MR!mXP-JH! z_a!pCY~tDiRK+>bM^D+0kO_USNn8}U!%Re(@fzJ2A=W9H#!L9pU6-}!!xIGo9Mwz2 z#S8?9Cr|tNlw4?ltmfZQ9U^c0l*LuT-<-ysP_tFWJ0;#I85&z(fy*l6zNqcAnI#p) znMG9m($^mi!zjL6oCx;63anIR*b7m`<{K$HttA}#$M^)=1YQ&zD=^M9AyO<>(R#gv zD_Zu>X)=XP zZqF(5&wr*$6Zg=8$Lb&QpA~Hv+OxF@PCnNAN?np~fB+mg`M8v+m@&A};}_E%F}Lc& z^naLfWAi51vwtc86h7MY_%Gf>$ zm8!42445d<%&f|idF{7nl*20AbjYh(GYlUk?y~&lP;uRQ$HMJxJeUFUz;hcT$1W z{%xcVQcsx7?wfu?hk=;sdkp8(T4|Nr!Azg!svX$ zDs6u~TF7WR@asxoPbYOD1K~|Ir3nHat`EOQNpdxAMZ1d2b!BP#Vp_)MA}yw zgji#^MHb*okLf1cJrUYKBla`@U6LaxP%IlgtOsCi_x|!vZY2+sCfhDn9f1y`u@plN zk5`MV*XHqWUE3K4c^|aR;c3KFS?B6%GxI`T~4pj7FaInw;G&zTexw;y3IXQNna?_>?aijn}%q#lFdBT z>;nk;gHgSW!hvGfupmmK3}5q|rKF8{d;_{^$$Mc>>i9au$rWR_e*l%|v|IMSP_FB6 zAUK5m{Ym60_&#l8rf-Qpd?78!fIsy`%!h72|DO`=t(uhWuh+T3@dI$?Ndlb*RFJ#Rxi_T(Y7@wY3G6 zL3d1dn<|`jqxg@I#zysDPY-!^kElB}GnjW-#5=>E`GY@i2)0@DbJPv~{ zc9>;&+*Ol{E?B_xt03r8ZW(zLI6zT{(({;!kNYPz4`X&khOOWEtrj-r!D5OUx2dhv zpl{k4O_Cz~_Tgwx4UV$uGapKw*3Q6kLRtq)Al3%vLC*2Hu6|do&4_8}&&>WUB z!y7GVZ^YMuW*J6v`rD+04+44K&3EPZ_8oR@i~mX4k3!KJAT;su?P#ha`(nw~X#clc zz3rJ&bgm%tGc)<+h)Am9Oy+I3S4-eGHaYY-gqhpZ5JK&=kgm97Z>0IMwNSe3o#96Tr+*Rl#9LWE#MZ_tR_@1eq_+c6<+>M@aBx% z_6Ke+0q^+&X9kNzSm7M?00}uW7#BjKuy!g)z$Tg1cgj*CM;i)%KTTe?mrYz~@^s9t;-$^5dCa?tGoDtCGKlnbFqn`IWnE`PhwS83`V4fyU zY-www7x1CqaC1u+A=-qz2eGf(iw>5Pm_*;P{87eX8d526vu}iVmZ_YuuCbc>OLsgA z#w4voas;Z>p|e7DJ}L8|o(lPU0m(lr8-cWXMEmRKLdfEqItO%&S$YL8{cSSiKx*u4 z;uLXD0qu{M*7`5cL-bNK*;k$?=CaD)l4ZBoRrsc#=Y##RuE)avX^9FquII0t=n$yu zYNbjv{Ox7qk46>_zdU-2<1{svSst@Ap2ToZ4J(*+DB*v8wx>8V>mZZh7gTU-NaY*+`kp-Z2#5hRa8gM@c&?v;OGdE9cQP9Ri_M9Lro z4=pe_Ga-N0Y0AQsGXG2kxMw_5eShA=E^8z=r!aH)StM7C1aGxp=ankBW55U9+JU_(_NhuRFFSF?*VkWEZ^$&NS+;7zy(+{Ba`-=l# z+%=&?B=v?wCluksX|I)Qo7AFr?bAWe4X9DSN{O@q!^jfgg`!}+t8Mt^CWi;VOeD*AR#Z~o4=)?gaX9JN0Y1haHbuK;01cz7zbPhszQ`*WJcoQUpMayb+W z$N2J0^)b%^*l#|le~p^R1MuSNLwsndkA1+!kYgbI;rkVK#z5YYOnqbNu2tl4Ict+B19X@p)t zIWM7N?dUEFNmig45d-$1(?`3K>6bb+@8R;$8j3c{{tkg%nztDVDt~~pVvR_`ey+as zvk%{4t*ka_TIgCgZ6L25e}HnHCd?(F^DtwbnJgX^QNFC}a`1TKy{bJt{5SR)40)u5 z?d#}k{ivb8bEI{|K2cGzFrO*3!;Gykcc+Ib7}*&HQ{bd~iw4w^hboec`sK(Afe|p= z(>zueX$LReb?Xe!C#t|a)~5|p9Gfq!w>d)j>|YB7sg>pYPO=)HZFj9SRwI8M23uxN z)ol!G4b0_$6%2K+D`OvE=h||cn@f-^M#3;_XdQ#ndKPBDsmAMG!Ha!Sr?!jl43S;x zdi+9M)j0+e#Vsqot3Wro>l-Z9T3TyJLyspI*{fFLV$r>ejM9o})G|PH@te|)GoGkV zLpE%VHYRMIyj+0Ju9POeTNpA_!-tI~vDq`VVvhdU4~~=>>DS$czo=HSlW@xNJc#~z z*I5D8-tRhA^DhY6-{X@tYR45`uEh5)HmCBTJe^gH-SsT5J51Ev^Z+{PwXg_v!gC z1Th9C*#o?63|=AhPCKA5;Tyke`nrOr)3NQGGi)6)t>MHnewy41>7WXxW!LmQn*hJ{ zb+bLD(gUFE6Vv=R*!Pg1JbBvQw9O`8vMo87BJvLW5b8jFBuJ4=l$T znrG7uciQ8I*sLZb`)7<-+JNc~CM<0)jtP*3cZEV2Rd4;zlGk5E3_Zci=`_-y>vwUe%abgEx=;v&vTeNQSMh#0;gy4>O0 z^g`u-xOK!s$?4eebzgdG>-ML+mus)tJ#(2ibw^Sn$9By?h&mf@VYQnxBOydVtW%bq z(usZmFiGg>oJr?mKBnw*$3`#FUZ0tz4fEi(R!&17$keeO<0r(f^YK7g27B?*p+$YH zf)V2^>Sj(n?3!ZLs(XGqW6tcmIx~+Uk*pu>ceaNkpQ~id*$`<(hZkvm(%-P6+g|0; zAh5;(=jYZda1x6p@KSKp6-b~ zq^LFZL&L9M$zKGOJ%d~Fw1?61YG|D-x%=-=u!NYTs`1;3oX*ds!4fJhSL1QzL9t(; z>0#yyS>%~k-d(K`l{SUIh~tyz+d@$U7#``qJsGt}T}*?KPtpAFBxI}Ae#Y_5hHm~+ zeA#ex?SYPAhu}0_TLON$(T*D5GiQ9?p;j%}HVT>hi-Ue(u&*XoG|}!-?EJ?Wo9t({ zKgN+Gz2lJW45`0ZC_cS}=q8_}`*Unm&F`xrJAKb$tRxl``Wg7ft%e4hbo$4C? zI$hhR*hs7!>^?92{kBMVHMUx!{mtC)qWVFhJ@YR9$Eqc(X4&cQ0-GI)-F-2Hf5&|O z?e=_r%-1haCJ)|_?pSqmHJHQcT=BqC2aUYA#`kTi^BIx$nm?7|g%~YsAE6NTH9@qb_pf;vlw6N2+8}VCUe{&r&8;fAxC6;Q(-~+*o(Y7>J z9Y>KY2})E#sziY5v!^rgsVCxOIeYe)km3j6flPB&EkAB=%^`)FM;k8oo5C8{lYRDV zeminJ#dNm4u8hG#GEzA;s$WhWGRNs@LkbULC|DHb99qvGOe||<16>tGXexE16#QbV zO>K6f965_#?E_{l+1_xs8z+Z%un`we;@HT7^+Srx*QIHI1|@C9a_yI2nu>uxD$=KN#|n5J z8l3KtzN8ZhEJX!#o|euRjnG%daEuH)-Ikt+Cu-OE3jwbcQR;%<;w(VYmo~KzFSIOt zt9<(18PY1y8nYmJ_}PN-t@HGEqILr&5yluslqmACyNT!>WnW*#iVkhQgnCGo@AGEu zrjMnKK1ihJ)1ifLLQ?kUZz%VbO8!EeHQ&`+O7rEh;Sh|j{)?;P$w<4B(5jW7fYYh( zc!yJ0dTDBV!DREJX{71`9P1*Nb3R$DtI%0!wjD|s@Q67W@DMjjUTo`7OJoJloKcad zD5apd=J@o}C7w?!_q{Hnz#2$5@Y;KKcp;hS(#dMS%x;+T+9h|Pwp~x2Oo~`!r%~k!&!4mNb ze(n-b!o`HK)!cpwl$WP=tiEjouLHw^s=zQ2?uA^JJBd@DmQG$c@JB!g|SGzUE;I#bLx@;sUlbu6^G?yeuS71=^E zj5jy09n^msB01ua#VuuFh3NYOe*}0(-idA*Bc2o}9;}!Kt|hNsmNR2|G>qL3H?N3J zmz_?Y*>B{6uSj&}>tR+2T^wYS(R>YaN4=at53vhGinlP zAN^7MXy{;Qa!OKRc_r2Ia7k?MoJ%{sIaNvug~FS@ChmZf(O))rH?wT+(PgT9H;& zIo{{SVFI?SW>&{SXVr^D6ywwrB!~}Y?LPD{QdHmXZ*mPLJh0+l4_qG6`h~+yQgJ7% z5}j6Y%XZQ|yHKqq(0yC~l8%}7?zWcII-U8Vahb)%#ZS{> zrq5L|zEzgGyV6qmv`V(xl7e+8`~0hW9{@-JV0!0Omlr@WA9(MzCU?8BJ3-*2TdB0) zmL8jZJUb$Uv1R!wGgs_X6BAFW;&M)^iPoFpVBkgXgGiqi9LRclR1St2F5~G*9gLQo z<=z<;!U4RtdEncG`YLPN2Uq6&@Ia{JWuR?-_2}e(AkGYT4xiB9N z=EoKHvDQ~~Zk<%dbz5et^QQbOg#5-8LT-y;ac6M z?CVM)&G30E(ZTDgny2| z27L10djCAe>gqA6v_}8`1U0}vMP@uj%r873u${3VS@w>i2mC)!R{ZmeZxAITNFXZW zz1~2m4ha17nEx|f$W_1;Z4l8hEJeEvxvGA6bYl^81>Q$UUV-;PEv*_JzX3hl|4tzE zFU0~t3hr#0VTt9WrO8r`T6v5yAuP6S_p~35^X>flK6OUx6o0MvDfpiyQvCX#CE^Y& zk^e`9^WVSg|N9dgrLG)kpWaMXbuq__It!R>#&^1nVD*xN`nxk-+&xC@E1Ir;{#)q+~e ztgNh=b|#ze^hWN~tR8!>xx8LXM-?T2n>CEzcEL`YLe6^g$f?A-n*5sW;*F5}0O>0VPp^ z`nLA4)keoIHZIN^ceW^LJ8Iy3TTZjOLimq=#POO?efvolU*UH@kSD`G=%~nMxSAm2 zXa1|xRb`@vaJiurqZxv_ZsxJ(nPu_IdOGU)zU;lIU~(zR>5&xnK?=IzJacVR`R z7mTq<@;CjcK$I!ZNddXae^!CWzg8r_JeQ)xQxAM52>%;pZznk$|Jag(xD<+^eA`aO zIC*^9OfJ;ueU0?Sv!Ng{;-Fe(J4xPfV^yNj!`0XRuR|i&F;Wr3B0UxM>xZ=zIN1_lB3-0WRl6-lbcQ%3c%LT>HCi&YbO^tPX8lz8-<0Rw8BVbFjN^C7SHXiPdb>t z$~f45Jr%YRtTb8gh!}W3de?Fx_KTIc#J_^?Uz;v)Rv5bg&d91dZs#yt90iA4z|rH3 zP5zz@db6Th1&2$R?YX(n)MF*i<|3fnhl*(2dEINKSqRx9#hoH$Jq|af$Tty}r}D(5 zz_gRMeIAA-W&z_|XB`|Umuf@U%swWLXc48s`j>qKA+y(c1CrnhGl#G#wQ!pIjcZ}` zzj8E~chl`k!8rl1zru@Kz;Km~6!C#zbe7{)QcC$xN&^&sp8q57D{E~$NEenYsAbYS zQh21ekTY}IXg66dOA7fU;8`O3X;s;{vXstwlnz|T>brbPUe~@t!{(U|cB;YCuP_(X zVT`v7W=RjHFHc`M()Jbz&TN14UuA>FY{tfbuBYoZ78q^geI$RhWjI!0el1^D`Y*Ls zj@VxI%MxCl!$5u%Jc#)wUU}XDtGIjV+lF6fe2F3%yKRRYiBP= z7*ZYzFF9X^r(B&^LRaS%|M!5ni5%&-6lItv(es18rv=UiHz+>Lk%JoCzPg<)VLjU? z!+q~@8U+x&RFke+00;&(I=i(KlUJSIlN#VXyo`Y!TifytZ~`-QTw{(fx(1SkVJX#$Lc|;D@(tB zR=9Di@GD7zXhZI#JEk9@)I)kcHR^}+h<__4F}O*0)+;5nd(<>(9lV~2&^oh%IC(9&J})z5F=M-k%y`dvfYUaBsJ)`_9{`(U zSuLdyAh6{z^Z|VAyAQJ!->H&NcEcH|qZPl?=yH<@hI5z(_q_&{t2nCM=-!rD=9cD< zI9ObvIX(n-Vg~tlDP3^v*V`yXrLUmsvs%DQq4_qcWD^*#|CpPZPL= z^EjOPWQ92pHacpu-=MOg@BXRqTY*(&Ll1YNl@>vuTo}L@0mrBzWw(7z5$obzypq!! zcd6+jg)Y^U+#q~fOhqSTsQWxibegUUn*Y-@zJ9G*gp2`h(<@;jgo%?L78~!OV(K8c|KDEcq48_y!EtEFwz$vmaPAb+m8|Y z0f;UGkD0N%edv{qn9DpKV|8e1u`t8uA{XJDBzxWP?7?SV20dG{r}sxJA~q=)KTiC; zL$Y1fEKqXS^Xp>AQ_XjF-%4LK=%#R)BB|m03d71bhc&vACoE_+!yUJozSiCrRxj>Z zXf^!V{rLDUsQbiJ`U@fyqBcOVyHmbO|I)sSTW+C%EG02nv|2B{8ygmmRRTsZx*Wug z6KhtC)d_=EzTUo{p0D{sU#e%B{Z}8T^ytpHy7^rmXfSb2%Jj|y``ks1Agb#(xAD>~c6p70hj;xzhG70>tW&6o|l!)zY%sR%_bEGXLBrO}#)>dZN+nZ@zP5V+hNV0Q)+I2Kf0 zJ8a769q0Vq!xcFV(kHHKD2K+L`nEQ{8W6$st-s}WTJ8Qi1yeVq!u;m)&~zeYJT98RVD>iLL30rUPgMA( z*=Yg`0|_j;|NiLO(<;|=+p-pG*|+!*HMNo^Eo6$O!?1yVCDRO-!#w;)s>-Keh%BkN zi}4H_r?`Y54+|VD)otM5jsD`S6a%pAXxAof0w%`YDjO%v!+RVFM>&Kc=-=e?8{yp* zjUJ^Mhe-)18YKOs#6g===T~W+f7a7Fw<|eHtVK+roWk*ZgqPEvPhu|nuTV35#wQi6 zaKuB*s>+ahmjjrS?GZMTP$x+3r06sR58>w@e}ILYb0T582U~8Pm5KTJNP-#1xc&&; z%Di3Fap!W3qw)=GH+9Qb1J>eSkL;t?`r1CMG&__bBgVPT?}CPq5Y}r2vN5urNoYw} zEllr?P`Mu@Q1ZB`@HSp{gR>1|2|gHuZY`yw;tkM%O51i=U9xFd6AZgKv*}KdU8H*0 zQsg)BieyZ~n)}j)w~iqDsY&l*f6BIN6Sn})KJR4|-i}kzsj%1WR|KxH0^H%d!cA(3 zCwcYvBZ#4YH_dq;Kh>&b7?|$k?;Os+Jua%IpJYIwKt-I9d$PMeQ4=M0@qBe|lH6bi za_5ZfpXo-*NcyTTj?#!NyFt?URy2KF;MmB-c-9o%QBJo{y*jKbd-ZjG)`$BIiJMYU5-tiEv&KK(A>LEb>|e93A;Nz{pck!1W-O;m8`e6nvj z&CNg3@$l~1u(7;d^u&~aVHS$Hw+FlC5s%f|k)$tFvb%S|B>&@~5Kfx|H02?E7WNa( z+AB~*nSxMsO)?-2G26iX#ouvKk>u)TR=?-2e7O6=GxK1+1!* zMfRf4FEk3i0h!}2>W6~+=d3AclD74asgUc_&b#s7pK!4Moqz`@qNfoJ4ABNfWK<{OK*X-Ywf%5Epe?y*pmi~YdUnyXtR%_%J(9r! zy@t|!>vy`0Vf}D7lKkaf`aNf+k4_vi4IOk$D7m<(iFd&kponK{tNT&zdDfMNg*if| zPxfi8iYB*@O*dqX<~cpi;iSUj*1Hp*UysgmSw>)}mRaTp#}nJ0gY8*N?Uy?AOJ>xM z_w4>wNGj(6`B_~GyY6_j?|BD#relJs7G;BFA118h_#QBBDsFs(2~vL7{(@WPsymTV zbhXDv@^Q$AxhrU}?moiqp6LMY8gD81tth?&*E5q1Mn=)XcdWtbvxe|JmwUxb?dxmx zJ{yRyDgKLPslm%Ru(F1g5ATz|$F+WJl78}q z`$qd zOamGYvuh*SiCwOMBuj&#Najnu#2M6BI)oiM4IEOta0s}YmtCC5A z-3>D1$#dlQts<*br>hAb6`}Fobx|>p|KH#|{>GM|$ z;5}7x*3Sv2)E!u7uvWsw7!tuiK=`+d%5nec<20-WO$w~f9dF^SwtWm4BVNP!)r)wtxvTkQ5`rF78pM;>TME@ ztfcntGYxACY^*i7Zc6^G4wo*-VS~TZo**?^jgIHT+i~F1UZ{Uc*pF#bK(a_`ydbZ( zB33(TnrmJk*tA|7Ir@5@@I)koK_*T(bW-w`gSVof?2oErP{{CK^4v}r_ahEZRtROl ztT6Q5RT%QMv`zV8wBe%af{V!1qG8N-3npy_0+U}vp&pMeY$OeyM;c{s_WZe(5L8%R zqx@+kYD_!QXV&G{7M=ukPp{aZmYYO8nZa z1TCWw;(3jfvaC9PtBtZHu9;&;$)rx;@Kduxpn;|2VgkN+iz&&r%PzDNh6bCRfXxrYTuJi0WD$sy;gn{;bAwE% zevgJ?0z+frTY-Pf&b*u$;raf8I@J%A)FzXIoDYcQc!TP4fLNpeA~^p5Ua#3CyNu+dR7{TVPCR8ly+iAsL&4#ns!4@ zn;+S9@*^v|5xFUimfGl#3ShnCQZ2{TiIeeK1kvSTBrdl9(iKyj{1se0uOj8Ln$ohC z4EYIm2H(Qf%mgG)oXplDZd?)~FD(@sTrig_DltKW{m}}Pmxr1kdkMHvmX)8@w${^G>!eM8!EgeqS_!Se;41nCIOe+uui zt=pFS*u{iR%IyYbW%Z6ykJbeoWkNw@Gw+KQh&dgony;L48ifcKV_o@BO->CF7Y@VhM!5XDKKlHoTz_tHU4zax7wKwR zPuwkLZ+^iVHb0laXuvZU9O10^(QYVmej)6p(jK|vjC9P?lAzVa(IaP-y!Yb|fSr*I zvZC71X~a)h$2-?VmugQuFL^^X&JOhhj3M5@a}_4MOD1oOSCldJo1ZCXnNb-O%7!Q9 zfXo-9NBYY(OXP%xB=a;&?)HcGmvO{Ht4AxaWxfYp2OUluJjaiXFyumY19Ij>pyQX< zh0)iJfHMC}TQCJv!ktDJ+8=M9fbUgC;-6&x%8LS|h-#RYq|>mDO5knNXt=y}Bsl;!%>W zM^g2OE+?U2SE85#Y$n_J8oqoKk#fe#zFnN$^Hflqfph~j`>eg>?xnt5agsjP|FPk; zC6)o11qq$@JdX#U~SJCwcpK|@$vE0vpDWgg+NQtim$rx zUnSlDkKRr@*|lq2UXmL{vUZ1_U#fW+?UB1#R#z9l6gF>Q5Ex(vtMvQEl;T6scNQk> zAN2)Nb)xhs#7Q>d)*%jo@JMuhP_{kz^Jp6PPwV6p4(+iuVOiJ&&^DkbKbI_#<;D9v z3!$+b%>{~GY|=06zxGfEDC*COe4-C?%eaP0q-c>DqvIJ-rdrObNj&0UWFH=oun?<^ zIV&usE$ntOXW3DSPFFXh8V~ZEa>jZ5DC2a?TS?bo1pVfN%@sdvLjjou@5jvaAdrpE zO6a;Mszh+XhfqGxv>dq|DYGrJ66K^)Edh%#dINc{H&0vf9Nx#$3HsgZpbC6}UqI%s zNmnvT3{ikB=(j5cxO+j(N*;O{W~nWC-8KSaPq9NifVk{SIfgvBoHGCiu&$1`N(k=G zw?^15m7?B*FW~*@Tc0XHKX{_S<8Sr)>vuQLIsQh~@3tj>wF7OP29RIWBChY*2+B`t zPn8JB6HrZqn}L3Y!l4RimG)t|@Bnc1J2`v)Xu?SzsPwM<#BET+{9ZfCw{NMVJcZA4 zUzz9dVcvXL)$DfVAjh@i^sFQ2QSL(lkBs-yMoJakkY|vC@*Vk4D5RU3o+-ah{h#b3 zky`2MkLG6D^eClB5fS+6RDreqpPo^DLs9cSs!RVbGX3&jLQO+gg|hhNWQ6_nLRMQz zzi2CzBu(7KqzRVbRo&%0iZB(Qc5OhC7|eZYdML8(=3$FF0UB3ChRuoK9XEJHSRZDH z+58z-EC@BCagG{1&I008_y%)$()X6^HUxb zP8zij|Cpc6t-B_)dh|usI*FmkD-Lh{ly&Rx?7en|&sMVwhV37wKa`M`B{v^;^>s68 zGPHSqm&fuGRy$vg%RX$>V2kSuct6!2LhIuq_yHKPU`x1kWJ3SQGVfz|8|0xElYj&+ zJ}y~Lt1C)>g#t^&&M}um3U8SngeJ<<6~!Kna2oLxzMPWkgnp1dsFKqP`J_@nZuct` zDICfIx+POua%}haSi>TjY~oD2`#_(O%z*`Ikz3)Wq;q3?*5+K2J~5pU;KcKG&BMY`(*cQqESL3VI{67(I84Y7v zXP+G!tZ(+GaEOQa1Vi;mq@1A{Oq^ir={iQ+Phy@|u9fru7hmrk)>PN5jqeZ*B27W* z?GY7~CWc-T5CIhd6$R-i(yR261Q1XXteIK&%viNs5>W7B8{xy_k2#(5WfAb+*tJ=9vA1p*Nl?z= zu}K_y7v?K1LYdm6S`&Sl;D6$=XeCNvntNN~>NrCB@VHmE)0&*Eh8z?n^le?_B3|SQ zI^GTfyD*%1d%dg;_-ZSAVE5<9D0rD#S=;z)be*Te(A+$3gW3XF>1_We#3%bdeR)kf zI^qdA(hfXJhq)~s+wbKT-2c?0N=X^yZ8lf45x3u6k=V*9uqdmkt&ukV6lxaBV?-0l13*6%r=XhOPp=Nv#>=h zlYcYMoQqZaZT_FX#wytl@}pvZR4>kFm<=@FEV4hH=qh8y!R;M=sjkEEihK&pG_6V; zIvJYsWGr>MC-)(J~%45K>#gdni+O{pG5OYaa>Y=Ixn@?};H< zC4Y4)JRojwC4BRIQI`eN+NzWG+}qP@>gc$D2rHz`f9EJ&$yt|*MeuR13yg)&DN~yR z!@YbTuY9h2r?t`hE6gHxQOEJa=ARY}1XC5KkmQpRpC@BiBU(@JlgY}2M}zyv3GV~~ z&z(7S>%C9?U*LOpe*&EM1cEs(1z)!b4NDYI`70n$xjOjVRg2G0ZERHD^az~$Sh8Aq zI@ac8^}(>-BUAWrsh^Ug8Qjr#$4{(W4RunHM^+qg(N1++PT6X(Pxa{jT4qlo9v@+z z?&KZS_$BBTk(19y3{CLai!C2L->hlnr>A(+wGQ%ciD9RC}LU|q}jEIbKyJuaxp`%1nQyUr}(NbqYBr% z@@#!CmRWHo+Fk_|9mgaO=47y(U8k(@$Cl97@RNOffARAlu1#Mni?e&ppRoZVRwqkP zG429%F?+4^6Gq8P!13)O4;Db2$0eLb@RCp4K5F`R;{au7<~6YQ6AO!nbSb`n!|;^} z@UI(=o**UOz6coA#0r!HcgwTZ1Vp=l~~o_t#qhz&^qqQvexC@3Y!k7z;kBT%Vfcglum*+hluMk8)bza=YnEAT!HqI z4sc9cjbC^P^$*9FNp}d%0r!Tu4_`929x|c3=?SL&M z-QOr7IP;xk9wgKuVdg0V7+FsQPSM*q&q8K1*5iR}(Dm*B&6Y-fyt3KKjJLl}{WH&` zRf1y)spRPWsv<@me#s9!UwaMm%6Qc+g3rGn@+GgwGwUd0y8hRG4oAkuH}|hAy^bx` zd#AYqAW7=rL*wg3tbxlpK5K(B&SnbR#3t*L8hIF=l!c_WGaRu>m?y4o)l`cS2+bAc zK}SJfYMF$ZMV8Q=86gvEe$y5Assyvl8l>qc4JUUN$1X4bEJMdJ|CEp1BfPq6Lm1Kd z*pbQjNcz`=MP5(zQB3xRCsd!wZn$vxKy2xjTVg&kykqnvn2o?fTuy9Fc{*9D)}%4= znaoIFO&D}7Kcyva*|6~-^if%Y&U$KS)COOunekQ1zDU2%^$byHpTfE8f~HYhaAie$mOal1E%bjoa2$r zEI%?%<}{O4CPYxm@Fjmf+dIIa4PJ`{&{5d(m??$V^2>%Z z`7hZlxlPbX+8l(1l$TV@XHjt~cl`bK(gnJHYkeLn{>Idh^aV!cfxB#&_g~#^O&S`~ zk27p=OZweZR&Kv$w$8x!3Cw&r*TwNUylT}iuB-N`%)y3M7HqwF^+n8;Uc&iv%_G_7 z72s@zw0nua^2yNE%4n%I`i4l3fio&?)o=$$&{9^<)B2)G{UK8Urt4$up1F+|sfFE- zK54b<5whz&!n`RI(F63N$wCY~UVRsteYAtx3VbKqT2L6%uJ2^*M)*RY_72K2l<&K~@GM7(CpYmPmHrz_N^jQBBTg|&mO)b7>=wor6^6qP zdt(zm!Di-Bv@A`-XJklj9U7ioH}zMR>!MpI8a^c`$1^)xMj(g-xaf$r?sATB_0Z9>Z-lFtH1^u*t z=Jaj11B6QM;#5JSLoCVcXP3 z8#{A;;K@Y^F~3w5#?uEYTMd&MGE9n-WTo1kh(a*64v+ZSkWe@65PbLyqwT!76?>V! z?fn(|rORuvD3Q<pdiyjf&{T%mOU=R4yUwH^GZBQmf`Kz2M@}nBx z=X&bC2Ay60aQwvgTND3x_5SSgy*Gz1n{V|!iSw`>W39CE)0gOAxA%DP^QhcHcEIyD z+=TRLC7RIAB174W!O)Iv*^k=^FU4{vD;|XsdY8|^^ph%A*^cQQcPmLYse^bzDc!M^P780#;x$Y-jnugwm#e+I)EdaCUgPGmoAnV(mr_-wIFik}ynAG?7N zpH#!Hjx=GD$J)%XlS1#e%4E;@Z4*bW2{65AlF(M!We#Tw?wGG4XGgTpb|q^Y^U4fT zzPd)bPFhA=Sd64ST69b}W9&t)SCD7y7rrt>#D?1{fk zdtu}jenLLx^AFP{Ee%wO4mHmwB3Ygcv+Q|5=RfKepuxatkh=;W@eDnM6MU;*^`yc{ z1~x217lQpodcr6xv$byU4R7ZSzV4L1)0p*6sU@ly`ZE?9ePFJC=JjwfF$2a{W3m^| zC~vtzO#$Zi*s$p44d~#4N^_LOkSB_iIux!*$1%R!gCLu5d8Ab4GbP9SkTh?sYS{}$ zB?=_?1LSemu|4<;BK@1@ObQFDD(f{P8zy?9l~O`FPdN?az-{m=%&*%Y49i30GoIT3 zR1mah1h$;Q35jMrwbuTu((5p-BI&xsW9T}^Vu(TbY-1J%HY8uB)0qPSTK*p|cH_jF z=%{zueGOCx4?$(NflcxPsc5^626ax660f-LcY)UPRHx3IGSg&F{T~08?_PwoL&hNVTae^4 znp*i2DH?&-QK1r&J@s5RmjOk;p0@3|3-X8AV zB^>MLh8~?g#~3_wAx*{7qrloOl`v8ZAeM~zNCJ8tb*?PA@hl!6aYlJ z@d(`bd$j)=bdPc~*TWbI;BaTsS=s2KJ^gW$lA>e}2UjjVz~{DB(YxhUl>&!t$TeJb zr&9!b|GqRf^87ooVA$dFpm0LZ2WUdSn!R*yMO6}(G+q)SCjY66i%(~!^$D#s5RkWp z=Cl|%?N1evGE%DNF5s|CF67BCgFohs)|2WT)@0#) zr^}Ixbb^Re{3`zii2q}l|BO8=tG<0f!>bN*sgUU#lf5VWBIMbBp311?Lm^-sJy%dCY6$V| zH#pk^`K#@x+8h*BWO!fofH~ufe%L6ss<+mM=VnTMc;TS+!P@veUi7m&f}>@xDa;va z+|!<3x6UB8?2`B#i+HpFK!2^yygo0IZb|I{b+HQMLE4!D6rwTDUYkj8B`ATbbA#s= zqA@LIPqsMbzJKTD$JFDaLLY#n?e8J?6 z^x}QgYR#d~j|ge?DY-&>`U3f{@(*bM2(}!^U+@5HP(tbz#hNTW!05 zPlkJa*O~d`!64v)d#&QWU5Oc(G1A~%-(ANl)h^ZQ@D>NaP}|aDgEK~u!-ld}O?Tgu zFHZ-t=1ahs=Vb48fxREc`tBF}cKR3Sf&No3!7H}K7iBK~ukiZs4mS_Vg5%ar~ z>fG!x51xe^fEy5tb6VES8OO0=nWBf3ZX0zMf4Ag4t$OEY7pgKyRc=C##!q;kfPlho z{|Z1pmsKJVk{+1Pb&aYFWV|mFz}G~4KhIwUACwwkS3FiF_`h>CM^8f6fn^b+#)OLCo5=j!<5yXb{sU-qmWCL~ zR@sbPZ$_@2$;`6(z5dt5L6dv0gOTr^ss6`h)T5kbmmUpN!*|e))*vs3&uW6IxYuy; zX930%;AgZoGyuB%zRL3ggd{;9n2Hq-x8~a-f&x@gt>k=wZZ`d*P5LV-9I*cSG(C%1 z41-^AZd4{aB}Ff7u!dT_eQ9AK)Kpl%@H3fAw!!*r&Gim^)y*PVv_^l~f{3S^AcuMz z`Ib1bGzX=-*3s4RFbQ+clG6TcElmf%wecGDi6A`peWd4379XvjUnA)}emet%=HMCZ za!7*vql!^=YgdBsS$PL5nH1k#>%+4P9h1%q)0~D<=BnAXyy#Be2X(Nqw@gk_)|9jB zl+HMfo;PK*FE{TQ=CAvel7I2<(f+@n{5QU@VIif;iw87Q$49mYUyNq1d@90*W;1N7 z2Fuwilv^h6v-GIO_gw|~IGbp=WmLd>;E6zxk5mils#J%KRhivI_-{;c69)zcdKl26hmC>Rq^7fd!xsY%B`Yp zHAAIXa|M@)fGj+85^n~o>u{%=_|b}T)n0O&aGUE4TS-%V&fvKJlWsdohhj}Z&6g=HL~BNWxtPP) zWh}$ezbTX*dj7?!|K5%Ndm;SUoBzIgQWW@@Did%{kJ@l6uF~QM3)f5#4&2)RLC4|! zRHa4NgC(NBd;!KFV3J@%Wtgp#`D;SO5(qQIA|?ND;}^bjt?r5SVew2~nZ8j~)jZY^ z;2j7{{Ik31F%HlJF?>q$GzkezhPO}F|JoYGIAoIuj&%#aCX;QBaF*_UBOAR8zpm?M z-!Yf5wGz{e&elQm4Jz$rK6l>}PP0rS!e0Br5sHk)@Whrh$;!-Hb_S)lYp}zMw1==U zvh>6V<+-7pi&7N7-{Zns&H*cEGX4|vqiM~Yi}k1ZDrftwx8fwNWjxPap(wny%!ihx zSoOVgu;9N{-mgm+bN-79@c)7imnwMn6wYC;5aOr+EBlbm%!G?*6twM3d@p&88aY8{ z7tNKu9erSqT><_Tbcsp;E& z>=>%WYmbxqO1q3eU%(t9PbK~HbuA4hcv+#%dKxCmPPKLEQ4}j53_SOwu+ljmbXLlS)=`Hp)KdCOxirMVhqY0>WcO;qM z?deZ@h$-E78S^zYGn7?I`;s!eCW2D^)NN9Ou5;UGP-=q|^KqP&}uvY_^PMoJuwX z6b9%_E`AL(1W!@Z8P$fviuioKl#FjJPdMjP1jVbL`zT7^l}74_SM81+DYis&9x5GZ zwsNmmQI<7&(<@ZZex)3OxEc2R{C9^J$5rg}z9lPdC5$#aUj)F%7?iG;VcpAzPd(;0 z_}k|+FZ~kV%R4W5bK`s7VzHxhpTscsw#LM|qkK68@ZOki4*o|3YPM6Q9b)#iZtdU8 z;(M>>6{f4`qom}8%G}%pjaAJBU3ve<{u!t~q+CO_l;2X9PoMArOP5hmedwGl)LUy$ z;&|MCwy#HF9~$UfhhjCs%w00XxJsE|e%Xz+3v9$oNxHqPCw-)^de}N97lM-q%%Oa0 zuQ>-!6K_*jQi0S%O`zUmSx#W2lmCdvLF$(|Gl_ zmBOZ&5!yB-$sQgq^MDKr**|kq29cKyJqmvf%cTX*Q?Z%|NjeWKkEQwk%K1tm^Ro)L zxEb5OhyE4)?@HyPK6sWEhkz_5%CYwjj=3Q?drTT!nY4Q2{q-K2U+$`ZqQw79*_=d) zCgjcxr4GEBeauDj8*(`feFh2u<$h%QMZZTw^(7exSpM{m37>m_R--W0J*AnNKn`g@ zjfJ#R5`8{do4sg`53?$>i9swqqYI#{tm)fKpx4TbXw1oN^j{d(T0sJz3xRxzT!z*T+exDZ!H36i^$p zNNKV`EBe6A>8yf z>0~aB60)}Z+(E)u$5wH><8N$abALdU3d$A7-UUYHRz?C>Qzn$UR#O&xePv(9Ig{KF{;NwV8x7}n*y7UyHdNB|I<%n7hszfSd?1~kDHG`Jiz%J)3G)y6HFP{NBTB+xKzzv5AC@V}=KOv(40%T;x4R8n1E7Bh!B%3_Wl%7@xAO4r8XAuKY!wsa%H2U^2Ta~`F>b)?m*v1#Y>Zz=Fu9@%{i=oY@8$Z@2rO?d zN}1OK;Z{E38sL=OpSx`3PM9ItnggkFYcnBU?-ef1q78C4yXV){I&@BVx3(|Ji?zvP zi%-5s1ljm1Tk@umw$wCu>r&Mr=IjN0XLPOUa4(_^)O04WMUjR3zS_+8ZH-4 zSl=Zv5x7*0q=l=;8e?qxvwL$#v#uN}tqe|v3?bWdM_G<1{YLUahPrSb^OdSppLNNa zIbz8Q^KD3I1WN}=y-|Jr9vHi_KjvNWhPifPQ&oODp8qj{jFvBQl4;NmYSGHh5*xp# z1mEXiv_s#1>x}5TK2I2~a_r4i`)A6kU|Rvq%6h`+@D0HGmqAA^^=5(jJOQFgnh{A+ z1_%%w@e3e3=#f`^Gh*d;S2OHcW@;nSNRfe?QZc-t0TMwi_r$?4x109y{%M{Y(yAU@ z9+$^jDPSOSOP4J*oxz>v4`7tPQr+bIt{Y-!F#wPNp1yEVXCTP?Hn`wRpdrYdoIkDr zK^oIc)%lsRHFjUJsx7Uh_#29zj8mKs*bH}@kKm%z7{{c)uFb@J7quAO$#K^KhcWvv zR))y0fw_7cAx!>`KRYBt^k??WziUW8Ch92NS8_TOtME9y=4(wHCFj3-Nj*kW8dka^ zl;RtG*f1R8^$=YKyMm24@P$Pq3^RV95J;j&# ziSK?PAW>&dq!#?HI{scU5?#tSj5zfDR&?gEN2=V>haNuQCg8GN{}L!1qA?DYnPy}R zmU>7JD54I%Ula*NW8O?EN}AFfWFFIp1rqF74I!$Tv*_L2S+q{IlX-@R^Kyj-%~VX9 zi%EtDv2;n6E}%$ZH~98a;ZV*9w)#$)Ddxhuet;Q>ZnSUtV7a_sTd=-;HRzcCgr;I* z+iJZTg=hKkS>D&-K%S9DA&hB%1(TaPGw1&?8aB^0I+rngsKh913!!rHK1rq{xpr!& zr1z7HOf#?uQu0C|yV)0Nx6L?H2~O zPTwq>wy?d*8CKx_d_rGIS==qE9&wUAX7@WYq+@Wcrg;a1t4CAP(wEuh7dxDM0~<5hz1XLdsm2ofn>Z+bL#5vr zm_h`+XP#2P^#l)KFe0H=9knj7hM2#+KV69)T&W9qkt{lOJ^s!dxF^izqJ%i_PqQBV3mHXL5BBrGs8%LWk5yWRT<=)|? z8M~$(MLEZ-IXxS(^N)zS@CR>=DUJsIXdnJBlh&r3ND^jIj!V+vvIk|mW7DfnJEI0c z;$DcrV{TJvQD+-ASJ-WXcJOESmu{W({zbu5_58?3k`I+(!wix)gg<^k zZs6h5CWpG`>a>gPKLU*`G-mv8;${dnAn1F<+6xt*2}IYsJjoMceJQlPFCzXK%TuM#vp8wHp4BO|2B0a-GZ(7H*fH4dLSb%XYf38U){rNXCPOaemZ4w zpV*NHkN8_PNLhIPM`kRL$U#!JNxs;lszV+|m-$l<-s6pp*j>^ujfLVoU*;6$Pm+G) zzrovP*)B5svV@OMyvqIP+IU}jX0w_Y;=HQ30+;pU#swev{9RCn7`i;JX$p zvF;B)RTvxkZIFyvYw^$)DWju$^u1Q^HS+Y9g*1>8SKz_#M(r`KEQXfW^c%DhbT7=$ z?tW+HlX_620AuU#uDjHoX5qNI^)iLf1eY0^pUeS1Q>(&-d;%uRkt%$oAXPa z{iEnE|KlO2+>ARw*G5JgHbgL;3=A)<3!^hk6V|d(W%_;VvDptR@PHL1=98lOccPQ? zZg{}WAk)FCiTP_`7FRX*C^l79^aaUX#>cJ8@C%@+Dld28{53mD)R7vC(XkiracLk5 z^61o_Wh=4s6Eusx|CZ@2xpAaS>`Nv7&}7>VZV@MA>QHy>N4rq-laKTb{IwglT(U0a z+w!ja)|L(Vhb8^^j346Fx=zb7o@aOVMvgY?Osu&g$tRfTHJ?KRU-GE+;%F-=!^31# z=d4T*l8VRLlQ&Ot*GL+tPo5R8@r|)o)V*CZXeE;_DSX@BudO3DVf^&AvuMmdkM%Um zzc2BPCy!SYR&v#Bz}E2Aix}=2aZAcRLgaY=tqJppM*8Ej+8T&46tUdwB!)k8hl#km=;K-x^bvRZ8vsZLU7o1(CR&a zCl?PKii+wNSeZ4f$--RCWr4^{%*#GQ^}0;ZBBHpTWL>6Ilv=8@7CFxWTOw?YURV?Y ztS=e;cJ9>HnTU2wyX7Hk%CqV?sp{vsEFT8X;T7*C^*$ICIhvY(gQU&$*Z#n@y(6>P z50b~}mHhmyI_#MfgYnFF99FEyE z=fD3hjwYZizU;-h${g)sHm54Ox?2Y=i}b_Yn7#dldmb%G(@6>Q@9z_uQO|jw{z|@4 zeqK>u?~!$GOt;UqzAt`!^sA&JT6PV>Qhn^_au?~s`+oX?5;R+dPXgUmVbyz+CXTq$$ zECsI4OD~#qB40_LQIT~^pX5!1Le{qf-D^Z_bELR`poPDxXfQQ6Bu;-NoQ5VL*>HUw zE#MJ(W8L+uryewks4g;FnK|8kuA+qxc>Ym%u5cJ4@3}IKIm;gkI=pGzd-&5)ayp-| z%8+PB8Ivfp_%=L)7(zC~_|uhQlyt}p-MQjnJ4qOGm`i!K?bDXwHzA&8Bcw-luZ}Pv zi#pz4CruR4WONax>B#-$%Fubr(;@uy{Fd1T{o|Ok7Z)VT3Th{wBAEE9^0j*tI*&q; zO^2oPr_WmxeIgS4o+r>hv8vyR!FS&KsL!I|us{8S)~G3zZ$@f?E!LL$3EcY_OI!!vy5E zQ>Jvd=}K9Hj?pOX*0LkN6##Y_G;*_HP6~pA_bWdFyr+N1E(Sw~9uuO??k)&V6&<5i zMw4@qeILW0uU^kdxh<&8e;wq4XQ$i|i0ktHO14TERI+GVWC4hSTg|tZt$@8$0wHra zLVs7}A1$Utmm9Ab-}VPcN!BOcjZ@;uoOVL_drUu1|80lc+XZyF`v1yE4lB6OSoqwF zbi~(ie6Y*{lo{Y0dc@P{I?=B>ARhUa(OFkwD;oJA{%O^dr&@-U`0&rd{B_I1vQ*Ua zV7$Rg=rXW*9x6uZeOLa3pIPX^wFE>o2CH1R`sJINTmw33;?YT@WtN4%8m50&syz|b zM@gaswp4Cf^cXuVKhc~o9XWthA_?DX82G&_m46ntl6#~S*~9+|KK&s?sm1&%zp+(W z;`S;+ppVC#%*=BT@U{q9(gpeO3l-itD7i3QC0sJ8%!5Ea-)SPmuJk|_eHdO#%wnFJ zYeoc~*Y!{NaTI=J-qZB{f*Rnlj zJY&aXta-U}M7;!6aljg`p-%V!6qgdnVYaG6uD7Hs`5TB6(q(9Pvs7FcY4UpZPw`hLSFxbK$+Xv`E|is zHR8i9AOapy$0_uSnJ>BZR7zE0P|eaykHv$XdEVoh+hwXY9d(gz#$vT^IBQvtdM5?D z63N~(X%#8unpB-8+Mz^s8@f3&0bFw+hqCA%3pE4=$s6pR!v@C@x!!;DpRMWfv=K?5*l0spMn_8SBLBf)4~t<{I&i!;_<-VoN3HO z!`;ZXtjhq(LABo91VC6`a($40G*%8mQ)nnaw9&^$ z&FqDK@_8@%$S8Z_kr~3!W2piX*Q{L4i?yj6RsTTDqjY7dI3@Izuf;l`Sv}YWi=vtJ z^kT}Y;CxuW4mlX!%6Z3QV`kFLfwQ)2ocRcm;V(_eT4G9&pv(=Yub%Y0vLCV>V>zi!@K->H(B$V(9!cz{_(Y;FXb-=pSM0Z zgvLOP9vdf1@^c(9;QBg;S(SzktS3wx%rb8I`tWi@tRmp_OzmF~J8m_tGSeJ)v2Vi2 zhTEz3Kla{&GW2~ApD+@VOTxM;sh3PQ{CNDf5c5kvi-QO}j&71!u4myrb4O*-to>KJ zXbn2(;8xyvR}wwI07P15y4j^q;?AyuKHLU3+oqoZI<5Gb(kcU}p^6_*sGBNAJEi0@ zjb7s^fnTptR7mvqxV`D%#I=t5-9Ba8ERt}4=>nzrPsE<;w&umuRQ1%dqvfe_0>5D% z-DeZuQT6usUcP?AHL4>Iuyw%8W@5Tb@gII?KCo92XyV>@^M~3nyn<5n#jJOT!yhQj z;d5*_7fk%F0H|a71BRzwkYXl}ivt7gwq+(er7S5+Pzw)lJ3MBVSO%E$<4o#hE89vQ zm5HBnwW#yht4m~atIo5MBPe^9q!@@$xON(K#d?OH04cI(=9s2V(=KlZj+<-$9k%E!k(9J*8az*i#uX`h?|8Vn@=!^tn={ z$+eTWbQ>|OD<=H8JA*}tbkzwLhTj5M<`xdrjK@0WKF89A*FZve1)IGx$$G_~vGh!x z_o4eqQ_!-phOeZR;jc zFg#f1%@DYP&2G#^QP2jLjQXZU4y+FZ$rYAC=f%qq50jIkUVU0ez2bk8tb#5<$?b%r zrj$0JyD=xVGj^ByYi?Pm7G52n`Q8&;?G(OMs5oit_jKY|zPaWS##C7A>(PtUm!j6B zgdM+lKXYIzWt|xs5CN75FkHX#C!lBqRs*Iup;kR%IU@H>jz2N_mJA1s3STmh+nFv% zNS3r^VT3v7p2D?G^ucMq`hL0(FRM*pfa%as>i|tW{wLA|S{Kcm{?rjS7Jg*71^EHN zIqX||9#W4NsCFX0GUT6w?@-AnqX@n2MdJ7fO9Z7l2XTE`c4sPmN4&q;$26l|B~{4wU8gVqd}3CaNm9E;a10bc#e_` zdS9LYi#7%erAVFkepUAx-1D9EYxk!UFNTis^6RrY{60QlYGoP4GMYH&5Xb%H3yz!^ zHgcI)3~|C!jpBhwz&vivEAN>9vt|0elb?O4ZnV4>Y;IQDBEUyB-)~fdt_gb^{ zWMUp66q8TRvFta_gU=5$VE3nrWa0PD7(~HnHqITr+DV+Uo)m|Qb?Q5s>)HJxN&l#9 z`6;FO6?<#xMA{AZ*2~5^mJ(&l&g-N~J%$OxlC8KM-einxscD{eiPG#Ld+WG7akTZ$ zi#l8R=dXTOhHT0{x1VzztpEWjtZP=F^8gOeGjM->tA|eVp*G_MP{1flxoUQIma6li z=@P?~syynBkhak|rLyu5r_KYieto)O{v|p!NA$pWQrUj#I4+%`97Hv~ZiCH^mh>0x z%_v+A>))a7Cvh8Y0qm<|nu9dv`^F}#qjgj&=J~{@JqDuuj)5lJQ)i3qgN!K(;_N$W zZzr{pX;(5vF@XmkQ_r5V2IGbTQlyl#nL83XDUSWTD)}ZJZK69a7Iqr_y?y8l~^14ecd9CgY@()@w4_Sc<%}jy<*)Lm0jnd7&M-L6vOmD zvGNq9sonSRYDX)!jrJrTH^N|1-#2c-SH`(sD8wR0 z0%1N(x{l8Xp?l;br+Q*#@(8=_$%<@Vh62fa;26vuBq;Z>5q7Ea%ArNzFMBui=b7u3 zCcvE%^zv5z>_@&kCI_laNWm0^@7~RUe zf(G~M=|X(_asE*|SJ_qJ`8^X7dQIV|Os~a@!KzT#q?HBlPq)Kqc=wu6p;xU_oO=23 z=cRieJz`A!k(r3ix@w{OzO4*XDepLd>Xe7H#f-21@Ha%buF(Kx^CQuTvQg3XE0`z1 z_!etS&-y*+!gjxo7y8Oor*M`@P(Unes@;dnD@OUw;wc_~Dcw4JAMQ?V3wefmufEWg zsy#;YGk?yG1BZHXOGaxsf3hK6fR&&IjAIBM@KhF|{l>=O2~Zhw*X-=k9;~>M zy&Cv8oH+v?OD5U{(OD*&3QUkVv>?Ln5Ku;rW~?I%^_)X~+wpBqsZ-H0U4Xu4U!Jj}x0 z`koe_Oy|k{qDTCa0j&8lrMj!^B0_|X(Wm2;Blz06&RS^mM0o0`5DLL*`O$OcU}t7j zl%&9?T6{ZBi~4!1L)loh35G*MVvr)RZKR1cM4nl^ArCq9)y0%9u_*V+qgE{_`xA$U z9}T+;;drkv7c=snm1SeIh>G(8=KQN}LC2}Xf_VMSXYP*Yr9Y9z#cTD-4@{C*HUmA& z<)_IsvrRR|buHD7b`ma2gQ!@f^DoD7cp=|~6w8w{AD4|km1whB`>*70JzCha-hiU$ z?bXw0JtiR2q^h>TyF;#X8#6;cP*m}Atf$Di-4y{b0^{=LLLFTU?aIv5Q#bqc8O&Qb0A<((Odg&=z7+>GoRloz z4Q%7EQwLWdYOGFsD75)t#JH;mt=hho9x#|xX%D8+Yv`gu4uPhR^tX-89m8xXb&s^m zk`&CAH zuApEM{8{D;kc_B7og5ziX9;CjXOF;DCSbeh)kg;QJ-Tb?kL)c+>#9#G(MCDqOs~w0 z-?5Apu6P}Bj0sH^stP*Qi65(&9U#u{J{nGvyT(Iet#A&IH!~qiuVIn+{w>PLJ~d%C zmW|!2PETy0Z~!*!DEsDYwZ{_IG^NJ3jB@UnZ`6EIKHTw1)$51(DZhyCm{Vp%#w+_C zMz#O$duORShdP5ytUcF?3q)2DS2hppc!SD(AByj#u!EDHdn9el?)V&B(m#FP17g8f+;$yZ zkut}g!?a@*@Av#)CQb*P2S7N-PCcRhnHiV~tk?T&{i`2tTrz~*=(7gE zK$Y}Vo2zcnt)4TIJxN^Nd(WwXYj^p0t9QAO9pl9q1t(MG+-72z1-{rVo4pP{_<_2%N$XbbV4j);eF-oLG;8`c8Sb&!M z+;4E>0pO;n?C_d}KX+^PLa(&n!<$?W>fVs+)0ZM?sdZpoH$?7F#3upfbVf~6Rw*57 z>kdTFt*KOJfgYK6OTyO9tf-CKeD>=mBR0(MAdqKWjfQ4UOWdEm2p@xrAUspEnf?P0 zB`$2-r^(D#pALK`h~YC+N0v|=DUVOY4sY!K0%L5aMEkHyI@KnF{y#h?AY_B(hzyc) z=L6#2i|oqg9b18rDqhC~@NB2HZhxb+q*2$c!mE*(JF90;YRQQn*D0};et4NmXH{a* zQ88goS~Dt?sOI2^t(g^6U_1#&B0Kb2DH@vl?R%lpNYX2lu!9e1t(>Mw0#v6rN5%O47H00C!-`y8K&bc>scU?SEeM!9cwul-U`e9>lMbm zP}S4t*d*q3%wHWlH)wFB@NB&h;*->4*~_UKNyjprGRue`79V`q)_IfVmLffJTcehP zW>1fmEX1=8s|%l8aI~kij43Lw@Vh=qU6CEapMSu8I3g{XQeo^d*6zy8@W*fC#K}p$ zJAEsI!Tj>yCJ$BhUuwmzeQt|gY`Ryru%~9fxbU>t|Jc~j6l?Gkrz8p8DM!>H{JXIfA@MBljD$kqj zQt5ukvwfsCKJ9ogmA{VmX5M?m@I9PELdzvJx6!+zXi~b&sGPK%Qzsf7Qxa2f@A=!U zHL_L=y7cMxa9^FcDW(!!EXWl(gqSUF^@kp0$5~@s$!!^&AjfatRGr0h-B9Cp$1D>1 zjuZ${3cI}eaxcI25ih;nC+8nIp2$Yj2-zihXK%AMlU#A!Qo9q!e#BNOp|$DQef*-u zXsFr^t57>k=%c($kiqljGw*EVImOD(jaxiTqtCbap6c_HG8-0~uZrW3!9V4+(wCLC zlFMVhZE>*w*UOk9I0Eib|AaQc5}qiX32TMjR}{;HxtPhL!jGo^&Jy7#W*@Lu3chu&S{bgU+|lWUakDIxFGHVFc6JUI2TM(DE_2ReRz__Z37PQb?W&> z%`_P5<6qZD6)XxgC#rCAeAKSp?V*iSeb_RJ4q}8n+(ssv9C($W%Vkbo8Bq3CT<04` zOP(R|;-t;d^!Gl`RhvBGJBfp-bgh+&J-VDtu__9A+I$=@N^T5X6Je^rsq1>=}*0Xq00K~&`W z=_<}Z^@fh0LtNxCn9RAS|ByNiB&n2+4?K_rs?!|9=j%aVdB@{B=(uk5XR~ zwD@;$S~M^E50C%bjW;{%&C~l4i-GT%d-&^)dg=W+f#dejq6?Yab#SUmVDu;*|C!Dp z`RCyPjt-FZog}fkr=~pRfiLU(V_d!j$T(uD{JA*w{03nuxcOAyr;MN0^74daluK$O zr&o)mqGtbu)4bN6DUpZsc<7Lqw=CmRn_*2h{7uJ%eu`#0FMo>eIezNSnR^Fpu=bY9 z7z>a9%jQsdy;nbiB7-6AUqOI*+(Qr`Z1&{C%Zl$Xbkf1~gW303hSz2gf4J;#u)IHc z|0}pYZjT<|_?JcYUjhdK;&V8CqrM&7%cI7KODv60ezS^ZUlfQkaEM_m9cD-%V zi2ZVNfckDoh2l-Xur_;2aPJJ)P093b;XREH_t)-~Ft=z?*~aOe|3T&~GJyGP#4RB= zljnrDIwv<9Zmx&iS?`z<_v2MuOP9bs{M_(=N%J01eT-CxE7suTDNG1DOKm0jVM~ z&}-mSWpF_O2$(uhHTBz{53v>%BzKxsu0WIb>GvXd$`*Jo?x^VgJMXXhKg{>TY3h9G zFTba^+36e{@NuxVqE43N&qL;KN;_{Xd;+3cEdyl z_Sg}~s&;idLIa)z!a(H=`^GZaE0?h-X+NFHb$Up`A0xLri4Qtp7Cu8sv)UEyZ4brQ zxc@z);ToE{RGI&`rAoD`3_yS$#%A`i=SDrXx%_#v47dkHS8T5XSdUdr%U=Yp0ylBm z@yVPY1GT9>-VlyT(X(xdO>&mJ-*zI z?=4D|^6#QAulx_wlc4!Cz2@NkQeE*ZxF^M;d3_fhy`Pix-HeU(|N6Oyx~&Z*-m0QA zeEuC&>7eXDk=^eAPVN`=2rPkh38?%_j5>mMYSd+ZL*?%`3^w`9lt*n-exS_GpTcAv zF#%H<1&k)8<2L_N2o*yBaC7sMUe^pY&6EF+$NVqgQiZAxl`N+4_+PB=i_qmdxX6&!}17tAH~3Foeoy)yODaWdx!@s(!rM2%>kdtg0= z%u285P}A0NcSS~i7&R4%o#~lMOjQGG!w{dFZiYuuqEf(QO@pZK#P)j&YE_U3;=`*3 zGqwJ6F-babg+uGdTQ7X(KkuFpR!{mqmgt`C&2Wl1@)@sw)nxi7#i2J#qd)giR;Gph zNb&Pe#~l)ym&QFTD|?}-spX_&P3ZO&9Rpl;VZ?O=Gm)C)mI3nAGWTJxQ!lnZU1t@# z{1$1_xVy3sLYy{>(*mz>5-rQ<$WyY^NW?#K;4%Y8rC7YIIiUf%=}vBf|3{<(0QAB* zgE|0QJAXk+IW&>dHA(Db2t+S!Ju!hyH329ekPCyAf&x0jvBnxaA6UC+S*1j{mzvsE zMxUS_;!T0piSs)+LYtv>cy249@rJ=l=n4v0DPk-ox0A}9%36t0ud9w)( zioC+&r|9~dmwA`I-GS*CSharHp2|xd*k7q+D2vz{i`u*)wtgA`V*IE=h0jlGyZ7uF z-J6Tw-qTuV>J ztmQw3oqP6_Yi6#QTb1$Ohb}H9np=6jRk=ZlgSvj=7*n~!fJW`~U5#p<3E0UShas%K zciIeUl)HMi3@JUhu4~Bn2|$#O(`U0youd(*0YF1VFCm@Y*{iXa-`|a!{3l>vgfR;8 z*MimV{FO%T|00cVOrSK5-J>(Mrkrb$$W|5HxWE#EQ<~8xJ15{e3FJ+L?-uqSo}I2B za|d9rl*!(FK_y_#O5NVB1NQ5ZN?^+Kcu0}ahg3Yz^E&^|h$(GmU=vS%*k7!2Cndls z-sbx9T;>Ef#;?e(cKKDtNG3SCXPtH2PQ>s~YDVYG9k=1K8&gjC9Y^;&{Q3V{6c~5x zexDNUYCHqD>Fh-Eq36OC5YADo;E|s713<|=1qdSPYG-=X&{)-rkK8{Abq6}%%w$`9 z$42a>eYZ@=?ik@NJR2SCj*@5heb9#0XAMzYnGqJN5BT{*Egj`;N(;*qV;44F;>k{y zr9BeMp;edHNl*($?>J(F$4Ei-1+opqc{_IcUZ!t4o9o+&i%jM;{wSOs07Q{ry^F%h zUD>4?Lg_CeI-L(izb())^(bW3 zRmo~7;^V2-dk+di->^?Sb1b)jKs5T;$$$Q-!UEOlxHx^*SRb zm4*HAuPS>9m0SN9LQ0_8e4Mi|Z+5pO?D^?b8Amx?LqkpG%x6q!;>KYAeRJUwA%zoK zYPn?P6C6$$551RCeRn^DTI_-k%1QQTUXn(J5hF#LPLMGMjdmw#?AjmbIQW~*$0TsHi%L&ZqHByAA)nI1g`^H*e# z8oRqr3f`LPkYoD+_1=7|{lXIth-J0wY% z6G7)4RYE;_vR~6QkTFd?EJ}3da9CLl>~tO~VD0~+fI~C|G`bXRE)#UJaTu>GPa&xl zL#4BW=>Rv4SA6P^D2Aw01#WU;5XYZoy@PMHD+i$->Q%ge-^Fv{kc<)1qqO%tD%Q2r zH~CtH`M+d<4%HZjwEsNL9vmk#3CbwybnpK~RJ57Z@A4YS6wm|@+hYHn zaqoy{GPnS{HyL+NUP--WgJUOcyFEqMvYHsv=u-)mdVkjz|_^5AGng6)9MoA5Su zP*l)M;Esq;GxtPJbyFEf`6{hop1Fu46b0y-03eqYU12co`&n{_uIbBt(9;yAU@GoS zM!?^Xx%_T6Z2cK~ZVy76T&9ifzPUYes5|I=gHZLsy%MApx__6tfA<46;uk_vQnYu#qnbVR*FXi}LY;tozR=xx5kk zSs6op0O0002dnH%eBiq4eW;20yW1~#Pt)d`L8MvqH^N|8|4oE>#RFFOKf=EfQn<`X z#M+cqp=~K|F_1%8=Q*y*^%r;;DkBBzV-$)SlmjN@NiO7XlI9l+Ry6~a@2a{`Ot;AG z)5ReDJuysG6JPK9O^GxMD)7E&u zd#$;6piYw2_WUJ*iZE;*b}Bz@U#OCFh1~pX0{Nl1a~|1))5eHXl12}HsAid)QU!ie z*2Wl|gd0^>6TV;q1a?f!_rKxRd^a5srpHGrZk4jG1Mz!`}Njm6SN= z7@jMx>a$g1(51phi~#SeuSr|+O*aWWIidG}lA1d+rsvoW5y8Lo>VNx3&B_kUi(8yP zqzIJSKrI(Jq$lpt%sMulK3a61&p3^TMh%Nnud?8sT#q5?Q^qt7*zsuHd5_gK&56Cxb6NE&xQiR_6Y4lI zuNd=8GbJBgty1^=mp43Y2)sXKh54eqH34hV!Wr)=?<$lm0?JY=#|R@>z1hq+bFC^A zp4HrY&ff!d;ZISlrSx9>D`+-Q4$^T`zF>B6v6!(80O7Jv=O(|TCH=N(07K;jRcC9d ze1p*vyYcJTWkrwQclb*zIV&4IZ*3{e=givgtWCcdY;;2(324A)ELIZVr5z~@Y+HeB z_2QlTm%-KSAV=f0`P2HZSb3{?PH58%>g>UGNyukIE1Q!aG6Hr3{yjF<`R1V7LXV4l zviMQ!PqV(_*Ybe?<@&;J`<|wJ z-jaR|NFgI+A5J1Np7uTUl#bl)u~6qe9dG`NXFBeLq1mXDo)~2fp@-so*6vqlCJ*_t zT{n&S??CVG2y%i@znFHghx9b4@APA1(uxSi7C4qt@pLVMpUq%!G6W2e|J)w$&N{lt z%x~uc;<{mKz_^n?7kS{_`%9K?KIE-G?dbe>!HILh;Ow`|_gt`t8sEX}GGy28m{TVT zm}=QwRx4x)c%jR?rcM6~k3Vr^niHt1>Hun!_rDUy=>Rdy1d>B#_+G5RjzB~2B?~}LxPZ^@*bEq^r90xg_9lGH_ z`@L1P-+SgC$1PG9levyld$HdtVK{*raGJ$hf0qHQRpmyd@%@4b-hlQLhGwMHV}PcW zCf5N0*M=LejoVMQ?wwlkNuJ#5iJu9Zx0Kg*eDYYlIB`8z9ACR~dglxD9_DBEuG5L~ zpO5M*P3Z<*FscGYjS~_nQi>9T7oM0XLbulge%j2u2zIKpTJGr2+6c5gp_P3%UnpA> zZ#ue2zFc&ruY(b|e4DLTCqp4g)^*aPe;HgX`z*=7QXsKWaYq*8jz2|Vfj!MAyJ=-& ze2-^_8d-g%v$8tzd0}#IxO1|O`a*b(kamk@NRi}VJf35}rrK$We;DgE)=%bA;r2iH zXl3N8yK}pNg1x@Cm~O7rkvt#5C+d>B5oQP5SI$%48h9D$A5^~{7d+E%{5-D7v#5N$ zq6#H=yv2M>UW0ryz5W(bE-QY&74-b? zI&=6A0zM3VL8inRXsj5b=&00^1rGa-8Y89r0yrEBxVYHqwZE6>!v@%Z22A|wfu$OPWB?~*QR~d?$~9~fcukZaavOF`iH*$FBvc~ zB@aGDy;&n&SB9(S#;FwceJZ;`W&qeq^jdq^mJsn-q4Psvw&Uvejz~B-uUz7Ds?;&6 z!RI#gS5tFJb%(DnhWU1u~05TR{;v~dLf`e0Z;hXqxU3Zur!TPL3y-z; zZd35JEo~=`U?;4k>9z3q4}zL$r#Aj55QPIDXXXYChdmGr?#SxU$^J89hOav_lfP@2 zP(P{vk0#ijnrw1z+UaywXc+7j?(LpL=%&95Ctsw#zTt>*&Ck& zdk;Sjv)a$mPxy#w*Iej=555z?nVd+MkgTK@eeUG@KGwnzM4G_Z3HOiB6|#&L&rS*(_f&xRAX3i~#5SaD%?sSuEiP z$W(kv+v@w{<|Zg^AATyI&dA!Ts*G z{rA;AALZ*k56?@ulJEUG=GYSNu0QWRSY?WzTKV>ZwGmo+7d=dMUg*s@`FrGU$5+9H zPh~`>t>0y@QMD1Kf@?l9*Z!cj;6c0{;Xd6Xb>*mhzcinSv113{vydG7&h=IKRpHbY z!c#?MiXY%ML#;yX`ZnsmF3b#=RcUSdi5Va_HG!1)vnw*arYn1&dsewi*+wtIt8vcQ zFbdXP%6lq-kAPx~yIuPQsRFjK*BYODzSX3xiSCV9(l9jV!et`7SAL;SnKYjG&T|}2 z!F!F_x7{DRI0Fa!L$tXTarRG;^Ls~`!A6rln4Mj&Wdh5)eTkJCl)dU;>XUCcRK@;_ zB8Bz5oLaE3%{X#t#)i>bO|wtU(@}&2NG@Mlxj_!UA#pHOXDfn*F$=Y@2G5@o;2Z|d zIHsuI671W-Zv7S~ss)t@cbj=m;a*$|Dw%|>t^U?1F#VXW+=p@M85+KY7R9dZ7;g>6 zTiYQ0_V^4uhFq<Sy8>7kCnK!nSKW3d|Q|y`DI~TexI~gq|8yjb?tu=g{G6Lf^H~ zq?z?7Y^1lgvp+CMq90QoO_A%!K3S}`|Dl-9K@o2qov|PsbRXGKy5^h+j1bv}!`!Jy z9d5Ob@fhP3l1orejb8+Fud_HbM~9XO5We~PMRI3_da*xBvtkx5HYoiTiZZTt`OLt| zEhqn7(0BaC<^l$T)HhgY{NF=`%3-)RbgUp5Q*f83uLcqcjU6~+?+t_V!T@mndc~y~ z4F+#DQ4s8AL8tn&&t^S1rp&nQBma znY!nku02())@G0L6gU?o`Ly_8Oo$+Q;{~I@On|A|Y;h#%Hu(`DZQpP?ZR;v7C-lhR z)us?SixNo8ShWXovD7B`iTBukDGIA%jq+5i7^x+fF0b$YkT@Q~F?3EX;nyt-A~H4% zMQwdI?2kLcXnWmh=e}XiVC9k9p|0LUQpZ*=vq&#YqFVV5! zuG%9P)l|Qp6kJX@QT9)TZSlj`z9H@|)uhc#)o~Tpde4qtW7HbQ2RkY3C*g=%fLWb|p54U4B7P!aci=rq`|Mm;2q+c<JP zc@AbE63wUQ0StCO97~++iZIa#QTdJG0#M_Wxx6>+Qe+VppxSx&(lmqczYW`wPh=3|H34RvF2#KLQTdZywJo@#Y!QN`*GU|*PJjP6bj)(?+*3fgE2~l- zADHLvU9j0<2}S>nXWmYWrFZsDMHt;gE$!U9?6?oRnY^|3?r{wtorQZ_-bf!G`JYkGGy56je+i? z-ofXt!nmp_Hj5{&;B}t!e&5^se6Sa?J?KPO!;KUSi8|)vRIUV#);_04)Rff~yAqN8(fl z1@nv77iur7kDe1v>8p=y0+-C`9z9^u=Hofgf6BLVrIQitP6?uw4?6)rr7h^D`lWqV zIu=7iGC$k`G|oXewME$fsv|M85+dG<0okOBzt7FT<`5M*}IC5GEY#tHbQyFQ-Wh{ zr{&j7e&weOU`v93IL%S+JZM2FdOKRTxz+}M7@Q7P$@zu2AmoHQi|h;*$L*54mu9Z2 z_Wgs3@z@QG@;?<7z(3bG)@(S0i9UXTKdguhIE^h}g63gT8oNRB-=5T>`V!=h&biMG zqzR(J13qWcEzqs&ijS4@{?xOp|2S~MG)5(Ii4|(Gyz@GEAU;~mS<_nT*XLmZ_)f%g zUHN)VHUe)H^k=<`asjwWm!du9{Oo*rsYf#Y9`U2S`uRO_iQ45?&hP z;!x_kF^5LWUJ-`gI%<9sI?J`P?!mHsNx)$8^i+|opTt-N(+?Suv&&P&D0nziYhkEQ z6Ou*FpKmmtRp41Y_gWNo(B@HjvrmVwubmB)B5yVB(w(FUGoH6^lv&I6+4nrO(Jv>2HAR-d|V^PFGr=;Maeb+r9IYzn#q8#@V z)xynZBk)4;rUW4-d&PvpRgU3>8RP>o<6B}*NWUd7%*41#Le=lxhvs(?DKM)O!_yxi`561;1mE2=gt5Cl++zIXkT3)JEv=>>!2D<+#b6yO$dx^(BxsO7m+M= zdfT+Sass;ZUwWK&tx?CMokp&S9mJk1`B!uB47<|aTFcfiJ!EdaX57o7lPm8}7YT2S zaj`2nLVpu|@nlyv1183Uj{(~_E=Kfcc6qgX&%!t!jo@#|e!`rPCZDA^K&R-lzK~=p zZsl4V+m%d~w2f(!l330;8CRa_C5G-RkC;P#1;M^llA-P}@-c^&wKPLpB~OEaPhUjs zP?aIS6*1Hgndo|)Oa3alNh7E(>%L4_c^zIWMIs4WWH}{+&k!HJm^qz0oU{xZu7AIa ziJy2?wM*>l_HQ|ml-AoeI!He~T^dkCniOn+vvWqokMzJX=(n#fv~I+q;xQx&Tt ziQoV^e(-m5EVK$N*rznK0W`zvf=0g;2JYA*&g@ISbh4HkQyG-N- z)xyC9=m}wXWwhLW`rC_C^T#db+U0eEJ0`+$*2+bk3FKBNJmPREq|;%2=gJF^DJDA1 zD;P+;3T+AT z>>D$eLDy_Mwjk9s$Q&xN>8$X;8V`GLVJs>;iAJ>}A!EzJwNy_ns^~zJn8#!1I5=EGF`;5U{ z7kLIG-XOw8t*-VFpyn8CAX-FI7-aD|(+PC1Eg^HgzvY6}l(MI^9pl=`fO z>Q3u{7HoHmUD_iaLL+tB0>f%hy0g=Q503HMDbc{rvlBG1v%<2p^fdpEZsgwGZ@3Vp zC1Lv@Fg>vl3we3Y?a+4Z{MqGzowOyba|c2e(Yw-baXh zC@vV{7FevN{BRqs;7+!(B58r;HRlQ*uPXXM7kn@AO z*Lu0iTH$@pZ~1>)2RYZ(mCRgTzPdmJ`*D@CVT8F~yfe>h4)GaCUj|#*P@sm9HWwzq zu><@(Z36}ukwe;={9g*yZj6Tb2b}joMmUPr`L_ex*wf7`Z#X9B)@5t}s|e(~=}2EY z2-pg}$!~#qVT*~h#YEd;Vn`~`n&_f9|DulfL^}&FB82_2X^4RZa+``-1F5c_vh842QR?iK%fR%s>yXV z^*jLk9Ow)5K_!A?v^H!u$fep?fc3me%mOd6DyMZH;dN%JQ4mXjX2XZecEL6+h?Wo` z?;zuTXr@<3CBy!H(IRP$<_^N&po_+Pll`be|KQ%NrHDfs0~VK(Ls8u%F!n0ZtxX9U zflms31(t8SGB94&5-+OKv;@FYv5L#4a39lcJx*%~htB_`^@IObSxlhp%&)?I)o$Bm ztshEN`cSIp2_X}t;&XfZS$OD}f`y}2^C4FVKyt1%``FR?%He+>@>a6rxpv&wRN8Uo z`Sm=b1ZEfyU6P|6*i2;urufmS-GGbI6!cEyJ5Ziw7I!!QkS+%qtDI>U1 z>6*>|V;Y~>X{K@i$6nsk{KZD~$;36^kmCKrZtdD)zqG@zi?l9DX)~3R8SSHX<`85W zY0)0oZQJ?QxH);g?+)#OVLjP5T93IOu8Yi)|NB5U_9>7C^*?=+Bh5Ei-}nT|cHrAR9)Pmh#_)f+_z+^$iv4@e|~`804KD3Nn&*-W`Cn&eUe#D7s*YZqFsBM6v*76VPkg+zQ@R4D z2PE`W^di!a$V%s)r!f-VJLzbjDT=xR+LRi!Cp%Q5SMo0#p@xy4Q-px5N#tQcAXhfePPqo2O532D;+5jsf8At>DGT~@&|mM(gswzno&r#$1H1B}j^aH< z^>5Y@=*qR*RyQRPPg)BfgH~k{ACz;&^HRkGKls>YL%RwY>6db%y@wt~I_E!lm{^+C zdp&*wUtRP3!!bb>nI0u zx-wHM8;%;b1~lR4&6|o3T2+mSqgsyzWWz;tX;deEAi>$fIgk3?b}eT_c=z6B;)L+L z;ve0fj-SX6q%vK8po&sBx{`k!yVn$9K9y1ilA>$Ca0`nJct5YQuOdDfpdS&G^TfLA zH^+$O(np05X^;)|8m?wK_=lMqb^socMj~_i52n;lGo_M5lu-y$+J$RBYk>po$QQdD z-0sp4>$+wz<}EuscA<&f#e|Tl`O^Gd;D+~;;KfxpKv_1dA7S1a^f9K#* z@LY=JSBKRY(&Y80ilnsTOdl~o@R=O2It6at26rhYRyApLA>rnYDhFOW3j03}vO8~6 z_Bh_>?W-pe_!nI2V{B9kDoI{n;tS@w)1NLa7)}s=c6zILn@%z`R)XZR zrN{f8!7J2cnchFazRR-M1d4^-z2V^j!oaxhl6TEq4{p1xaJ?3^6K(MdjfOtkR@!P> znu`4MpHw7^rXt%q_mGP7@*wlgH4v#Hzmqt9V{RP!-E_G4!@hw6uo8-leifcl{nQ%E zeN;b#?`t+*A$B8)1(nku^2V}g7IzpKV{E*2WjMiU!>@N+j%sZuiLlEu3YYX|uXCkIK%PiR$hRQV;o*-KZ z+_%6^f~zxg71iEb6NXkoTrb+!>Sp^rh+duIek&~ z4Xl#0#n&5$1dPuHpJD&Jn|zRXLpJ2Gi`J90`VS_c>E!G>&UGeLfJ?8Z9CtV7YVsR{o87i&s(XmA?av z8%4Vd9=&+n zkbR2#>4n?}Cq`D9?$yq#*~%r{1TV2T1hlmEV0`E}rXb)CCk!-HPFi>2I{l$a)n(TO zt`AS4nPCL?)35Iqq$pdv=B5L3@Eq6kJICo7iRJd^Oil`m-TAS645dNfdMU*` z%k)ulO`0f$vV%EJQ0Z;Dj~G`3w`8S4&y*%i*13R^GTtdqylqI>7?us+pgiBcI;f+j zQ+uj5p9zcEIVzl_2|WUYMBD85xZ3^sNcdTHfvUEkv>OsT7eDJL6q!c;Sx@fnBA)%? z*rH7dyl2*Y1KC7hg6KY7V(VIsidpuv3*4$lR0tu&iPtAHJR~@u%vlLX!K3&(`^6sD zqmq%1`pF%qmm;e^RSv>ASNLIxn_H%>s>Eoag-?d{(WT{#_Uf`7*vck{1L-Wwb1RPH zBoJ6>$Fzu7kI%e7u^lNkM`ez%SrBVWQqkAVwGPM`rkVOojc%!*Ut5ftZf&9zdP1&> z5=T9Y4oJj-#TO|-_;P0K=VGkES0u%?j zse1dY=0*+~uWN1V4Q*Um)WeNyq+~89BO9#*CdfU3vBSBtwQ~ls>1CLpber5U18E@h zjyYxR(iZwGDy}qn=#ZCTyI?k!>0tg)d8bENcKZ0vr=Y)q_ONpSZsdZzSv&fLnO!=Q z#xVH6KqH4G(5EZUrYJA#qrtliEQn%L0TmNpoZlV=JRkh&UStn#;T-8!N_>a0Ip^t9 z2n&;C0a*R`%Oq=*0feD{7xkJ!j~)14%>XCzw-;^zx=6PZx?~|>`421mEx>Pb)@v+< znmQjmZv#%Xh?OpPv32>}@TC_rSp!v$%a4)oIpMoV)=So6euaSn8;o6=Wm}YIYPHnY6KuP&o_aogb zp*?**tnCqKhbO?PF;xM?T`1b&yw{hEKA#RMeF(4h@y@R*G<@@Eap0!_F$@I`uCzp$ z-bk!Eh~l2uI>)aZ0B&HLZJ)RS6DGsNaod%x%Y`h1ZxG1cw6TO1ZTWlyb1r$t#+BWA z#y#(%kOmj_S9#>^pmUD3e!@@>8wfg73U2%ecj6IGQ%Mk-yo~PUPx2m{royVyN~Jf| zHme(g^_%);=MS7(JNm;LIY=o)%#n4jafQWs3jK^7ai9pbhZFF3lkFkh1^mEEHaAYS zCx_Z}-9QEtM?H*aY^1t`olK^}S3Mddd1-38Wkzs9M5zh90BLrX!593J!{kRFQ2$Bx}AbJz;&RMA(7 z9Zw8V2#cozRwem1U<F@;SyEv}0=I)ZOHi>!*?P+~WpfaikS{H1wIF zig9g?skJ62_t^Fl;vZ`J^hd@ov#B|RpEHr$e8oa{E-jY?8>f{$4Ozx7BPYhS63Rm~ z#LFj^>a#_wb&RznICaM~TgT~_b27-(QrAtiU55(a^~TAf{c+IF?5WyxXs165J!#jw zhT{bl?I!BHW$4iOttlbaqIr7su}^buLtnL)IywBN}j{_rw zm5973eFe((=k;VK6J1I`>Y^v@P4+vPvjPG>UGUP+p9$H^KJ>}Q6FN^aAaeV}3!0c2 zbHyRzd!dGCY7NW5lpxjq=zoZmKlo^T2=PSX1&Y$8X@dC}^=6vR_@fC#T!Udz!hYqJ zw$TL0m1eViX}iPEnXE2AOan?;EcAv>cX|L_7E9O+cT-7&$1rCsJz$ObSvf{*u{`?V zZgJRP&s5QN`g8#>0!>l}~c@|@PNuX)2 zw3mKQP?+xb9E1Nwj-E#!LZ2?E+}>0ni5hKv4#_#!4nrL9ibL>p7Lb7o+Z+{fHG3{z z>5!Nk#jZBRM`d?a80EH2P@;ZzgKf42{G3-E<*ll&xL##{Kqg9h9G$!heSppCrxuY0 ziMO3QU)C&Qrest!5!l$zsR=u9EkfXU5sO_K}Eiq(4U>cgIU zqkZwmv<8yTDt2udAA&eZb^yj)fO23$$WNWHNc?l22bhPswv~qp0#_%V|Dzg`}4 z#ZRa3sBd{iDl5Gu>;6S z_(&^~UfKAux4UUAINOncF=hI<1&tViLLb_k)dMJFn+tX_q&^(AGKwMzg}AOhD|%8T zbF=X?1DZ~uspC$;g09*GeF@)T8 z&R#k2i|$uAaE+o|_Bg-AG2}V&C#CZWj|ztpN9w30mIYuNxhNe=Y9G4EhCpfRao52R zc*hJx7$a{v+U`-iBI^)+*jJdg=%VAQ74~?DE|4AJ{5To5J2 z@@d}Wjtg@D`c(SZH7P*45gymMbWN|>pj-);Src2XC}7A`N4EXA`aQyLsMz?talJ+` z9v_rkBrlMfbPO0anI9Wi$l~xf#4coRhB_zin5}PMWa!bOwg**udks?+scj71z)>?@kobUX5+rS3HLyhf8h$AJiIs zhGvWXKSc8hWv5g6ksQ0_^ysT3xV-Nfeb##Zue~17sdmQmfLW9<7)PaJ7~g;_<0AiT zz9Md3_At}qJ8fE*DK>8JEhJ8|MXXqc4U%2Sw!tFU%RE>@FQbf2vjRd|;Fa{=kFmI* zT#5+swXne$x?0w{WgWKJ!7 zp0(Bk5h4IJ9-P_QDd>@|l9?SkPB}m6Lh4}{p8j0IVB)h};=C4;kaA)2z=A>RInNQq ztYJen90q^lR+Wmv{}LK~Rka7(^yYz1-AfsDDe){Yw<;Z47uf4t;s0{B!vY2;)GlN) zPfohEu%ERd=zv$@fUQY&8WTg2(2zJH1ILe5(xxm4@1|%ommq8BA7vUV7woA9biJ?y z{w_NBpVcvU2GB~F&pk|XQT6Coa>G%oe|C?*mvXsRbhhYcRhqpj$Q{VDfjnAd zs$gUPrSpG*2Q`E^sWSg&Mx}4=o_^g!Fa0wl1+MQQZ1-)X;VkWvysRZHfNb-~eRRCD zic~7S`h6!`aVEF)bu>MP#dB5OiD!aq?@~uLY}jFJ_479R@r{Zrich{5$)(*&)BbS! zM^F0?1zfv_rIm%7>0@7geQ)o_NR@^CjDg3&LZ9>((y3qasDlFosHMmycuR+no~`pl zUX?R8r+fROyY|+tVnh8q735=mnO@$mlL6l_NQgrxtZR8RqYZ9)2E+4F2maH}6NgXV zH^wL2>5!;hN$%efdefft%UQW-WJd5(8C}O@^`s1} zeE8&onV??k*D6B2>4ZyhW_L2i({m^@#a@{5fNtanZmA!0`m{hs<5HXSTJPi;YV%yu z7xqDY&(XFnhayNC*n}QvFQ&(NAZiXP(OW zBvV$kzWXPB)DfmcSC>AB759lT{HBN7cO+ZZ0o2dn#wpxx={&BK^-RLU3~xrab6E+K zR%0!;?=)v_nrv8GWS*McCxnD3dy?W@gRI<9gu!BXLO|cMs)o`9FMU`5R zj0&Nk4hqMbyeaot#+A0?-Gx1&=D2QLop=6NnRU!qgMYcgY%J`Al(oCmixDnkUPNd* zZ{Kiu4`HWgLl8|-8Q?@Otn5bQ3G14$DERv1Wr$->eEfXEhu-woY7(WM@}xYZk*`Yp zN5Q#fam+7g82$@3Z`ilOcg&|bJ?nI0ntb2ZXny2iTU-ZcWWvCAf@M{yKp47I%mq8L zVmM)wtGjGi)mvtvN>cU_^)dZnN}O#AT=m^RU-pUf1Gh~cbWi4qkwPpk(*JtuT`F*J z?;b<#ce@Ft>$aZq^V1A#?~U?r;fME9OOzShE=fUQjy-JH2ruWZ2_JKR!ttWp1&W(B zwc2_OXAoFPZ))MO49Ln`N2+%85i8LTxyr;*anCwnRq4sV`ORp+r|7Or`mV}x&4>#s zn#}_R^6j5f%#2vE96?ji+iY8GQylQMu(k~vyBYau5S`W97A^lW&l*(@#7ENx^065#(kC8;@5TE*ZUWK8C*YCH?FP=NJ0Cyb+-{0oTcbDih+n zF=}dY{uNbHK|q&lkg@6Z3qqbCQ;2cK?Bu(AoBKlv>O))-XEe0z9fd!SzbYE&^cvR3 z#r-Z^CVtMqRkd7r?8fbg!|%!7iq~5>KJemWYN6xoF(>0~Gn2+%)k$#TLZf`8${N0q z@^yC7B`m2e$9!ymoHUZ(Al0YZBZYVG@Q_C;56Eu*5!SS$*ko+TyB6SMOjMS8MsHW$ zu3I@v@Ajai=xe1JUCsL&D_yfoxa?Y+nSgSC?{4gzT!Qh@ZfO@+oTgGWCZ#ML9BNc_ z-a0TX!ikPc)C*gccLT(D$9}q<_r6~_;D2V9f)9Rvtu`XQ79~97VX!==Iv>h#EdenP zZ@=H5&|PjWyVCvMDriw%IFF%Zl%yH5r5R&QnhY!sz&n~_6^LmrbzcpNg?R+YBpsCc zNH^~gHlm6}TphToMg{jQs7{A{`iQXr7}=oA7HP3(5YA#Z@BUKig6|)Yw~eT9!dt>u ztT{Z8@X0xo+}^}N=f|7+y!FiLH2^9v`G9pw-1ueg?OVc-9&I@fF5d6&A)aC0vAeF9 z=|&p#Nsg;d6Do9mW3ox{5c129S&EHnHIFzrQ-?4w_7U2xd2dQxYSO&{21P(zQ{>V`S-$}hpBdYtJ2g;K6cDR1*o-n@PyOqe|FV3rG{n7t8_m(U zl5O^5Ov$^jQ-#^$>?0knmsQ`cu(7qEmshEIW7KHeRbdDo1HiX#SE?TfR>Aalb;O=T zhn8dN?WA`X#Xx)QN*XwZ4&_4){C2?@7PQT#I`;GNlztZ5|5R2s5#ajBCy2|4xt*m!+U%aN%w?Ycsbu5Y`zHlRN2-x$@7h+niG!O|97B^! z`>E7y9P<>zcU2o;;X=?WuPr_{G~y`$abgl>wh)MUz$Jqz6E>op-d;P{FCllLc3vtt z;tObk+b#eFH}&+{5w4h;7J%({D*!{xZKgi{0h8-(82Jh}HVk@~RxG!px3rzPeFnA`@h{Y0^Iwy~ti+X?PcJYI2WAA@{^3eJ_lI9YYY zL{E-vQ~^F+l^q4kF-iStv)0O)H8LNoUpD#|Y^JCbsXRPjm?Q{{_f9N4+2%&3l1Z=V z{GbV=MOgE;m$-4^(9mami)mI3vx0;#40v7YZ(Z5=1zLD2b?Jx~jGJ3UEeP*^*L>+* z<%$!Um>)8BEnIdZ#RY2uqKH&5Dlx|1nK}NI8M-Tp0II?`=u6^mi@kpDTMOq|YoL@N z@jUd`xGrB{xotdsk}-lNx8k(loUNAKY+H@;X;y4o6rd*-se&x+(3bSqRn}KkE-~|-|heIG7vy7NdcDxEs2M3^DPE? z4&kmw;sVb1v0oqWTPBc~i}lIM&*e|?IGg!#6YySwy1D5@G#JT^3n{o>6P? z@@NYcc}5LoJ#S`+NhgklK*gVU{3C-Y>JiydhmkzbOU^8#9JL7HUIW8to(j1?VTev2 zLzJ1(*RpDK9S*klB@)2;@6UYIV`$b_A$5tbRCezQlVfQ>rjO0b)NVoBEEVjKK(gkf zU-$9xX~iW-pUTHugb;m|QbnqSFldoeo)Ud0Ey77j$@uY2AW z9_UD>IYs+7#1AnN56Qu3u&Qq^{+zTjsuzNqfA9F*lC)Bec``599Dv*GRlHi0fpcZH zpubiY0AUm1Iu?EH)m2(Nn7RfXY5%61wUeRY#Q9$%F@)ZYf7r?60{Lk_TepX&Prq|^ zkY6N(7Xf}k*RNf3j9<^@2>!xdXG+Noq3&)w3c$&^A$22~7|y1(Z>+{1qzmww3rkYP z^{aJ5WM0=pmm$Ll3fl3vR#JYb z4YLnfSB2G02{D2}4E(gWp+VeYonrc=YYcg?izJ+Ltkk?VGZJ#50{*rlRdP=YwWW0r z!?@bTOXqik?%im}ZZGvCVNsFSz?pH2p_*{Jg5U!J*^Hfa=0%_T3AXCqFFp>fX=;=;mkhL_dpck{Ja&^MAk&P_0%W#>*z~v zz0u-JJ0U4TlT0lP0q87`X-nJ=5qlZx@6s!gC;paofhIHXb4`eG{)gmNJzSN#p1?EX zLt33!Dk$$=I_FYcGxO3?b^p6F<=dk!LL-yZJA z$pOAU6B<0DX9wZg^m*MN-3t=T7OihvEh40*m>Ju906MvhWm)+X!KHT?=WFHbzk@?r z4gWemT8{VK^^ToXwGZYA5D4pV4{Dz|rVZ3A&NA8!rJ3uemdI zb{7i1sii^aOSF4A(X!lU@%HU>5G5CTQOO6{Y`mcmUN?p{Lt#G+)7@IsqvGJrD{q@3 zVt2{#-b~xU_!dkaYmwCOTFcT*%Z0(Yz*XUG_k>zqdD#|^9nZ|P53SOtw7?AGuUc53 zrLMWgujlDE-upv>EUPMu`VGBn+DIxcARW9G-hG`)8s5Ge8+qs&lmgjA2FD)8z2i*$ zD+(r16q1f_+KFA!f^@v4qLS~j+2o#wy2GxO15HbpymzM)9U>2W7cY7Dj(HTha{1HK z$swEGEV_0Yq&YrebDvcLk3usI2=BXgbOW8AQEivORmq{-K;T9KA3CbYfDwCHL5Vr(50m*9n3Dal*6Q z;0a6bMLX+s)GjsDbuZn%Dx%rf;be${Vk?X711_Jl;+DLQbQN4&bR zt!ku4le|_4W)jyL`>y%W2E<}Q(>-JTJ07gUnJsidjLF-d6tnmtqvQzGnGt-;p|=36 zf!LL=pE5@+o0uUh=WBy(=S67G`i(inQgv&#a5Lx8vfD`nfU3N`q%VyFe-iYBl_HTjoJpl=s#)EW-&2@Tro^Das#vWfBs6h*y^ig=L(pBw?@fJ03&|DGU1DuRL(U zJ!y2@XK-7VJDOINYDFCTl5o1OcV=hHqqx!A*wsI0{R{rVeUh@uKbi!|?Tx!dytX0> zY2{mv4d&78rGMWW?|bk_Y|-mtG<#*UNPv7YGR`}8-0}@8%}E;2Ky!qS>{r!s9_FdN zw%AsSaH%QK8D+(U3I|N^Ic(1NxI==vqKQ^Wfo~gz-p!e|{Ljm|(=?Wf3co&_mlYOv zW+)bYkWp5+R$#*|9H3zuwD`$E+_n4u&_<;p#^~HbJlxTFeOwC=C|$1b)lS)dq-Ama zg})z)ydx;@^n0U?L)ywnf)uaSLCXB-AeH)sh6@*3)5b5R3lw^ofUl^&bHBaRQ{u0g ze(F{0mDd=S`$|xtFS&5=4idZAdE2XB$KXY%EbTykv;#fV)zGgDX14gGi-WLYn~$&+ zNI+Lbv(#Y-%>M6~o>5d%R;858+Q`Dq8ihB~A{Jeao@%lDknvY_j-7YLa}3y{#~;8S z4$i)n$FNNiRp6$NmE-#=y8F1e1^mC-r7nhs#y8e%9ajyC6 zilFp~N=9)_Gk$+;{|1zF-tY1quXvgM=8;5RwYL5nP7;QwRqJ)@f1w)f#sL{y}yltU9Kigb`BRjD>mQF;JDK#+id zp@(8a1VKf5Q&5l=n)H&WK!i|KN`TO$3ZY}@A@2(4(R+U9-gCeH-*Lxq_(f#zwbop7 zKJ%H+oSR%!IW!cO9U$l?baZA;hW(gUhJZ0{Z|Kck_JwN4v}vdT&#l*(k<|r+ z-bGZP(WY0cf&)HRp-sH&0PvvOH=QG5+i0XEsk@^BHCrJA9+>A& zDfbP3R`qzR7Rg&_8J11x(8Tn?2e!0L2jnrlmvI&FB+rD(SwljeZ-1NHLCBC`6%=aY?c?_>9s^v@dVWu4@mfnA7qsWOno?~YJnZ`4*+rBm??ZJTNU z-s`||07Q3%dL|TVK=L0{KjkR6NSBL7Psx1Jh2V-2s)aX^WV7q?_h7bFNYg?$Dhr(B zE9iM-1MRI61gZAgoNBe~zM<^u2DgOL_%;*sY+^uiEwkrHPk_TMJ}T$Mr--Q=@W7xI zn#8#I_@x$85108pm>)su2``P(1PAMgH88b^j6Fkq{si65cLuYU)xXWKv+KuZTdg*q zDw%jTd0JQ^s6-4tn!yq$p7qB8^ntNQU1@o>&tV@wsZQO>aTbMNFb}sNzRusMN`)+6 zzn$(fQGQoi0VapBtnX2-eE{(sEk&seM7D24B0^ah7}`Lb7B&M($v)Qk6Sl#BF^xzF z^0kBJbiz$55n%%C?X;NI8z0)+W#!*r-?*LO>Plsy>a=#t!>B;g+?=TIxBFIZfIuK& z#HEWct{0FTkl0-Mb*$g*#0Ik8|00j>mdr-aSkZdQQcF+59NMk0b<@20s2BwgKtO^B zF582;ICiS(Gxd(tt6!9vat7nicNnX6>QY-}4|seNb&^?obaJ)!93j3~`plJm*18Q{ zSmB7eyj=xHRSC9*r{N?Mxv-UwDLSN#K3@bhv)?$(!kAm(UcT{wW5g}^ibzDs&14r3 zgvx==gGH6%{nX_yQFz`=6@m1`F{d+!STJyg5Oz~(eG~mbv_=vo+GcD=+a5}^t^Q+C z#|C|xvw)f=2dhyAa_`4pkPzBiLOM_?3;OdDmm06VG__O?gU{MNu}zaJ?Ms9c&KX6e zuflG)D$KBaYVXR=dQ**j6+K8t_R7s0TNI&QO-U!V*T)eP?Je!sz23BeV8nPxc52Mx z&Q25zp4^E=cUjOW^NGSiCEk-qgB_w!l@u=EU$;_&!A1WUe*%cSv33qmSnQLn+=(h#oL+nX>x#Vk*buY^6O$pX)d zIZjVM|W2F5KQhNNmu=oz$~v0wvS&+TUQya>m-X2 zeyxvM*2Z&HBTrB8U>`D3&Yg1fjX#fGB?QtnoNi9tCJ_h+-{zB(DP54TauCiHaBN|~ z4a*h`u4gWH%+VmVGkeG%Q;d>{;bvCz35xNEnx1!vUANL}h_-ooZ{!GEr*R!KfnBm; z$=xSP3&*-Jvq%NZWz7Dp*zAsUXhBab<#3O)04Sv?oY28Dx0`m}=_6Mt)jm7)wgaCa zcldRJ(T1Hd;^rMcfYqR3en341SUtye>vq)M)Vp*d(*g`v&WzO>dsRZ@H!3jgY>g*%Ce((UZEddIE639r zFr1?wLPQ!IlnofEVD?FSd;z%0NnLzo-5ryiEqc|ky+w)~RMUIkwd)%q>>*q%EHUVt zQ{x6Jfz!nz=K{N^%NH2?7W=FA^E=hOMnT18W|~dJ)ox~)=P3}s$+URM63Vw~u2AKU z#YC6rP!rl3-24z%)lXKcxmZ2xk-1ClovpEq9Vx?#4u0j=rXY~d6a?}r#{Wx7k?UV< zqk48WKYM0FE#H#m5PCeh7I`K4=x(XgB?mD&yk%O>&Ka)GKGqFx{62ZJqFT1gU6<}VM1zP6e=4eY7S6+JM$qiKCb)TE8nVq!~IBm}Q zmJO}SOGU~eBw=K$BDEzPTDssytR*q^`&iL=whP09Z0`zfZ}Ubzh5(tSno80BI|{m# z^|EM!^*(u#$+_<@<^bY(8EEbR1qq|(trFRwoSRAUJ-u=D1Pk)phsm1y59~4xT~x#3 z>_*L{3RvhUIO6Guy;UpMj}T`fMuTt<2W*3GGDz~K-tUvV!fxeX*jtO(IK6edr;-sG zi}WxXJQq&6=|M?XAvaIi2+pq;!sX)qwOa%N;Yx0tgqC~BS0T!g&m{1Qm!bsx_BwvU znYLvo-$p5TT~@EHcy^uWY?hyQvKC6HUgi3FUHf)9PrauwBgj^7-4pn5AT>vz7#O_c zX|Trg=iZp8pU?fvnI4o4QeW7Z+E1P`=!gs$CrmZ9spbqUat#_8BfeH?tIcx!)B-qR z(j{X8LkxNokJg8qD_52JPZw`NTc4Mpu&_#xpm9Gp5@L<#(b5@sedbo(^6ooHCf~2W zXlv=2U4qB?$H-HX^KBQWml*7*)R1FIJP!Y?%`UFB>KS?+nu)9m;|rzWfdjfr^w#3B zZ)vxhjLD?FMdR4d&k7^TVf4lVYPQ9ny`dU+AFaSdA00^at#@qDYay$K(Fz-iq%b@XK^(>+1 z!@!0st}9#jkFpphuYQJ7gaD?cHd&$X;flLys;5WHmWfLsv+MA-eM(8O(N(%LsP6Nk zU%OdXfULSHTu?{3t9#OXb`{*a<%I1XpYAbx_Q%2`il#ik!DWdDt&Qj2LueY!g40b& z&FypHE;bA}*L{-EY@65O!2d=$0t365uGa4guNWK2H76vm?B!w^=x*rXI`lC|_GS?a z`&^PW4>uqOLGXSa?Th z%PUy7IhHT&wvMComA>EBdkD#vYIdvw92|EjKA)cA^9!{ejeTgKr>d?zt!u-q$vIC$ zlk*Nj?cIG-u7Y*Jij4+5G`5p&D)^_Fa`4eWl^W{VtyIb(U9g94M=7pIAV@Y)_nZF_ zuK>634zANvmyY%k?Eq1EKyHW3v{@^V{)>45K4#hM0#a);wq64V7_yRJ-yxo#d<;gz zIO3Z9S4I-&h`tSXI7A2HAQ5C>m>KW2rf)Mxy*wJ88L=9MM z_>)ycd*Z+=UhkpcVb``4)p~}nSV>g1rG3|hjq0iF9N#vHh@I8?4d2z(h%{#4Cw(*L z;83TeKmYn*xzWdUK_LI$MP~$}>pwmi#QEjVx_shW%X5QPdKTjMTZ(E^aTXr?sTH+3 z??QM{htED$?xppTI{blR;!fN6boB>5z1y5VcMU?fE(2Jer9bptv{8DppWq%wl@d*N zt$zAkp6vxfx{495DAMxqT#UJkh~O;O!2AQ>cvFR$B~XylfMgz1VMfca3fI@ZzVKa~ zAv~30BtzS%Z<&Jn!XZdc_GYkSLUW?49HfyUb+-2BM<} zVJZ}BNUu|j)74m_zcD~VkPZ^$MhU)(#NaVt!_dD@>e4c`H;$@AE&h#wm-wY-hD#F} zLcDx%kx(jLJM?rMAeNZ?@`R0#Y+-F)5XPsAdNow%8MnzR2+fG?3sDTm>E#Dg;oxkL znmgpk$RSNV^>sG7hHX4g*{?8@BlU~dY@b&{Y6%Y$&I`|=Fv~H|T{FxyR7r7)v7Igw)ZWe`x<=VYt+=D>WXON&8-Ti zq$|pds;^t)&B$+;3oVPRj)}Ua0NeUf=CdMB(k1Uu8vxK5N3c9A)D#P=KPs=2V5jtx z5D@&jD#VXa8Bo&!g-uofJXy}YGEs95|8fZJ*ZK7HChsLb#OJJC(|h*~)kI!kMynmz zwC|E(5PKe6OTC(;+D7+Ej5^N3q1z&4btN(o*J3){tsYVL$YkfaXpN{~B)4tCH086P zo#~NkW}E$pmHv8V#NgI)84lZA>6jV|^)#K>2(m@UhkXOn`5?;_o*yIn;7P!r=kHEA z{~afB>;jcVqm_V9Rb4A{v0KQS_E0M7IMal}Q$pBlwwD<0(H2w$l;alWb1i5KxCCmM z5?7eXv#VbHNkX3eg#v1IyMNs7VT#)VG*1Nbj>;)Wq!n`>HHKS&JO4Q4BFzJTD5iI> zJ^X$}Fbam3FM$(`O6;&~C7{&s+I3m-tl)XkGUlWxbhDN2oh~~?nNsf)MN8%1h`YV$ zBCchgyp_AAH`%>$7wf5rPryhh!@Fj>uiJ}l%n7*QaK8Q?1uEi2*@zlnlCBM=*A@TZ zpa2{20$jEbs-$tbq`pT1Pwjz`<=%!q-;Mg=9tuuUUbvlhek|4s`CZJK~PR1Weeg2V*b|>nn@5 zN!^tRilFMv;L`LN-8?+S^Py!udnVjFuWo5zch1Ue>Ak$C)hTb0r5^aJ=b*;7%9>;` zlY6Y&8F{IAm^Xy&{g0fyX3fH|`H3)VG=Ugi=_CxUyc`Z>`$BHNxWG6Rf-?*BKA4t|Xk{2OPjPfvLVq3i3l1YvIMBuXcsowzq?sA#k&Vt>A$^sa8yjQM zs4$s6`Hi`QwNqJLZY6_u&XM`vw4Trum~L^31NGd6fy@Z~h-^f4TX`eRf{CvRu=Z!z z5Hb(HMBT0*r<)=BDcTmKOIR~Lf^O)-p~#?RdnJJ&2X+a)<2H1Fr{7CC=2glu?>Op9 z?$nCMH3cqX^o$I;Tx4Y3c|^GVZWp2Y$o*%RYvf~O@8ddyp)On>7E8sj2R>W+l-Azj zG{mzfh_uMOl4d}o={OY06a)^XE@y=sHC5tD&pzQ@9AL6&9C~mu*%YFlBcblBozp6E zwx`#kt5xp!%jrFX9xEzW_s*2a*KHbgoS?AWxHCSZ5-lRiEJriw=A8~4V z#;@9UxNc-4MuOD4;IhEYo}ban74_*&dY4nSGUkYB z9@a_b!E^cy)8h*^`(Mc`;qTGy+aJo+-=+RQhVe1tLgK2{EV$xgPl9EUKG#1`dt<4Y?eTC<;N1GmIWhP4VV}Bz`;)cJwsHPi z^lOnI(#kh|c65ub>TWGZAyd-IMDJkqZ6xm=p5yuY^EpM2F!}~ZU@*Ng&kd~Z730Wo z9f-gz+p$?Emn@oAc{G~S;XGhngf!pVl(4>{;x}*Yg4f-;5>bl1F+-q_cV9*tB8yv_ zyZ1NsJ5}{8yO!lO!R7jJ*t(N~04?4r¨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 literal 0 HcmV?d00001 diff --git a/assets/vscode_git_clone1.qDoYJxim.png b/assets/vscode_git_clone1.qDoYJxim.png new file mode 100644 index 0000000000000000000000000000000000000000..a9dacc08eb9cefcf5e98b9c04012edf36b23483b GIT binary patch literal 143682 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 bmhHpd{#f>X%U^XM;PVe>H>XO+%QycCt`8Hk literal 0 HcmV?d00001 diff --git a/assets/vscode_git_clone2.CEP9JvgJ.png b/assets/vscode_git_clone2.CEP9JvgJ.png new file mode 100644 index 0000000000000000000000000000000000000000..872adf5a2f20df9147be1483d2bf695340f1d7d5 GIT binary patch literal 153464 zcmd3OcT`i`_HHPG2!f!}iwc5D7X|6qz(P?G>Agt_y+bIX(u9a0h@mOcdr9a;>0LS` zkkAnVgc?dncst&E&+nXb?|b*X|K1pDFajI)nrqf?&GjuJo@lC_KE-(o1OlCY_~70% z5QsJy1fniENdx?ZQ$iOH0$l(-ym$M#55;Odq{K)k1*aIKSGh7;Na*jG^ly&pdpBL* z(Ib)S-_Dl0tYfzde=9h{SHkyaxN2Blvd{O8y7WQNy! z`}Z;OyZjf_6S5?}Oxby}2Zua02T{D+=b+n^x+WyBJKcVQX0csmK*MmLmse(cp)M(V z>ZQzI#Q~%XF=4;5!gXauJ3Y-Nka(jdy6QU!SjenYFh~`|A8ZcjCw-VE1MFn!?kbMe%7KqP6@i zRC`pTLxxWqtk{U*RNr$QxJ`BpX;z&5w-+`Auy5dPX7aza0 zMRL%XnZ>iKfcOI+2?we!-}@$ZRMMn^WBBIOG0RoC-zJ8$c@G0b?D>x(s)#ep?^3l8 zPq+r%$?FekfT0Oa;T)2oWW}~x0_Fge*bJyjr~lW<{AI--n6~J^n@}$Tr#aZT*6%bEz_+T)Dimehn-wE&ZQ;p($J<-5)Zw zjYXS6K;~&GoV0A7)E$>)>`C7D=Tl%l01P{OAJIDTsk80-h zr-m?@mow3ZK6jU7{IXNLKBxGvS9_s-mnIA`hoh^i8wKTkWipKiy#e7A|F%HjttY8! z#uAT4>KhM1!))nF6ga+<1co0CuS=j8*MrjeYy*k6{^jOB{_N%+46kL(W}@|dnpx2u z2fb5#$D4d8)1y|?aoMHh=F`OR$)Eh|zAhAG?fhk=bJ6^sX!o>_^6hc&Gx)2oA*apx zs3|RHPS8jSEs`^Zg!1no7>oeyc960P2oQaWY9=}nSgZ9+?`KTQfkukc2I;8(c(PB4 z;5aY7#rD@pe$Sb3fokRK6O76u$}q?&bJM$%Op@1#!o#5rcgTUw4hH5RTac`k_{flr zHsQL9^v=T;2l-c1cjCpj60?8Q`d&+hOjG~;-KvQcyQg!Y7jE)+j8~q)%f5y%pNtz| z6|4|nqX&e)#&98+SviwMIm2!CDO2D*GcyvPEaREpPnd7jMI8)v8JtJY zPXu|ve;xG_=}MHl=Y1M)k0(w8evo!|ob7g6-x0whoTv16xV-suxY)6ubgtS_tmD|` zy3uI24XcvsyVcw$k5kCP8@$r?-*wyWZ}4CxXR1Gsra=o8$cYuH4H6YjYlHNrr2pbN zRK-jrx#_}ai=Q6H&)vBn^x_qbL{#G%c8Le))82Gwf7QLbkcMN)+?R3L4VWqc@R!~fK4%wYYy-=)GBHiWi8P|V*WLEG z$;a4-PDmL3?cb^m1^X2Xl`UNe4LS($Ngw6A<9lcD4@Eu(vadW$<7fEBQH4i3)UxEZ zL-{I24H4sQ(Ok78g`dSMC9{wUNc5YF}rGlm}9?b33zf7dCXRx>+^^ajdZj@OWr=;CQ2 zgE{8zxX^7(|MX#CxM-;;6&07X<1hQ+Vu6gT@byehT1M`Y1Mab_OycDUDfl%{LdnN! z7+GN6+WsKYw%2S+#2wA7tSqE}%YZ9XnN$VY2<2O?Ap)T@U1aX+qQAutRF)Dwz`+e? zG(KTI9YlY|)DcOz_Vruo5kc(!={5 ziAu8U?2I%<5?-H4zDk$8pI8ibzXKIX-pILy<*whKjnWvhc)YP#&u^d|9+f7Kt1F-R z6&Yh#?+5Sg>-*d_wdP5#BkPUJ zk&DX#|d)EqUWu2Z_j~)mu3m=#Y zIMlyGRXRK0s`)w>iC9S4CYz6{Na2B=@;)Dfh59@5bSbJYMBO=3atdm#5_{_EKb_Ze z%~qytv^yN6I*6zC78jx<{MP;xR+?EZ(MF29An{(9hn($80N?!0xkI$AK@{qZdisa0 zSC(8#SGE`_j2segcRq)fC)6iXO>xWQT+dHFY4*)Ys|imjLtq?(QmozfZ&C?jKY600 z+f>vT)SeM^^YjgEl_3t7yc7yXvgq!(Wn0DSsmqvkP?tTd?BWC#Q!n{)I$>18+Ho zV5+?EFVy)LGo=eK{4z1w+o?b4Pc5+}$trks`s|d%v;_-bd(F-380ID*UCFO@#PUxN zLig5CwliuUAWlww_|=IaPg5mI_RXQ2B3Iw*w=-P=;M*O^pZTECUlVqZR#|z5GE#U;bKo{$bMv zbCo^(NwdS+u0hOw+3wD3lvVJlGfjn?w{$2bi?NgdoO}l&=g*L562Ty`{$6Pw{)+Q| zEiXW+X|j+E205K)CbH0dyK7{g-U*_t;-Gg80klI)$v*S!)Xb0j^}8*Xd0VJxSfKz+ zO`(k%@l|Okq5XS7TmZm&oexB22gXdu`~ke?qbIeCgMy|GNb1B5N{*1<;P!DOpblRr z#4`Jr!hhEwYZUM_KV0wHofyBtb$YTaA7y^Owt~p-$hyscG*fY|%=V{svNAkYD1@zWWAEDO~WS(dL6ul^R{6zqB;z|)=9=3p6AOx&%w%;V7x(lr93V-38Vz{0s>l6Vp{7z!6 zl;qU8+|o%Ev3qp#2MAcke=~|Y-$*(k=K)_Ekg!?4ZO48MWr;IcG<2%Id^VmXl6d&i ze)eD(K2$w#Jz6%@FoXZcj4@7Dg^8{N{91I)c^=&g(E|T{9$;#xrt`19dk3}v#(Nw6 z-)t!XF=!smzVE9FeVFKNeXgm#YuM=@*=5gQkvvV(`C{@k%oOjw-5&%N)713A7RZ7B zN9#dT9kHq^rA%uL?-{D6+A8^gr zEk;aC=xZ0$*7Hi7xN)h*L9gabB=Ie_Jsh8|sQTu=n#FWHXXnjR=#2G5s{m!ysOrgS zuNPy5hPD8B=@)S36^cZmFeE&yny$y>98}o}NKDFeK1vs)y4t z>?Hm-L%0MHEPr7xrAqwlYl4rNIP@!QtACk{+kwGg-Kvi3sLK8tqQYj&+5dq_HC*D` z^?PUsE*Ym)?9xmaA8+3E{Fum~r^d88iyHyeTV2BLb4S(vkUr9^IO)zaL7o=#dynMSB1{h*WW#%QhxUb|8n zMXkgp#!ByY`W3-zyfaa+Bj^-vov5eADVnKl($D6R;E7+>*A+SIX$1fs<>QJbP;vCA4d5Ie<=Xxslh0Qa@2OWuhfSr-LlqJ6QU8GV>a&{ z_ZRVFZQ7O}V_oqZl1^$TD8X5O#~VsM}RmK-Xv=*<}K z9pi6)DDA~Xf)6c+Ep*R9oNTQSV|7+8r!5?giE~pRH40dx54+sew!(|I+T6RO(5vBm zX_b?o(&Fvo!RUj<;j8LQ6v+<@hF?}9Yh+Q4uG|CXub02aBz^|*mTgOVp1#xN>1wRF z;QsBPwp=e|BG+N|PU4AC)>k*T^j;QqGA#lbWU(7W`AMmub-npg5c_LjyGQfq?cS@9 zrz}klPHAOH6On6=G|u~W(x5!QS-8`(IbZ9ZgsnbCj8~vd-OS<^I;R#YwG82Mx9IfF z)y4;O7Ip``X?{l6XW}CD`SLKCj32F6uz6xsGvAXX1HQxwJ3Xgm!K^+fp== zhw@gj@nNl!Gv`J_TTpm^Xx+BumC?PYAhr~T(0m7C{mN8bw|_v~+F1OY8e)9w;_~z= zR#rm5(;nf;1TLSpRs+ePuDaG2o3iflVVG^#W~|*{u%QTWDSqv8E-9%f}ZTn7(s81nH zaFWW<6q+?W;wtkYAtQxT<0z#DFqSHZ;JK`l+n*^{V|8S z)dzLv`e-Pw<&qjPMeIvV>`e4!z}1NfYm2FMhH0)aUFun@)cAgL6lMKnNk^1;uU=St z0xlC{jR^WFXwpzxx?#Y3?A3$pL2Do`JuNORbu}zCPt?$*q`5YPz-}iR7EZbKNjZlm zTVFT%?tD)dEMw|XrSZ>c#nmizJtw}V@EQDxf~j)+6J?{CjY{EZtVP$`>15qur}~Q#4JL&suMk zm8eTSGz$OSO=J)SdUl5;thG#0N9JdM%{e={c?uwMa^ZM#isr2$NDJBWMK)har*yd< z1ty@gb_Qw#Abx}AWwgeJZ`U8|rj)q9kX86dRP=PIHJ0&80V@MJodv#9kdl(?3@eL( z=?*&=z<7oYy>tr>R|_=wk}KBa1;NPs{pAC-Z^VI0kQDzS5Dv*^eC+n-YtxC1WDQIz zOWhn|Irw#R1-R3{(c!yC!JMv^UM8AC(ch{|(A%-Hvw%S-pZl|B3}?*!N3N^(DWh=9 zEbtFY_v6=KOg$zGIwD^$Tx*~v?!V+CLXYK%3F@ndW9M~vUgv>&k?lGbtFe(Mq_ z&?S^@`D@EC+a7FOXmB~ITN+jsbj_hVq3@tudLl5<@uMB8(H{oZu8(h=&D+aVb*sJ1 z+V0WwT0_ooL>5-#3CTEugT<7V99I?>s(EB{?V5^f^V?htN#)Y~F}u~m=lm}^hgfa+ zNUKJBD=`^8LA2yB&oNq9<)<;h$8Qdvv@nt_!w9aQ$=G#&iuIU#9I zfL5J!Dt_GKE34mV7yJ{I{03kyoEe_ z(g}+DSX<`MwTkAn{BnWlN67Z7(Z^-UvJ1e_k}H+0&BK?}I^l6hs8Ht!S(13QIFbuW*`{ zW{PE_vZG@%L$+MjS-|+}2)Uaal=@T3~!SnG=DQ~$I#}WHOl;RjXW}e&B+;GM1 zpSQ7|MTGITrQ5e5;&nxVF_%}k=*^U! zSFos}@`e=a?wgWzG24nZagFAbK;KV+T!tH&!UAs~e>XN*(*R%k<9N!ag+pnpFGFB+4s817lxN-Y5kNiL0K?&CS`&Gj*uFv*Ri>Z76yfKBi$a z7Fh*Qey(@1r^3z~}>#V8BODd#UDF?d~1-GZum~(plwhXJz&6y8FPjRm#CAUf^Zm0BV z@l4&MVEIPuL_W`*h#%T>F5eZ-V2MfL`r^#n_6Svjuf31HH!Eb7a)jVu2Q48E<35HU3R{L zw|R#o$LH4P-)a_6U07c#T~8X0jqFt%2?%n-dbVSAUBEqd;&3}T()JNC#TgP;aAGWx zb;j6*C!(rIvYXWMk2AS+BXX;|*6K zvp~4q3h@@ML@T`bEvT^|b!eDy>3| zEq43GC9nzniNr$tkIQP0O3piCEjTyo6l!PcGmR<5p79?>T7KYvWt8)pzX|K;<5w<4 z(p(>YhFdO56G|+AYgB?uMK^7SkY+2Z-Qex-SuZ~i5iFQAt#Qt&J?I6l*2eSzxSf?D zO2+Xx0q0A3McDsN!Ogzh9EIrJ2>0H8*tFsT$z;G~8OOfnb9$r7rkj$ceCYmAcHq&9@r3-V@-Vr@#j-tDt!3jTc?a#KN)zvuU4Q$*(MpNjGI-+Ecl8ZIbIPM& z$L2%mL;x1c^r4~^-e=|jG2DKKZN{|F{ywWnUj^*OEZ%&<IX!h6uPfejmZrA#_4-5n{IZ>AmW_KTX2G@2xI>nRr?B=85K=mWu5gXcv#^;`U zP1yI>g7wqh%3kF(n7a{(@{qm+e@X44p->T1))!ZL`t9sqyp44an?g!9MVcurdL-Kk zeD>@K@Q_&ht4{|Wovtv!%SLNes_$w!%u%BWx6$9FgLGF{tq26QO779S%*?t|@!}VY zVUr`>Pv2{%wscuu)}4epm)a>lcqYLjEuya~bv3 zd%|BNpld#1yMctdA!CV}^L8~=G%p|7pW40;c3asLj{!TtdW#!+V;c$!ZjMzN+bRZ% zoRt!+Ks-dtHv7#|liStJK)=Cfli>18E#o(j!)%k|FHrwXQ%yCVai0U_r9W%qAE3R) zQ^eCUyI<2;uq}VHrY!Sp^H8@x?yIWIf@Zsca9X3k3^7oLPm$ZZrC&>MF`}SA^D4z^ zM$NObQ7mti99x`PrT$7v9WONCc0tv!n&gXZ^b$u!;Zh=shQv5My7ytR{Rc-RwUr=f z3*jkw+9xE~xuXCU>NoPHIWOhoynH&u%ICv?pJ7&(EPlU|M^`|VNc>VQ=_Kym?fc=q zQ1zBaLE>J^=yoCWN3oZ7!&g5!T&zcrWu`liK~i_r!@G>@^+oiZAKJ}CS#O$b^}%kZ z>Fy$6C}$WlON+0(v?h67bA1fU0e{n8;@UU4vRZAV*(l}XSRf`JWn=ijW#yo?d&l`6 z;5jyzYtTDgc42!DP_VhzqyE}is>1?dHEE!Pjx$+_t?X+J_Xx-82Yr+TL2oZ zU)ErcsjC_ts~nZ-DyLPlFxiKZ+YLaAfr0=3rZ!!sFyhJ`k+Udw9a`m2`jCOGqiV1R zpwf6GE1hd~VOlac&aPXxplm^ua1%3O*b9Mz3(sbZb}HBsWES7mxWy(3-5dV0`pn9y z4FRdRnL=Nb@>0E@!&`mnVeZ%Q1)jK8=?RMU&186|r};!1cy0ajC&xHhvGX@x9U{&b z@>7T#I>)uksrwq^toVw(H*|&L5K5P~xl%Us9SQFSlgpP2^9{GTxGK+AYFP8vEHOI1 zoJioKFLoEODm!u`8?(wHIdREH5kI2$*%UF6wfMXePYY^`?4xoHop@--SEkr7DtHaP zV{q^NN`jE8!Ai5mAzpBUASM9j}Ty@5!L`ClZlxe03+n)16L_)ouH=0U$3U0b!?mTI_8SS zND~(nTkW)6DkZ;RJG3LV(b=nkR*8kD=HB~HU3EH}ShTju)Q=q{BavSUjIRTYFq`KM z2X}RN;tHZC^zL49ewmtRuD-8n^pArc)%O63gy=<0h21Af0JJ9w26B!B*d63n&y^EY z83Mue{MCogTeG~h#z|^|VE4H!lzdITw7=D$pqCbEr|;&jCLJz46>&A9Xo3TVuAM^Q zQp%Rq6XSXgA z4cEsNh$Y9sC%)8YDRpVHl)L#1A~58g;{&~(iQ#qR%Xz00E>Bmt?!CCuHX9(;2p4?9 zWsQ=w8-n)e?~Z@d$jVwN>~5cE)_xINm7Ij=|5Pd_zV@Nrf z{wF=WFa)u-(w6(0$&mlh8isq|lN=M}M3y(!W=SO)J5e78Uyhi28suy7Ef5`Tsu&B; zw%VEGzczw*0COFky3oy5Hx*?~O0yzH`HG39I0S4nAw1`DZlu)&IXAiF5vdJ2D+ z+2$#S^KK6^75cms2c#{m<fg3jazDt@kNw1`tQ z8G5!_Qgndhwzw@qb~&?sawEs&?d`fJG`E26vYz8V+lgtdN>4k|qHZ#XD3QIcy-log zw-)xJL{8q0>s8DmfR}RVOguM~4UKethf(;p8I2MWV$zL2Xh#RJcl#s1CZ7jDd&fzJ z#4mA&lDi17kualk`FTrnqpJ_@l$F9e>H855M_#PMuTaDgDy=fy;!4#K4@(_)m`A~N z*A{1-+splOvf6akjJxaUrvZ|=JN-Xvw<R)x~ ztp6!_x$&!4UNmKN_H{v<`;wL@(EcwsL`WtV!4>r(T0~1DMKKuvYY5jf2rkxkj5`d~ z{(P9mo@yat&hhrQ^I8GWM7+U6<>)63xe-~iPtKOgnP-%ZL|Bh4Zgc&lA)nCbr6ki| z4z7J)Ypl_Z%(e9LCDtdoOIH^SH8`5?$B@LbD6)qft>k-IQ!9_$lWCc^EaTvDSy`hG zRm$-0&K8bvBg*kC0Vt;R)wzNXGMYO!Y?tIPn@ZU!o< z#=Y#I!|Xo@k_^IBOR4@vZ_+9ob_>1wWS6Ycj`0{0j5v0DXu2lq>>HH=!B0#q{fpg* z7Yf=E!nX$k=7S8U@bH2(}wI63JtD}y*l~Q5Py>;H}Rp;qEcg8A#n4lAWVt( zg&0&MY6XWWq{d0`l*NS3EPl6?O}Azn3Kn19Z(5-=7S|m?L*#*Of#|}gAh$$~HE`OZ zskW=L>~mOTgB!F_JWyrqbtd=mi6X*cryXi^EAOoV%)|vugeoZprtbASL+X1*@_PH!QN!PJSEY<|8<~6n zTw==8Z7z3xk4q(`hBl?4N)7%3DGvcn!1v(gEc+eka`5lwZ3cPuv+Q@8_^h zHa|@ET};Ba$uvk3>XtQ}%Qm*vf_BvY$Bbk|rldg;4N^@%P(G*sgOY*aEqQk$+I0nJ zxF3udI&M8^U0nJ4)nMd#CXoJWTStu^*!DcbzWdT3!9=xf_Ir;D8O#!f4>U}8Rv5s6 zT&ICXY8%0?;jfhvy$( z=>dSx-dXnZ!BMsh3vpZFeP0qPv%>r~^8u;c|6`=;JJEA*8QnaBLs5f2=PNnEmF zzt3R(>M;-lZ-67aNuh)Gb3Y&CE7-OAjR%L205(n5+?RJeOz|8}NP}g!-%o zW$*cV03RWPU4XsHA53TgeJED`0KLW1t^ni~djDp1+7p}qf!_EZG*G3r1!Zpf|4D$7 zGnD%n)9p`W3RdAenX34t7><925P;?WIYKh~g4dTlosSn~8msf6vza6sT&?U{#n9@` zkXFAEnR~tLzL;c-~8psAD7ZOSf3d~zZL{`_!$ z*Vn*#HhK1)JrjrHnU%2ECQFacBDIxE1q-g|#JOM@)KtFr+&G7b*z!HGP zCXx3K)H$sr8N7-uUgb}1k+Lzn2t?}{&y1YxH#e=%{pY(93uY>NTlF2LyA%)Hq$t@B zr1G}H{Ju*wh>$7DkPkuX6ww8d*5`wosR2Gl$QzcXDW%Ijfm0gU_mji_!%ct^fRkc^ zbfcD4C6IaJ*Z;>)%8DDypgt`9pU93*(~LA%sWvlB8tUKi_?g^p=kO zmpBk*ZfNx(x;wRhr(gk5Aq+gt6jgg~`TL5=mEV+gDatA>h6{v4VM4gj<~!hxL*^0% zJT&q2(ti&!;Ihbt;8^7hk)Rx|faa#bf5zxZGb0=UI;ry50C->>JS@tOGiuu=rNIn;Ek*Kfp#HXQ)>BhtpDrt zqaVTR3uHedIKBDp82=}uG^L-|;3FNJm>f==&*GKsZ>IahCVzam&+v=4k&Eu#fAf!! z+o#MFd5k>fI;7=T|B{COAsWy;^pIi!Xn;o?)(3Z|rnzVmq^a)m2lpR#@cJLlKa`in zX^k+VT?W2(sslG;@-6gRF%lG1L~FD6lzQ6tT=`9lxO|aO_B-6Ia;2@)`A755=ZpDjeSo*6A>vK8D~REoWXV3|{*m~EhcW2|Um9XL%(5w=B2hkHWGrD->^pe8eu0G<9xCJ8vMxxxVqD-{M2|kkLtg_`wkE$9Vt%}RCaupXi(p>W(z>!rVSHsnE2J0FJB^!5;O+Ur6R`Ygiz zzQ<8CZCM@DBzqxr`(*dP2d_)LtK+ZyZgz3Z>x-*hW7Kjyeo}9un3a@Ag+(4*6m0p{ z54dx61e5dZ0VC5NKJ>?j6!IQOEpq-OYMKfti18fkS1FEWth-mgiff5?J(&J-zRB0E zQp`rFf*7GbENz|BJydfJEZZO!%s;SVSJ8nkqIS`)LvZJpRaZrC86ZS-#6DJ=AQHBu zhwL6V-dErKWYb;BE1m#mI&(&d+9eGLTz5;%a$D+}#Ba{iWB~$uCYD zr-8%umZlCmvxhmY@0+a8H=X`sPzXI$L=XEm?AeJFv`(COOZzpp#rWj(>ZdE17ZIOW z`h3eqt(|YURYkeousG9g*?LJ{=}~$AvwV18xD`PB^!1o~pLlF=;)T;Iw{n+D6e} zaP@hN`XcLt1+nfVp#nYJYRT(2+5m;ICmNE?<&S7S`FA&OQt1HlO|?{)+waWXq{2*< z!5_?3wr6!A5QfQa3|QIv@?bjN03_~kzVLwGU7l{*?3^p@roq|T@1*Jsdk0_X?3}(t z_*&Vx+Qy5*`==@wMl3&r+nEvyFRhQOt|qcjJ-!3NY<{h`uqi%znf6AeAoHkUJx3>S zvu1=uh~}AkBy{g8YBK;C?M1$&@~3eHNZMxe4`R8^xdH%OM6OBGN}Y9O^wVuOI!5gA zn$r~$y=R-~LXfvXl^Pr=D8}6ih=&{cxH}$T_m*;hRmq(VYYb#4u+gHDN5isJ&ngrqs7A|^-gX@|gG6?I4azlJ^tNj$z zq!+K``)#r`qx>EIZwvcPy8UaER)LhT{IvyJb7|vRZpzu$AMJ_wFZm~+wjR4FjRlS6 z?Z$q8>_zQj{Od)t_1!F0%4{)(d|#A18fZ&Oa;qP6cMMfLh{<$%9>e;b6K8lVUjS{$ zMq{|*GcrjNrRKi=>gAaM_pNQYKAfXD>{PjWVxuO*Yt|Ij28bO97CJt#mOqHfVsPSE zlfOi{zsfIe`;oM;IkmvoX~b3zVQy;l9|6p_k?P(2=VX|WceS3cNf|cY>-@iOt?usGKJgSXe*K$n z3n1jb4#fYvV*vm`DbwHwuc^G8z0N6(8>_62`ZMi5egD!I;t6Qr(P#Pd0wmtEiN&Z0|2etDJzT@dX+-Sz{8e%9ku0J#0Y2re;SfOP z%6DJ`9Isexp@8 z{LcE(zV|*Fv*BOWUzW_=R7e=c{=8kcxWwF^E|>-5j~Lp06my4B6(j?N4vk?Hvm!tU zE7)1K+3RLBU6+F!ZL}M6Ix%r-_FG@`8AD@Pnu-lF=ZBQSz|vPJ3KXP|E2LTW4>$t3HaEF`Hr!#VDm}V+1i#EYUn+!YmJ&H?RF1?y&`DffERZ_OT$iKZi0gU zdApP?y2@I0gH!xfn9W$2qub)L`Uksn$+IQI5Vh5&jQ(*HNWVj+W_$D@ zKG3E1ed!whkUu1g_U=w_I4`ySFRvYUX>N+TpVq&01O2A&xYliG!`KvJTzL{AK{431 zAo2O?Mc*<<;vUE51zw3KO61}jdr9_(^gfWs*sW=3gn}Ctz;NcqA$;bgs}dbgYeLoK z^R#m@6x`j&^YUwS(OY2HDLEWZ6J0K6Hb-kWrr1!#CQ%TH#r}(roW=XDbn}q0If&{$P!tIQ4qd{* zL(gOsPq_JE=3o94YjIe5+5|sJ9VdNJxw6n{kk~r#{HJj|zcY2o%EuV0S(%ANh+N_W zu7)l4D{&z7p%#3gQOIl8XUISxSh;L$UH*W}|1#`_!7^;Z*%Thv4n=k`RV)piOBh2T z!%WLeNw`DFM*k@j-(}g_Qt+b{15R6v$8b!;aDZB=HKEbWa16f0?ER>!q+n^-=thI5B%J&RRNWQ*{ zYo?>Sxldudy3{T~MJFV=crn_{AL%=7E637M4el-LLGvwN`#&3|{fi3_ZLs?(`H|5a z!l0m$xrzRmak>uSRdl8)w3>IZHD$Mji>8a**^qrEpf*m!2N;RG38~T=%qyV0<-KB+ z##+r8)38PgsSzRpf@2ms1}%; zJUb7ZmCJie3s!f$FGw|OzAeZ3eGk-UYb++NSj)Q}Rq;S(tO*N^BRp7Ppo~7C9DBV` zT)35?+Z(u-M?9L3^4d`ozj^srV}qIQ{RO-E?b@-mL~&wIj1vB<;&D{X6XII8m-9{x zvgF-i!`4Rs>b!EJqjFH@y65r2!YVFKoV)y^zKI4!08UEdDe7F-7^+4nNSjM>&Dv-G zg#6~9^D0pJhmHmsUeK*d${&19IRY0>ek@5Xu6t<+t#d41HtqptD+BLtCC#$7UMPw? zR%E9Ls4ooAvzGE-OGBweF+BqXZM=0JM`vhF?8GVeq4V?Xo{i)d9QrM7#b&2gZtx#u zEyv$HC1O;J6I(pe^HeuQkYXH%v(Tu#fQIc2ZG35QK)%MXeM;9?Vtm5ubx%|SY%MV& zm%ki=3lmzMb#QW!mk!h_s7w^!MhJ^)Tn+HStLdi__>#)ul{oltN10y0%d{$z(lfbp zc3pQ}cMpLZ5fOxC#a@HJwcPnaa#(9bzswrELef+a6emnufMAn{kkWlYxDng{vqXcaiubQ~q8E<~hgntmj;L_2>Od z*Vev4l>N39^?lFtX^l-VkL7x9!Vh5DQ0t{w9Jbq}$UIOT{cI^`HsAYf)agz4{<~0E z7Uv7DsI`6W9Xa2rIftq~dNA-GGW?jn#z@ZDhaDsfJ2!4+iLi3Y7Rd<<$^>qwFB>uS zyN*0wUHQyz^7uS$kaP8zq6vP`D-fb{6t5|>WRT1klxS!$5Lm(YkLIA8ZTteGXQ(sK zzPt3hHRF3%IQZsA_gVgn262r#4m{>u;cST|r@tU;L7EFwf}Vr(IzgHK`nB?h>=jAoiPD z;>;6n^`Y=JDOHtsVZ$d}O{q)n9Vw4x?kgYHNPZ^3gM9l&RVhtNdE!9{pWbiO9iYRm zS9|P*LTv``@Q_x1CLF~vd_42s=P7N4z_5^0^_ZBRyZgFy^yH3aU_>gekGoQS@A!he z*H9&+wS{iVif-UC?DPv|PgJT1bSexwvD8r7Pa4A$lWx42I2U?}BH2&NvBL_De_T|n znBUm7HBvvMe^BvUtx;}&&Q5cVaUbe^n9}F@eXm7*Whq-_Ax3Riqw%z_~g4M)HoP^SFg=ycu_fkq)9jer0t3O zIphtkY`8^tiiYBd-8lD z4rP}s=fkbYvw0Q&BCz!8YJJhQel{;9vk&H}2xJ%PE;tAAoa^DaAlI?biNHR?%1OUK zv0(Yu(SF&7rpEMlRG-H@Irk{}u}WTQLvcc0GX~=2Ftgi^Ey&D*yhz?rxn0$81=4z( zutIUpnDFEJFU~JJJ9Ne7NX$?jj<&sgpCFqF(McTk<-U$pSTKgQ#ugQuFhR2iaf_Ub z?U@NRXkpXLg+{tZ+9Ekde&KhQU`3utwd>Eu0Cv;FQrJy+YS zXUEjwkbTtU@A)-hlzKgfRN{dtY}qw!1m77?ro?)L@e$X+vJw6EtiShh1HWbq9Zdqw zf7ld0%$_;hbn;ugiUp5RlZr2gULF9DsKl-Bnwk=pXGUX-mE3lzpyS(|JcQar$NXXk zb$v(tQ3#fcrv&}IbgL6%Wk)(HHH4w?BU=yGj^A!GjR|<%&?(Pm6PG__CPg@~EbVDP zd+iTT>>(2MeSJh$(_*B%*C=n@{CY5BI`;PT@oY81ThgB)@W4v@Ys>D*M%}=-K%sj2aDDS>{u%(N=jH*MI&TsA-EP}T+13lwwFKo=A8`rT()Cs^1 z7_SdT#9+>QnO*Tnwf4u3_Am>+ z_2O8!yfplPAGCb*F~h@xeG;c6Tl@FQg=plCPs=OmVxD-D$bqlKCH`RTA$mgi!)W#$ zpBx3w^EtHQ0ts~uDG8iBd|O|MW0QW)fC(u#* zqHzC*@dRAV>Tx;6uP1= zT)Vn_PK%9`kL|dy;@tWFrq{lWAwo&zccRpecs%;pX>X3uj~9V80Vb5 z_gZVOz1C-a7Nsra^;mUY>Y%j<|D-}kx$~Y9f!cBNrw`Z$s3ZlPxm{g%eY6%o!KQ+k z+IdS_P~KcM7T*Qj z=FiO&$RUvB^eJ05lX8Nh(YD;-@WO(^66mM#t@{M!s9T}i5~nr@c{0lx6?sS1hfZx) zxeX8|mnU{y|yLieD}EYA=BO< z0pGpG94AKU;X7x6tFaY82_DKMiG@6zZU1qcqOvM3;zyx4VKHQN%&)jHxUH5il^l_I zPJN5I3xJ|`0O7=cL@)nNG&C~c5|1cJeg|bMAKVV{ihlI9FgxhJ<95=1sf! zyBzD&6ZP--+rzoPwwE`RrK8Lfl=ADYtxUfB*?guspR@OX)bOh1>@9igZ^cG!cG{9`&YSPRahO)@Wk- z?Ux)%0*qVyGFmr#cF81>+K#2Xxf-|mgW}7fed)R3W^;9Ut4YbemQCz&Lzr;cyuRpG ziH~o!=*$xCkQwEPIn{8$QL-7`iio}Kov)6LSv%y0h+2pho>sb)(>C>vH;@p;gUo}-sO>DOC z$@fedBl4AB68!foPQL8+4Ny$N#vU7L6eOtFe_xI5XEfK`E5VnpWMN`Y(1(X;4t#P1 z=LrP6N;0O$20!7I7D($p*Wi!=0JmvCO83tbFGa^iHtS{gPOQRA1%s*wh8JxP*kki~TS8P<6y7Ra%;vz5>ZW__faW35?g0 zMJZ|&%P_YiT4EEg%+-(dI^vu}?SdQ1&-a2vM~~ArH{I4;^ckgw!xBN8g?MI1rP?x^ zTL)7=T@mAg<*gHzOd2BPj*24Xv9wlJDEEue~+zyAVBn z?|pHh$hr{)Tm3l!X5+HW5hr#@>iCr=4? zqN+~sPA@(Q%}R7g9pCe9-?$Yz;VpwJp8a)xclYgc&wXD@DQ$!l>4XS}((aJ;%JosAUx=VQ5P~ePQW-as?%12CgK*vq{$nMuVbP$5;@J zS65@#^NyuMfHP4qe)CXZ-J6FVCkv51--lng!8Cdb7R{(shvRH_j}>`e5|DI6{F&kS zFE-*0D6CTi2nfs%lsaa37oyeu6xnTlPW#3j&0Il_71%i*N=BR`?ftC3zlWEC!iKHu z&?`TGUi+BC8(bM0hI<%PntJ3bS;aH=bnDY zSKoH5MCI=DMV8qLR3Iv5|1`E9gW=bHIyOL~nqVfe0EE|6B(pUp5ewQc3cE%^taJzc#iM<+4otB*$I?&R$^kgC_0s5`Ezs ztc}6)o7T}vcUO~Yj(2Xf!1b0x911u!KVTO8h#&R!ZiRNXmuKy@WZ+8h<`+6l{xVeG z-aI-SErO6OWyWed# z;LB@u%QweQ5#w30tX>6v+XcOr7@tOow7TzkWjNI%@4{tJs3O^23PwPRUlMIcL>6Ep zDF4W#{0C`aRn=;hRL`RXOH~2oLHg(Ymu-X9$qxO&GkwwM8FRv?wUaoW`Q_3lLcwQK z?TSPQdab*=cuL44_@vEFOdnVTJviDj;&w7p+DGvbi0)E5wjsVAgd{+0wEcaco_Ayc zTQW3{*5U&)EZ^!Y;&zUE@0Z%_a-4rnm}hWN?fzyxrvz9Ca)$bA=Y@|UZnCn}4XgY0 zJD<~?#_l->A?nfeG?x}EKBAn@eQIsje_3AbSpPQpvb%9i&5EUNP_mH2LI#Mw8z;0l z?QWLgnX=)SI&^EPAVf%Alh}uXHOtbg9D)z$zZzV1q^g!UwC;N{j>8<+W2TTfa4UX& zZ^yY9avh!`zAjpC8Fb8lAA9V!f6AB3Ej|l{4}_dD!d3lJ7A-WrUkp1Ct}j^3 z-?Q>u32ZDQ=1?B_q|UhNN%|srvZZpe_A}k*UxB|`CcD3UJ$eOG?`c|~D9TM(FWaY^ zrb&a25krpzgHUBN{Ao|x+h7Glk_Fcisnx398}#_<%9w?zBk3FL4agGRd$Zg%>-4#0 z6O|c^^Ja{_q-9p6$jy&M9ymUKFw%gzi#lFf^lBmzx%Tb8;N>uVP^O{3W%j2TM zPzKgi4LzJ`?U-#<=m-YDtetW-dtJn*wD^UD`7pJVTSJDf*S#Og$DT@6rS^;q5pDqq#i7=Ur$1h8;bh#Y z*macbmOfM8G5ES_^p*zxES&QgLTp&?LCSWgdi?)jXR<((d+pB57+-YOm~?#yXtNYHfd`G~jQ-ivf(dd6#EAjXwAjrovJ4sa3N zE+4F}&J{n)*3}4-0UOym`{!`%Uhjy_P}RiDT_nk>`>h40V$#F36QKydok#4Sy{*!G zo%Xar(WnjG;Iji=%!;bhusMt;<6Zj3x%$vclocS60CgH}-)7b0tUR^WH%DDReqzL0 z*1EPemL5wTdU6@ATFIk+oz99K*lLHCSex}M1ECpq50TVQg+vp=;A96njv}&9WvXF) z#!b4M+Z1%0MW-C#yA&QaqSwBxoA_sZ^jCLce_OOPpaHAPTjypiBs&EXBPlDTWWmJp zZDPWkE}Fg_E$_ZRl8YBV8Eq(Z>89CqdfET@Fko8B&hkW;Qyo=0^=T+Jvj4-OW9VBA zaFwofYQ_35TaUgzB)&;r*#XN%%%;}q5Kc(ACo5BB4#4D9O#dKC3e8)VxMY^VppA;(Drl z%2$AIziJx`R!>GHr(|l(4lwh#sGC=tKrfkIIiY*+ReG{5q6TH{)+$3VJPF1eeQ-9G zGWCzm8J7@fuwu+pGJ+0>d>d2YyRK^L+-j=hm!rD4d5UPCf0@6d)8g>FY(@hrMU!bY zoCx(*TjSFBaU{_zaey${c9t_>o>29T0dtllRtU+|HCcT?`ydR$Uv`a+;Srw&PdLL0 zD!>Y>MkVov&^d@{%r(!akt0~birE{sO&8!1i+3-9LmKW|iVgrxS7l&U^$3=lkL>4+ za26W@g8Ng2W|!FC4=k9sxukZEJQ~H#2s}_%LjF=!_bjt93+6~tG`;;z2~@hY^jBD4 zmtMC_irvcmXhK!g7d6M1uN^0${8J#}dJV#LrJZJDnWt_oh2Az`O`*l#S?X?JDuk~VOM`Tc-^)xJoIx#NjjXsgZf$5c~EGN z514T)nS=7-`ggq^h|Sx?sX^G!z(-RKI%yI^90KeN93HjOHmgyLMA$r)%^DARDBJ@b z`L(yCEMM|!hXN`_w>hUics{d2cjr-{%Ew3JCO}YGt;CltB6TR*eI_Y}Y(jHoa(iA7 zUj9g1LP7&2t!ub9a(hlywt?>rr=>*OSG^Cc)E)hrqlT`mPky?xHBo37mZ6R2kCAI? zW{%9Ms@qywB}nN6qeA=_lRV*!rM8Wb0m<|t{-hm6*L8zL=i4b#>cslQ#(nozIDgb{ z4uu-FTj?JiwHp=A3^s(Hq|IfFd-AjUk5gNH87K{He%E6@~l!}1+ z@$Oc@Ia9h4^58Rldr~T=jl7`7#Kc%2CRJ>D5|bc0qx~)J9`o9-ZNT}nUOE^(Zas;$ zD)mB0Y0t;TOzGUPDip5P8rAnwN4`rO5-^Q3`A|?Hdk*b^WSi!vL@%ON64U2Cg01(M zyi$h;c-nVnG)a!-NlLN~bX#)(Yt7}Sg=n1(Tzw*NVW)NGlbfB$-DympJvb^|(ou?c z(32X!McHP=Y!30^8|l0wq2Iad3&g9SO&^ZMi%Nx}?^;Px zbV1&`b3wc6Qi_sH3OOf5GY82s>mJaTYRaABZ5ptp(&bwluilPyAMpjoQPT}6&pkO_$Z;0 zR0aSlDFOrl9(l{mY!L&judjvzY{V%5P1GGm%KRBtL6v>Fk02(SY~ka6xb!+ofzc-H zb?OYLQ0w4Avq+OfDfweqC6`R~)ISEGr4dm+rE(x1WI~TMYe~WzyPev{7`YUxtXP z{dLzv6NAtN^T?@0gV%(sQ~(JL3+)1(o>_%M%TE0q%aHBpb0S&;@jsKjz)LveZ@!?< zq%^qM2+qr!+DjLpI~48#&Vp1=DFLigB_Ihjn}iudm#n1C3HwAHr+lSjI z}So6RLM3$7@Gn%3^HCV>Ue%~>3^=8vE5L4M9SFAMbr8EgIDIt&~KA&r;kUM4x z{WpTl!s0pY_cnm;@b_$B$JV6dMZc(-#Z2-A>hz0Wv%s{I`-fGdG!OCZgF!47TuSm*zu%fMdDnx=u5n> zyznC#lFR^rc=aK+G;5!!NNVri;l@3j^&YNsu4ww&j+sNvR9W|IWZ36cIn`x`?wKNL z)iDn6yYNTaeiBdrcnt7k6xIMXtq^*}Uf{tZLkJ0ZBa9_cN``g-{#U~|@ovvJX+m^H zBmi*pZ$p?K)PX|>bA#54qqcmvvl_i&Ho?_L2*wcCxO^8_e8MVWlND}?cS^XOtFd}jUAoTo0xUrm~07$%(fA}`@(}s&js7}dXHfj!l zb(;2X-^~eBUnyJ5^DP^FY^3sLC~9QQDfu`XS5hl;l2*!{`?M*Oba zsXvQ2IvfD_*$@rUqw7|9SnT%-)`=v*)a+r36TLO4GGz3n@D3KDM8+N=_^adH@ZVavpOuqS2RX+;ipuAu=yIHj`tf@@f2VTqcn2u*9}9*pECDtvqv;j8 zmFORq*tZIR)w@nR%rT#BMf+`c(}=N8LLq1SY7giA;i05W`}*Pg`qTb>{Gm|wa^RS$ zepF_CqNwl4r5=y3$JE}QRp92t;lq)*FJl>FQ*b_Ioj9%EzH?m?J?l-s79R^rW0wuu zbI^lFGX?dMF^F3*pC9(n?{D04>ueo9^54^VoIGl{>K69WK)Xa6B5X2SH8! zZC%@a5tC{A3cjt!>!rx9m}|GVjBCwhGwy@Nn)JKqF0jS_Q4hd}_?K?{?EyuZ=01_Z zcb~p-I}ViQlkze3HD)IrGJA6{1RoqH5hD^xE^D-UR}Pz&TJa=|mdTH>|7L`H zCI1_U_Rr`(-X(Tp_|_E zwTcQLL|b3-`@GW)dwO5h?oVn6_Hd5c{i_}Mi84-khh3aA^8)1~vsO!37IyvpNjzNm z`59XMsdxebTg2M;xQqq&x4-KSEeD`DM~k512QFBP_xD!#hf*qlT9#8oNZez6wU0XR z$oF_7d|xGyj%m$Meyw64Ly!39-8}~QYYzbJYUYR!fN!AyqD4x0@>|Q({*%*8=Zd~U zo5^2DkDzVs;x`Tc-^xZG0_*J0?c&LM^1CG>k^J}eb>VBjGT~`4$v?Rx1y~3Lkm@%_ zA3G@teKwcQ;+$Q@ldr(?ic9E=4a@W!1jZ*OuJ)^k(|D?ET%UX1a&^4g0b&U+3`$G} zg+W{9ZQ+=C^syPIJBo_)l7+-Z)TvZa$eqi-6?J%Enf(8-#Q#OwDs;FHfV!is!UWPxZ}cpx)ZTnzy}TL*6d%&0>$bmb+*ak@+shWW`N3RNHN0$#QAFsj2g zP+DP|O{*I*oVmRTiAwT4J?ri<-*ilLsZ;w33J+RNb_QJS>~00?Zyg|E^tRh~Ke_R5 z>e^38yBV+CC~UIoj#V397Y_xjjtwgO98(iiZVs7e3f`#Vg?Jd3Fl|e?qluV9z5`tZ zS``hKPIt}{U=st`v8fGhsA~{S@gX)1SOcO_iWueCvuN1!ZD?r5Hr>?Dv$d;hA8HQw zo@SEJprx;|C5>p@k#*fbE8VIT#gV)x#m-VJQ@~7lv{~sev;>>H++<9 zTiSjQiaBe`tM&Ky-5`{FTrMh6S4!^k=+)loYh>A>43Ufc-MQP0nnD?733A3&W4T*P zlmndg;h)M~m}kx&)@;OE=T_$MXazpE{Z`s@*LdP%hVftcxEt_2Z%6C8^|{BG#SDy#mP22z>M(xsElISxXMU97q+ftSm_|eg29-72 zit@t%!uG`iicKE<3YVAxfXO&Z*|Kg6;xQf!j3$n`6)RnBIr=!UBv@`G z=C)M$%M~V|8y$INA?QdeaJBpOenCoWIkaja8z=?>wib?ZVW&N;^B0#r`f2d1Z{fCu zYRG26d4f_1x9iFiVS?JY77aErZLuzXeAAzfI-8;Bx%57$)RUtZ0wJvQjHMI>xrJ9O z;ulX2dt~PgP_R08UfH_M?H=X^2&M(%3^NaOKKCfG1485*>=D;H4emIpI4S=a7af+@ zHZ0{6;hus9w)(nAmDeTCs>grTqw_S%wQJ?2?8pu8H8_coo2>xAO9GS~nNML#L`7*b zu~Qk_wVHrk?+TUxdX`wbg-EJO9Q~mRLH~9h8#R+Z@!*uT2BmeV9|bRB8vMD!In*C; ztv_H*%RjK-=3igXujA|bWmDy-77$E9b?>2P1fyhB)*=AFN=G;A|fL*f2*$+C>+4eoA;zh=OzRb3Mr@Nk8DB!^w_~ zPpr`BGa9x=&eRz;Q@(E>B5=9g5t`NG4XrSZKV5R28}GBNdS11sUb{6$F(#2qWA)+w`!N*N)5X?mJ?dASEkr!vqkSt%(RTWS zOwS9qc~3KPn!wyBMYxJpp<<>}&ippwh?*}oED5C1J*?oCw55hzLTDj3w>Nx^O&aLk z8sEF7__hM9ZjI@NpdMRt#M-ux+ZWf6qWp^^#{bIaJDPv{P#E^0Aj*#Z-7;Oq!e=tq zkLZaP`ZZuT)K+I1BI#oL3dKnaOa~rK-O+nrdBxVTF)^GR?MjjVs`#U-A(ANy$h9U3@Tb60jfLIYxjRl$b+n zALAlUizLi2U&ShdP{sAiWIW)2mUE=`iW6k~FDPhc z9&l~!R=g;t%RvVrKiSH)_kXcRXg`=#x=Rxe@|&hlIN0|s7M9L!bBjZKbgUAQuAjfp z0BHachD%JUIs!_(8lj;jA!gv4tQD=&@#4r26df|j(nI<^zgQyz=zPKX2he+?$Y-E1 z22}~%Kk9X@{@YQHa-TOM)x82=X5eg>3!#s=TyTRkKFgW{K9J2w8PSHCvlMZJwnjfj&BWfdpWJTJAV(? zka3fycO*^t*}msoHKbEGC|*9m<*jC;%-g5U1t!~=N6(fzPrKw#{Pi~Z@jYNKdsq?! z8`SfL;5Npu555yGS6^Cq{C&Nxk+Lc%y?FlpG1gILb%F2ZqNjlUf97H3r1Cj-omZxHid`6&DfX@Urp+jP(;sMLBD0$@%s#g56^by1JGuB{Ctn6Q^Q$e^ z-Okeq+?`aWqK*e8bmxz5-z_SfKM2_)vmox>Vyt6A=wvbtn>7T6{m=@z?H>PJPf4M1 z5E9H7bstoUt$~CWF!U(k8jO7cn?u^m!+uC+?&4SVL~`T={}G|W7JvRDJ`@4ke6yU9 z4$_-Hc+Op+5KTei9Fi&O1H(VOy4P`Z+zky z{QafDKDLys_>tiso`EZgW9~4ple*;`)sX9=pdqB|toZcufFTW(zfK!9NjkvL#raAZ z85vQDMBqx@);#9)^ z1{6F)+?M;a3QB8J3ZG~0{PJPr@kHQiP#Qc?M|@dgAFp?tbIQZauF@e)4Wjbzh1%?X z`}V5s{1oNBfmj)B2^VqNEh(*Va`C3f(C185-zVQ4aj=ay(hFje6ab%XviF9X16Bl# zYtR#jQGQrLW|`?E+r3lO!&HNALxsk>0(>gn@mBebp}?s?H38qOJtXj}as%!ZOq5|{ z!}lPFi@Ke^PE9cX6lfdrc01_T_xIG6~O zDV2O*M#oT#jlA(5koq9%6rNXxELy<{@`*>$zN7`NwB(_hn>0TQ#0gf&##ET-fj~p_ z+Wx3$nACuYBVB`i#yS5RP};{gw^O@zk}~;2IKaZqI#yb+B~4!BNujP-fr=`I$F*P; z7MmuqnH#*>_c0?O^<(NQZKLEqZcV8NLL9pfGRmq|FFD~Cr5ziyi7piv0?5|RAST(c z*-gm#Sy~7?K~GOlO9>`~z{7yBdtl(*NMCIFWVvZeeE|u-igiYD{dT}XGauM=;y_zl z+pwirin7=#8jpy~#>xmWK54|P;v^8AW;vs8;;HcUP4}O}?Q@b} zXPQ8RBy+DB$D--AqP*PDA@L=WvDI%v!?j}V+ws$@>h3{rUNCpbw+FC@{uTYDPLG7| zGK-}}-p-Czli~KrE zwy&&Gq5?zr)ml<(0x>TT%UyNtGGQ&d?u18m{tQFZ&X0hK-kHaZ9Fw$z1VLu2n+?>|IzO+Jv{~VQrej! zrdk8NZ;kBYR}SH+Z-=1g{Owl&YYQ}Rs=p%8T3LSL8G4wdA^nfz?cw=!@Hy?h63G!U zbfQ1p9JR*9+GzjwMjEt_T~siR<7Z~-^+=&+rq6U7iZN1MpBKjI zx_G_hOk`qWf9cuyUSmu1dNvBJJyC=igL_+Ccp~|!*LqnO0U8c~pArbTGrXoXYyjyY zdxv@tTIvVBHLrjvlNmpLl2@s}vS4OY#&sUTQI+7DXjR=3Ad0ckW6Vlyc<7gPvOY)+tpQl+-Kkz?-ON)ir1RA61;_=GAKT%d?uPQ z$tf?0d3N^&;lJY20JjIwdn6!W5vN$*1?vY`)B@2NJW8d=OA8S*R>aq|De3Nx$wbND z6)j}(bz2IVKg#CXKdx}vPY!N|7j~4j6y=Fx#@6oH8>HVe4mz;N5`JuFoMkONaA4LKqhnW2J8=g%JmirIZFg+k>RPb~KG37npEPRs;ro zp{CHr&^1+aN?*((4P>gZsg$Mj#G|59?f(KK6v zqq2fZ6cxWdrs27vq?QQ_0{9R=y&iMk6-`{DDr=6d@O4L*r-wpKck~(aVTf86k%qCv zHPHj(&rX}AQ1Q25PiFIm&PK5n7aqOx6Q?9+w<2aCj;f>9nZ%}e%ssScCM?qxjR5Pr zy*hjAy6En{#*A+4s=_r0{~it~^-A8^T3+TvyVJ3~h%Y$TXi7?K+`JNJ?wA*VnIaguNOHZgp${kRe}a43L6m|VTH4Z z`)b_ED|}=yjyjIoR@kR*Wo@@C=;4cAP{~u@WCC3%jbN`DmjaHBDll65Pgo5OMA`wAI1)Q zbD$gY*0l~m6wp-Pf9?&hyLZXkZ_9-`>-YNu9WiCt^bSdPhhjYQIw&_8A~V`=<(ZMA*p@ zTb!DH2XeokU_c+Y{Nwb?3qO>JpOaT%laLp)LH6kE2@Zp+<3}Q|**BcDFU0_mx6DTb z`PytJ?!Ru>5p=`jiUmhFMMq~kGChq0F}0`2om{<`UfPSE!XDnQ^NA#9 z*(d=k_n}`7jCLT%sohpXcC)T7E?8eFL^r4ZfpYB>*w%A8w1I4XeM+lCHiRgNuWn94#j(Z#A>d*a? zeujSy3PiX#9C2JBM|=sq4tK+)^%M;8y#Fdj5W8Gu*xrG-Z!a%I(7r6WlW*EP`%%zB zWkCaXstk9&*6~fqDZ*R{cUKiC+x(}0=Aclc3yIG6cRzy9I7VWQCga?eMCc$@UuFLhX#&;`c-BMk@i(vxrW6Iz!AVSRT5m~q)0Wj#QxmTD z9WXBmKUKh^jQT4RUVE`0o__)<)^h09jtER8+{DYluPnKwcfI4da2ecwu^WeKL)LYf z@gdvs?!sX>t+oTyKNSCNUH=bNVYxx_$;n(~ZWr2qAo4`(3l&5KR9a$Qvy;9KcZj+2 zkn-q4KK2E#lH*9paAehQzCI#iN|jgI@!B)Ef0+Q|xAAE?{J4>KW10iz1|X?KcyMWz zsTGtJvli|alK`D8inuKxYwzkVO`^?D7HM8&g_Df$O`CbHR*`nu;t4KD{UMGo3Gu?< z&wj<4hswS@DL4iiYT+iypJ3ma#f0z!UqnxlEv$mTQ1}Iy8WM(XQnLM$nrZhxSb(#v zF)w+!)V8o^gyA=0ojWFkv&i@^>X-RyXjd~;It^?`~oQsgIU=d36=u$JNS5~f(z6g z>+n+*3vluK(}x~2%=*sUpB=(qQ3@;){EvM9kDzzj%MHwFpbHNfAD(HQw#X1icKxlP zGI&W;9megujmv|V;cU^%k-={1>e^>`QS{ZuHhvAIMu$_Z84zUDlGIu&`S2McSDLfocktb-?5%@n3{#(zkk`m5-(LXmX-*ukX z=?1qK152a*1sW=E_FO>V;Hbe0A`M0bEQV5jB5nY$>$&P2XVk();YH zM1>4UT_TiR+*cR?t_U)v$yq^`$p{w*JKj+ms9!;fh}3dL9$_R#1P}Z5+ixD@389y| ztg>l6nEo)efd8a@xDKh?^VK}s$UQJrwZQLMz9}Y?zd&#p$ZCCCn_(Bo?L8zwNdBI8UsXX42c4whq$p) ze`x2&R2)8k$+@h>2K}Rfz2STcnoDepWY{%AShGmric9ib2@K|gTYuI;N|eNeSF4JW z8q6U$8Nc;Vbo6q)Av%j9qP>)kBTGE1j32B{I;VcQ=;#O=j!AH=mI!_K^WJKTRoAnC zKL!f8hO{16%un5=Cu#!0rJ-}^OE33{FD)uvD1wDB$wNiZ@QIuzEJTO;%v0{xqEH=byCU2f_m(L+P(u$sj-nc%IbUqvy}{qS_0-q*j@DErHB8kI!qiz| zn_$SHy@PeLi}9a(jhx^+TQ^yB;nqZW%M0+4`^RpFj|85an^=*k3?ux&8d0>FtduxC z0lBZgZWkXaE7-~n&~Sd>Q5)&5S|BAnxp7GaKTGQ^1e^{IMLOe!Hg2vy6NhPBT_XN3 z0>*%6v=cO!^#O`-U+z3!!4qVU!anGZ1mR8KK@jgxh6R`f#xwJEa&9TRgJ0{5*&9uK zho_}}tP#=Ip!dCp5WPesAG0FeC=Fy2r`pVd;y(kZ4&UwLj&Ig)x@?pGiy%eg0Bkcd zQDw9_Wh@6>OxV#swPwM^4KVUM?W#DFu2!;(s?tF5?N%F9CR8;B?>;V!R0I_ni?Y)9 z$&vs^6uyuqILouI7E52_Uurz${FlQdXLI8YhZ`iEjp6AvvaVzUtiLZOO#3nd)GmJj z8%5FYU7@j>d$BXedAZzg>c1Zc8KmNVf#x_;XUiuG;6q@0@_653Bxog zYPkN()R_{#rW$!owHzshl_0q-l2>LR`iZ9Kb|GnYoa`h<*=m9<%~jhgxB(8Hiq)*s zz>OEbfV3JQP7CT;qO3wm8Gmc}Z%Q9y0UEj5>cCRiMTMQ058ZMffo{tiTU~t{IL06v zY8#;KJ%|Yx&ojxa);j=t!zwF#>Si=-P5TZ;>cQi648AeTRjKtO{H^tp3Zz2fp{8OD=$fg)B;d?4_XKMZ@I)p{oGN z-mf`r`BF7kJrMIWn-Gq&x%O3-2$*f;4d%03GT2dFbtg;#*?p%$-Df^x3;*{x|NhNu zGD1axh#vpm2cI)@@0~x(U?pDQyL+x3eEC=2MzSN&mvoWA9l+?_ytu^z;DEiq_N>!~ zgse{}@ZbEhfA40I0YZ0zaI&X)cjM}_O|#Pn1}E;OKC(;L*KK&mM`LB z+53R6Kl1w8qnkSyqHz&9LE$jt`R)9xG4+3@cFmH74p;n5Y75y+a{X)aS{46+&^W(+ z_xog__G8~C+Y5lm#VF4EzatlWK;&XfNPPJjsOkSTk5?%GLH@=Ef75MUk3S^P>*9B6 z?q_dL!|tw6O{24qIy^?Nak5_R=!`2j{}!1278^9c3QWY3^n!JV#u*^O|NUZ-CV8j? zvcFqx>tAZr;9&#Vc*}GWhuknnIufsZ`S1-cao8S2L2_x~$Jd5*hDy?V7oN}$z;XS* z%ZfZ*pSzoT}Sf~ap+{K1*NbgcIEd zxHz--#25<(LwU5yp#?!+?V8h&1ZzLbV(Z{QzQD_Ikx9AqFxwwC$|dRRT3~2_*W!HS zZf>wLGXHjy%%W&`HTQmyuHNR7RAT@BC7kTs&#cV&y&}J9=zmo8;zL&!(3oL?-sY!_ z_3>)w?p?_S_}eejY0W(e{qLV)Y|nE|tF7IlLtz}jOhG!-K+o?6mKSV^11ILTMAX!$ zVLzC-a6;_w_wP54J1g|L?x%A~YU+G61NY6m-&$P00ZmfjKR*npuOpA_M#LbSZ_rLR zC8f4;PVB$uuiNF|%H>ktZu%VlE)t~iwFx-&qazY=B#-`}Ec{=uGji|FRbreC1B@7i zrN$65u(NifX_Zx;gkJZv-HXa4l=ZzpAGBx&6FK?{`VsMhnjW>;;|XuZ5~qfr9}P-X zPfw~h80y9uGL|o=C;1L^JXwudiavOje2XVvLah28R|#_xzE7weh;zy4+5bgwI(i8_ z{QU0k7;P{aryLnex8Kg2xe4A}JWuAL~~vT`EZBNGKDd#@h@%6T$_vZg6sbvFmp=336O zU#-tpCK?A@TAqgX+Ti0zWugn-fn_f(1dt!nR=&9azW(n#{dQ`6M2?q#y`y2Mp)gRU z{&sLsPIcg2p0Tm9cw@hZU!bSmLCg3ax7aWmM>;s}gQ{E|>oWel$7kqI?CFUe8!e~# zvx$r?$EqU~9cdfZ$VoYIx``%=El+H#62i2#8wSbFUI2ONZ#&ZOpY!c4eExE~OuMtv zUrbYgNiQwPaqGwr=tE56*Jm#s zHe%~o@!Cho4|{Pgbo#fE{qJxAvA6@k4cg?HPKwhY1ctM190!z~$+%Ocmkl&YkyZ7p zU*`f1dGrhXisubv4a!+fN>gl(7P4(j7yC0GH1l_}nOSw3$<{(kbhJh1npg(xdCEn{ zxwS&p=j)g3?;2(VfBHT-zut8HUZec^TNa*Z^D^bOO@WqjZb$Skz3thW2$z1mxXJB- zOnb@JGl`x-VLt_gS7FcYD~aooFR7p3_d?swA8un(`|nY>17FDvokJ(#3g%gFY%ew z-1YY`RJooi)N-Egq{RnT4r@?qRdaL8O+UHuEK61I+vWr!Mlu2AnH_hXE63n9G66Z6 zq%@H`W?Q`Ot&Fx#x2w4>c0KOkP_Mwp>wbM!s87S-F1#(9X2@F7%aR#)p4&u32+X@bU+veDB{5P#yX>GY8dyifsod1V>Y}>Jf0R0XWev&sVyPtKGMbE~;(~(cEcMNd@2#oOu zdxF{zZEaE8)#E9>PZl>eN_eH~*h}q=aZA0tz-*dE2L#*^<_1Yti>#a_>LZTh;Qq`i8eDY(4vKHqyLGuMs$gGEav4BuKEOQ}k&p1!TQ z_M%IAr@#!RIK>8Ob3aX^?zzj#D&w+~H#487K~Pu$ATX9cigK)cYTUk z_xgux7jxRemHSop97P$b_*L9WClZ@D_33&Vx|%4x^nzpU(||DW@vKW0g@5YU7>||% zLy^^$ubEVdF8&9q18u9j)gP>U-m`aWtHy_jtehU%X1FuSGr}y|jM7GnIUKtVpK=gR z81)PNJgDzw7EZjLindozgFzLC=G_H9JapPO8L@*)pt%K7KhCJHXCaaMt#{0=&qDPz z^hhek$>n$}^w|B=Q(JD4mzdi6R{YEn1ef)ig`Q1g4yZc}r-Mg_Pz5EvOw8t~T825{ z*ST_a(a3DkMEDD(BB04$wM^o1OwkScGirQ~R-zD+slJPPlK*uNf7^UMMn}FT@X)g( zUoLoDiSKdNL6*UUzV=`{NU9ol>Jx57wpmSy?0{gynG?QXZ~6)&4fu!0yaBHxU&SU;1w{Lj$qN`7|@r zQ}Zu%O|wsXUvgk(x^viMZiOpmIjvq^te6?xcSvmD0ahJr@{VV%>;i0 zX88$vDMZ0(RX=_jr+Lr3Co*`6F7-YL{`UXiB|IkBN}G#QKQb1V5-_H`8J;>7TMcs4 z!x1ZVD(}lIJ%(o9YT_;>cXnJ)VKYjZG?SW2!I7uvpwTm#$Sh$bvQ_Vc#FbWmk9!qZ zX1cy9WvN`8Mx}?D7?anxX)=tFFDo^axXYLdrj?I zM=0_lojiN?I!=F%Bv`I=4gG8yU9?ubEKtfocT;C~{ZLS@6qVWJX9%AutUD)5TwAIo zHqC=Nc&^WwnO`Xp;0@3jxBu9eR`LZJ*!zo_fcA9AW@Gx2$(ObxIz}ESIq~tz6Co{u zIA&w%ZtygJUO>TeAou^p|9yTdqNe6basyBJ6(CTuPkBf1j8b~^LQ`5w!-f15OgTSi z4yq~>tIF?@DuD9(0v`#rgcb^qW!u=>psWcD@0q47HpPzf*H0$+UJ~NN9qdvh|Px1*_@WH{vn`m(r9z?G*>8Y`87I~~{B+%XKc58LSX+|K=<37-UlnP~rO7#1VvFz%)@MGr z=XZYbkUtUh7(A`fr?q#8=Cv&Viyj`Kz_#Q!o(IHn^ zpuc+{|M(0XG9OR?L8sGXSvxQ$*yYJjch?x4-7Dwf=ZwBMWkuDlG|EhrrRpKI?)eI@ z8b|=1OI?-Y-dk}*d`P2FH2@J7ZpfYPlB8cMGI^7)q%K0!K$}AnGc8kBB|=(VTCF>9 z(^}fJt)e0jVx#r~IZ(z&Ci%7JYIM$$V~#*B?3XB-&N;_8_;_yS%9Z-%s!|WriQ2SA zA?WS|;+PISylSI?^1q5RtIFJ3U&ZYGbEdU^YD0L*#oJIDp-7MPKSdhI2X;v54V+=b zpbv*~o{&g#6g?}h2o=V_P=P-}Tm^cN1{t5|l?nVK0J zXtuFe)R&+?Wq3O%(`|WBtd;+zarQm#RBThJ(RhMs8`J>7VC(Xubl2^QC3?JDZ=wqE zb}%$xKv)20N-#lUGlx5(u2-m#6^b}I9*{P^E6M|Pos`tcsju_?E)}Fl($M4lgW&&T z?7QQ!e!sYHBUH*LAwp)6kiAI=Ny^BU8MnRnEPLq0VWUFAo-NSrd&59*zDyQQ0ZBNZK(!-(MuHI@W7a z&O=dkaQH%#Vm0YJAU!}@if#^7QxY5)9T_quTeE(5y0aMI8CiP?v%ham91A&HFO>TcTfGpin+EGm;J!bQZSZM)M$%kQ zUL{I*Pi|N_`NwK-4Y}H|s^fhoOTD@u#eKZjJ4SZYS8kG+e_vZtB-OKNf2mYbLz}9< zZk?kT8(ER&_cCiRb$>>9!Lqbd0m>WK$9!O=Zd@{8lUq|xnMIi6q-zb|J5{*T=a+rb zBX68Ad=LIS8x|(Ds~j13Dt~Q*FW2H_^hkxr*yyc;>PSWT3aCIDarR)!;g5LMhaf;% ze!ssIsUP&(JX=vgXYyNa^?0>RlnfKBdcCT0gEv@N&$0M^cw|K*v~WAcT$LAdPg&_o zRlHybY@)6={^ywgLMbVZoqF+__}-{YydF-w@+@gq+cMRt+Td-#v*02~mk#!{MF#zR5qQkiubhb`!wMi>44hGU6O@G8%Ak))oudaJv(8A=g}#u@*W_8 zo@9Tg_l0KvCSh|pL!pg}yhY0yA8{KIpV~|4Zf<*T5kujZS(gmTjsxCH2CrTwGIF@! zzF>@d@LCW({lqD6Wkj1SZGq;tMzu&vI}zI`>5e!K!BUn`A?tV&fSdsb0*?+u|!?!F`I%ACNp(SKDZ!Mai}Zi>&bMc$xY3?(67d8k!UZ>IHRu#g5R`nlQmvp~@oo zS!-D@c`7JI_hK7FZh-AMRxNWyKTun-qj3L6P1xE!r(L%8GccmuywK8O^N9q#4ZHa( zi=<9ib(Nu9>sMz%H!dSm_)mLS(nG0!zS8BSczHtdb^aY)QlASeSY4-WKj7K zlTliYEmYi4nKT_sh%PC_wdB^ zT82PqmxVShYS!&KHAvRkL8o@B%UduCZoMs{fdQ3^-%~^YD+KzVxZ__12|&weB&cs8 zY^`x=ARSzzWO92I;a~oU&Ch1V+TwKJ;~mjB2LU~CP_bg?#&kG;11X?XAp3X4PYO5w z+PQTlA>uqy2-O(Iv|e%EhtLylc@&jU-Qc|t@zGK;yT=f!`+-oiIeTd#m49`F0YcMm zDj(>7@P_b3HXeUN6AwJUq}FIHHNLZng%ea>%t$K&&ExR?P0<_h51fgEA=kwuDQ&&) zw8m#AGD*nh$YgEGbc;J9_#28iE=Pk;$I}32!;lZ^L3cBNTm6dy z6haUG1*{iFi0pLxy&381H^{a67cdW!aYOIcNPy=G84k4 zNd6ir+Z1QlD1=z6e*u92_Gp-^9K@S}5?2sdAg~sM5&nx3{~x-Mkl1^MWFJn@;{>rj z{~`}SkRAbl<+|b%3Kt(FlLBdk|H2g_Dz^mnC@gLPR}{tYOu-T%*5_YT_z}AvL3jKA zZ&LF&nt&e$$c?&MT8{zQ(W^!JG>7a}cXKLvakwRzd3mudDBc3=$I_&C`|s`BNx`-# zd=Kt<|1X#B?n3+`OwsvPHDDLQD~*Tpg~<7UbX%d%qdDrSG{DNBZk(Zi0Z#_rKO^pZpn14>b~d z{8M1ZeSl_oMW4oiS7MAJ@s*a+WxZ`eqcboi@R!)r{X5u2|7-m=7cq^o<6(dIVGz1a zge7v~0Mlj{wYohcMP3o~D+LtdA^LxK0v-%6CkRFN-)VKSmXQ2Rtd@fF&sV`qqfJfk z7URN7gk`Sg1b^G@iAPK3!Q^_ldXZ|PgF%h|(=}lWd6K#nGTHq-U5}Z#=aC{zk;eYp zLgi^rsp8|;SI0iC<25jk1o9_(;~_tp`^C6KB(v*3e1;}Qu`F3nFUR3O8d!I`N6bK> zi(4lAtS)=tnnKbIPcV^4P!c`Mx$!k0F_r1uHRLy=Ks3$zU;C_6lRL*#_xKw8pSNcw z#VF3drkq=u7B)a>TXV3?`nJdTea>_~ay;wBYL4B*ntFF-im7`YOb{uj)Nnd>HKRg~ zF~+6B_)(&w)|gCNj#rNzPt5fn`KHhd?DTdG8bi;KBu7ERa|h+6JwJ_u6}*OcOp}R2 z&Sw`_e}XVX)JysJnCGppqUT*ZPW_$UY_XeMOlQ<;a;vmCPm)m!ibofNu!aQA2t{!; z(EJ4kx{;$bM$}7QVQ3iJaA&rpagS@I@EZ!-kdZr76AArJbkD!J9{^P@d zCV5OhoHbCtMyfGt^w1H4b(j#;)jU;@=O)#u;#tdz-hWpUh~HosyZU_XCwG_H@3(Px`5%jEb&9<> zbW8p3OMV3u><$Xi41Cy|XIJm&#Cc8-QpW6Xt?tCkHjpAV3w5-6DAp7LsK<1P4^M8r z^77uz6f?l4bUATbEw`5ZAw(Bc7H3+^{b)_0*G;m)O8!ci>Gm}=7|^i9k2MgYK`s7n zMTTpO;Sp8$<>{UMh_+=%@f|za6BU>ly+_6Krc)ka_#0%)F|iJza#TB~@Ugw*Y8vOr z!@Y7w0W)tM?R)Nc^{{XzEOraf`GZ*!e1POT6f8nCNJ{^ob7Jb7TWqfVP_I=?WW8su zBHyZjc>qBw8OTw7XZPvOCF`=S-8AZH4y*i#5ocXVOJ5nARuo zKNyavXN3ZT{w(W98FbB+IRw$F2>Zb-SANR3zXwjk^e7(KXErV5zrG@(=?EL!lnfejtOe=S>0J#4W*+&*3y7Pa$Fa%9jThqwM zXfd+x3$=WqJrRpfGQ_4;H-@0M(T5v8=kR;(?KCTHEF_Wt;~<=$x{BktZT!4g+@h4a z>s*so0l2cMJ>Tn3Wb?PGmO85}_H$(BPoa{UBj=|_miFhKSr+?|W%FMI-sweHYQq%9 z8}{KHdwb0UDAl!xq8}2tiUDi%?4ytSJtWEU_il1SF~#^ARi|usUBs$I4YD$HPgo$} z(CoTh5?a&y@(UN<6zCp;zNz;?qxjNhLzPZ@S*)#p=lPF`_00pF@C_RQRQq?MAaxS` zjw_khK~;AomupDqu*Pb?FfKEo9mKG9+|b_d@q=f@I2lCjNU`b3eHUWxwa~p zn->gTtC{Kc!V@RB8$|B~ahWj9+IywnI|PO3DJ`0zJsabl##-{0<1!%3;31Ukl6n68 zda81)CC`TiHhY>p#8Lz5)noj6+qN_9(jk84(SkzT*5K8(TMN27Sno~ppy$hLfC>}& zKq5@ec2KZjZleUc-QK(}IT?30X`6cDPUDeR>nOS&WKWZSt9~VCcMt50PW!c1F`{59 zw>}nJ?Rx3NzmuWQoo>pG3jQs!V>sH3Qz@4<69}I$4~E^-ka|nvge2%4V!xwy3%OVRnXW=7u6F$PvLSU?~-&fqncY?RF zaOS1uXC2pW9L?wP%+K0xuN-7+O?B**rOXOYJ@mn=PuT9XG}lupx%0ojsXq#P$!7X| z-mN&{1?mi-7QBkrY5ic)((4qoY6Bm&DI9!JGcmpWxs)CR$ri_@Po-Dye8+>dWDp`y z41LuqIo-L-@!?#hMn>g!)*x92EV-%-X4OUsoV3yH5~KDSUHSdmqqs@y=t?GM>WzDt zC#}JA4L(v6&&@?4mJ`-9RO{V$-DbJ-wS=Bc{O!tSx`ZO;^1@<;^DN`6P_jkyV@u4m zv^+9Cna;)DJb>b_dA~t?d!hjM9zc4UeaM}X<}P6Kbl)hB1AXJ#qthHrnzW?zVUNz| z_EIw~5glbNc_mCLL@E};xD7H+GNtbj?#Cznd;1sLIf9bSjikJGCI{uw14eGgRN03Q z=Fhd}a?d1^*`a6J%#oql~Ayi&4GbinAA9U7@Z!b?2Kg zA5%~nH+E2~b={(>I002|-HPLk>X)YpuZ@opuHpci9TPQq`YiWsSimK@n;aHar3D9_ zHV;JSPB|w+nNF4`=lg?m)+Sv~560(RqGKww+v-MlZbrsXxM7kEF;h_g=bUh6E;Pwf zLwBM`_{YIAX@AJTkqA1Di+~y9U7HIxWUfcS2LQ;npK9K#^qML^&K@uwQQ5=D*_({- zGF>fF61iUWWb?7VF=9(ep9xS&6CThSo5U|fc<%+VTzXzy63(Lo=CLUorbHLWapfGP<4@M z29shYcQphHwYC?!=M!wtsplu19^@G|tDPH zpn%5H$%Vsgz2EC))qWyY6X1?PpafXNDpt~O$1oLWzT z{f^$PpQ(#uyoSPFZD}QUg1_`0&X|D$M%A2YOT1(yg@099vHuK=_`~4JHA0KRh0=Xz zwoD(iTa8$nBIB>AWCv z!*n>$eurJLWW#b}Xw;Ryj$`f%jl5_i7B7QF|Nb@Mm9e_yq=%(edzI&>1kW%>1^_>~$XAR4} z99QW4^Q%*W>fu?gC*cng>}&Q^i)3<0t^Dx1n>n9@z|+PPd)4k5^6>l(J7IqnlAF&9 z15-mfimzw_cjzUYd#xJ71hM}qYO&uvbR*fewoo=n8m01f(No<1c}r)o%p`gVW>RQV z)X6lGXRj4)v>jem{=hDKxcvs5nCDbW-wo-b6D zhB&FTyY6a89jeqF72nliI(KChD2BM~)s;wn1H+KC@$7dvP4}qzN+7kz4RjVqIP0U{ zVSR;idG^3=lkR7qNB84Y{EWdLm4Yyxs+aW0yj;mBQ6s1)%qh3uJG$z>(Jq+9?0izd z_jxpH=YCSV(!p+z1IfCh){`QVR!30Y!&Jl$fc-5y6^bW%K~SoEU2KaCboYF*oy_3j zsjkiae6>#@xBp@MPjzKt))o{ruuSJ633E4?RR7yXQ# ze1kRy)0GTm4ByH8CS!r=j_c9W30d{+8k~6fsyo!5Xk-MVU0s^n64bt}R1K^ydk@I< zeUqGJu&DTC#CzTy|9Lnp^ZECYfI5L%Wq7H`=$@rABo02<&Ao0NX@OZVHl`St&B5TS z0%c@6D()T$eg#=^whid*51yxUNK%FzgvyA!?zxn2_$H^fTu14Iu))w?93!Wc{)%jX zm}BO}H6XVOf^g`bA0C!dcqE%Yw=ky0x%dHLmJlbDlW?_1pm9bCx^HH@uR_%-eXpQK zqz0cpmYN1iI)l7mWKqj*r$)YLM%{}NAj7FwmUD6VmW)~^AL=*|^JpY1vy`~w?qy9z z%~SZEvZb1aW!!%0$SJ384nvDN>d;7V8+@Zgt5>1mWPsqPb|U)DphBuO6Sr<0tvF8* zOPx4`b?B;LeyfY-<-g+ndVhDWHVvBlK!8YCuZ+Qfm;D9pVCH>m`JehiHIdH;NMb0z z_;DQS@#3V>Nn#rXS#Fhu3m6Guhx zUDn(D?<^cRX1`l6&wF?@Rg&W*&Ug#3C$FUwLBg5-35VR=xq!ecDau6_yqq_k8~as| zspy+mCVp42L*`$m7+SQy_}wjRJ>t4=Oe)pZgG@t@8cV4k&doQN=E|&c3_Mu>@*TAsuaP4f7+)04Q8#5}G``RZ4X zmQ~INRM-Vj%geafXV)YB4+Xs-`()+JAE_SxGNy~fAYTBZrKLrS$~7|N3B;SptprOU z`vqQg?M~nd!Pc(?odB)iM*WA?><4otQ;cmhBD^{sRtkl~*+vr%!K)fZ{I2I=_7qM^pu0eJ75ar~3KZAu* za~D;v#_JPB*y(;|{3#~Ybu3Lx$1Oq5z_H5iitFc~6v9Q?KNT|jl?-{rARR1qG|Jw1 zRFtE6g*YVmIRq*eft45&qiMKE67Fa`RVibFETr3GH_1R4J~^%&%=HvREtb%GsGSQ` zi<@+Ny*kap=*F6AKo?hT?%F&)%?opE%2jgpa5ePR*gJ%qo>z^n z(Igt7z`LrVaGlTF_F=7GAOMTfHqPUzY%yflS&C=EQK!xX#}=T9|aXmsfr2Tiv$_OM)>lku2b%4#8pw zv+mnrqr_JW6QUU)vdlkOB}g}C?zu*~J%I$PL!fxsM32!e?~u$}2WU4Ud49WHLVTC< z!|MA+bTM`98L09QaU&1jLpo)wzmoF=Wzz-oEiBdt*iGd zs?XP3w>zQ}B5Q)qhENYJPT4D}jtiQ0-itGnm6NfhTo zHMrpOjPh&7UJ58i8|Q>|(HeDYejWYL?PcgjsXS9w`C+O2-a#P91>~XN97Zi?DcOnWB;zv7yIg$_#|7%I zL)S=9XISqEvAH7P{o)B$tCS8gY7F03c5H;^oEfe89`;QGwBO}mM7CT_91|NG#?_%g z@0LvGT7s@{;Ft6968~VlorYx_Ig%gmzQ~LVMX8?W4VJ3als_lqXJ&X+8qoieqto$= z8(GdhVYy2;T>*6Sj$bhUsZ}j*{deLAEM_!>|9ngcnmH(?XuKL|-rM+iDS1RgRU5D0 z27J{R|JjPiaTP5W3Z9v-LvvTU-s|%{&sQ91Ql|Q|Q zkQtv$CmoW2QVy{lt@)Hh($rsqmalI#Ei4|fgxx?PU8C20CCPxtCm`_9XUeS0GB>S> z7Mi3bxyk4FeWEOn|?C=BF5{#a9oSemaes5~mfj?|LvNI8(f5-CC!=eo;Z zu_7)enwPX{&7TM#wXbk)imX#cMZlE4A-V|sGvK`eWtTA38P=2;#$#+QU)I0OK`4wU zCMM?Tv-!LzUvQ9I(M%Ae@#qi653@@APB_7dxDTlP10flDzSJtHsmKnW_qZgDk`1$$ zNtZqgtX)>@(69#0=pl5{0^iAFyxhM7ctnqa*xQ}j_}#02P9&e}XcB6pw@^p{iZ8l3 zG(<#s*s`d~RBjWFm=sC$Q~>Qee!a|UsBzzS{HiZ=YrCANcEz93WkpYb!wPEw6}cl% zW{i=!zx&uz+`|Z?ca7wG0-+Ou#8JMM&%|sNfKT)M-s=+xwGDYU zaS`WPWBnpPjT~`QiF)vm%J4r`L$gO8zYO(TF!~-~P3c_L{FZ(!K!CT(7hO?`hl6|- zcM4)6Ur1u5wZc!F2kqarFWn#N6J!$LBB?M);FUkAOiBh-(n9n%qSwKyg*Ac33n&^P zXaf6}{_1fN@(klgaiwxP%^n#_{4-I<`)pu6hTnJfG6z>`BU_`C* z8OKKOJfM!UT8PlPM1p#1)2pzi8_w?fL`3`mfc=gWMwA|g_Rl)I0WjfX(}$?H61CzG zIu!`ihM-$`fv0_e$$0kk64F35hp^w>LrQrzLh8hm?Bsrz%VxKl$5oot-jM9MQn`sU zN#QCWioFyPh`oS*-4VC#?9E?&GG;o2l!0w}3QGx>2r}NO2u@U;$bTa;#l4_RI0?N| zL1l}uV~}%xx;&LJe2Lpo=0LSgkluEDHG8{ex>Rl3ZXyx?c|D?$W2<@b0O3{Qy~9v^bM27RBC1{@xyC*6!8qyLn*=BHrLKme~N%! znt(RWBQN(kW^lu0WwKOq!Hk27H`m05n9%+dVUeY<#V$AeHwNK#l57C@zwcI}Ge8*w zeR2RrXQ33k*tE20AlOk->glf&9H!~3g`Sv%9wm)@E}sPjuwmP}#z_H5)WeP<`22bM zInL4Kd6MfVd^;BI$5<6WlSpxdz)Gyw6b8+#89`9`mKD?Z-I=jv3m{V?C-Poo>r>!2fa z=9(mF`Z5dq`+J;PNGF2;EUJ=eUHjoz29pz7m% z0l~pk?xFR+TvQJl;(d8_&I{D(9Wx;7ihM<>IZ$niwzx66!vUm_HSNB6hSk4JnsG3}*ZxDO8-2-iu!neuNta>1zA2 z>OtDS0$CuBRx2Byin-$8FiNKML;mY~pcbc5*Ekk8zOtB(g*Jl66a*tY0$|A|qPz!T zYeTsQ_n`Y{k1c|#-pUUdhtxH5@EYYecAi}xKT`f$f@LMS_nQk4bz5l z@P|ZuMAa{!>4S0#OzKR3f467f5@h^bbNQ3e-(?+0Q3BX}@q>#mkpX|_ftW!t(LhOl zvyJ~BU;VDb4L>pAo#IF$;!{+y1fyR+xZUiCdchR1W5)dqh)H@*{;Lk1H15)ORqwTZ z;xCipxKYQn4szoTr5=lSrw9a7C=3CbYiqVb;{Vc~gVXv2Wmep(9iPize@JWunk{u(l6yG| zGb&1aC(}592s)v49`Dws5q>BG;fLm0j6!@V+yojV{}eL z#2g9m;>ZK~3!nW4Kt$KyRvMr)_tItbdb>1mfC-aY;LB=Sz4nydzpC=fm?3Be`a*$a zeUu9rOLVA18bLVt-6?fq2{HzCUwT|86cLd#LM08BC!fML(PYlo`UQEGd_2@n`#Jg&LSphxOnnm z{G9vC(SGi5i~VxzXf$r<3FP2bntIdQ*wX1^!toXIio2YMXUDw`mKrceUI|gz%sjAp zi!4rAAsUZ$0bq>T{GZ+D4o0G!tjWBkbc6dV#!{Q6)xNwGe*(R~5q)v6^87ilqGHJr7i!1k^5XlYnyDKp+&XZ97+WYIP20` zi@=Ww)k(kLdoaud3Ewko(RFEgmm+4k2yr41p~s$N?+OKD{-C5!ucFALIC@?a@iV)#AYhV|8Q04EYc5-9v&VseYX@ z$4*+xfznN-z|H?m`;&mTWzF)MgJ`_Z4TJ$vBT!!iBSW+4d3^JAV{gzO#N7lKemFZs zM@UBC!Un-|Xlfo}r|*g5*_>YGwe7^MUkU!i`^5lI>Z_(THh!zt7lGyfYI*Y?pOeeM zlM7>D4jmZ|Ag%gy2V|R*%fJ_M{b7{Bjk?M@!)qqF(cf#-!$>TUGdCJR^XLEdHK(Sr zn~0|H760*$Psz}E|%u4}|c+5?!#g+)cLM zE#MgeqcI0=uTzN27wye4`rw~UDa`t@<-}8xUVVX)$1}>-(6woVcR(W0|5#S6XMqPk zdy0m94T@#3N=U-Pe{F)!j~vUM$|IP`f3BFUClr_wPTwOo%!F=Msk6rXdNltH8tS3g z1eMq+S;N*FT;OetfJI!eZT{=KKE37`(*6sPMtlh1f$lZ1VVgG#JN=Yuy! z+TjWp<+v zkemQ8nf-s-7%|&+1Ij-(q4}{H7zN*bU=&OP!af7(>z*r$E61Y0SPLnjwcM}vPm8oN zc4Q3zpTyNiAe%%)+bC{)|Ik2$Y%u`4DdVI@;Mc`uBg=$~{h=xcP?BGfQ^*7Gi=g)t zy&E2{`7Pe!J1)S|D}nhwAAp3Q@E`rz+@SFbB4H6a^8y+CA>ts!tM^pPEAP6&iCD*{ zh@N5>ETkUk#7#aAz=omd0$-qyUvmx(?dVU$;O0(3Liq>_uUX*uMl9CU*~}%4iLII2 zEpQ^F9~T+{ZXL-P6I*RkTJ1rOQd$IQNQ|(>2nKAI@aLbM_zWZB-IHv4|B^SYmw=$T z9EUgW&Bi2O(ox(B@5QxlgKPayTd(K3hNgXtweZI>)v*!rm8(eN{&0jR;+%msespzA z80BkWC%>?A*gw{ETWg_~AY%Z~$hm`G<1CK(6*2pZk1puWKUP~NRL~K~9W8byhDZzP?X#5corC_T6N7AIeP(~Ei;I#CIFG3%#U3F-menpgbmqa_ z32HXfmKF<%5?{I=%A8?3e#0R%rCR{VEhZ`@GY*m+BIQ_H{nY9d~Mx6h)Qtj z?1i39P9e#R2%k`|gDA1IP2$PGjjjlS8xGCA>8bl>8DCfN^WwEr+)>c;^KLGk`){R7 zymL--%5*FHnVRy&=gTptof6n`0$)%PlBeU7N}uIWxuFGeLLuTa)sG>p%+DL^V+6i( z{|Yxi6Pk>S`@&~pG8~j{$ zLpQUsWR(QDL_tMj+JeLLTo|$;!)st5yzTK5S#DJK-B^hYvQP(Ji8#ugn;@9+7V?JC z%Yl2IE1-BpPNEag;Wg;`C`CK;{(4 z%$a`bJSVRT2bv~W!;SS)#Z)IArX5Za=i-A%M~M=7`7pitiL`+f)e?AikbNlyoKHP@ zPDO>3WR$7nYrQRzuAFdVdTf=5Y2FLVSX~lT$vtj(e@>xCg zf1fD8AJU^qp6xS)5B+w%5-2?ANy9BsDV-~J@k)`Yvsu@~ZWr!_!PyNNS6yZkBWn!L zC8^b4*ee%u$=O?+eEif;#%O!MuUKsNcDICno^^Rr^uEC4vAYnf;9liDFU8;m5^TAZGB~=L2u^DDbgg{&96{f8vfCV^2Rmty7_H!-I7o>*04zNnO(L$8OZ`CFoBdw&9K%t7jY3HLg~VO_WU`eD^>ACUNoqB zQ@PcYFCG+dX{5d7-6*;^d^|w|ACB6w{o}7ygRPVdZgG_94xx^9}BQ2zc9|zLrr(yu{EY7I$aC|IT^)QQ?oS zTdMM1tYMBBvWIrV7GE`$*NZlzS%OVAKQYTNKu z{93>9bS=N2I*TxbwTD#aBMdr)oGyusAKS5?J$pvsO7+k+at;yDz$0taN5zknpN!h& zUBo>^7+{xvL0?+CYL>^;+^;QrtNt6kCQUbArYjC-rbkxcalQ(r5(|tYEtY>Mf*wo} zeNVWWIVUpFdf;!rvc;`LpH-W&6c)%g(%WWvWvt3*>BOSpu9^y*ZNI2Q^YXI#m!Lhs zA~qa}zFIhLq_MM+U}J5r6cupaf^lo1Mqy`c%fgXeTcpgEi;y*s_?-9M=*4^ zAg$GDX7xasaVjgTa0=gtnD;F5MsDU>ORZkYW+5*Ch^tb|)Df5s$)gP2kNSkm+D^Y?7TFTQ!kx+V}?2uCG&78^}XldX-l1YNId^( zp>l9piC#e&#N;yltHq(u-D>Qs1ZXM(_8YBZ`eKjNQD4{9HvTB8q#RZyAH;Wket#^$ zyGEv{S9T$#V&6#QkRjA?%wZ|-j%VWRDgoUI-Dd=-Dp>a&$_OP3x98M9n0Ks*xz?m)7zVrY=A2l?hH)b#=ZXl)d6wxd zOnIe>y1mz|LEn}wiVE2o27-AyTdUQx$aj|gon5Ss-J4Ds20BsncaMQYrH}iE$b_x`*tx3x_ZruQ(T)*r!1@7O(c#yxMe{;k4 zlMQ`YoLn{b1Y#SEM`|4`+cSu_-|C3WZ|jAAfW*%h@8)I_44oiZ`Ci(pc#zu7 zwZc)c!He~JeA2K&M5X%yaUY?hgd}LE?!}0b9sK>i>BK1T1UG0hR12FclsopVCV(nl z!|~*j*{eB+Y?&;}>5{;`*GjRG-*UND41(jJqs#QKZRPVqpSg_PB z`==S|>ZZ*_w9w#^eSKd+#iU(xe)N2K(bX|=sqK>e(Y1ow+3eA|+6~-uy=Sp~n6}U) zMg?9o!{#h`{!untc`$bh?aJZF7$ZyNRJ#2P<_?r>FK`l+4;Jtrf6hANm4}RG52_cZd2P(I+ngNhb^6l;TYhU#V02<8;R14SCQa5l&nrcGo!XmE5b=>X0w_7Mr|QI-xZ>X6D?N(Z?A)xlFM^#d3$ zf)f4|)QG0O^e9b6p8&zOQb9`i`EL5R5-FKAsDj6m-%NY=hB3ch>r2zgZ0uE{Sz=hy ztH`Lc*1>JzGRxE)k6!i3ftvNqXg0&rR9lqzf=e%JqWvV9?&}KvJa?#>$h2%%&#Duc z=@x->^J(W?Rb}7#v1+>EbZ|$%PTR`wyfN$Lt3JL1{JxemYh7cdE9%f*!^@eeNe?{8@T;){MGU6c##}1S@fJCHsR&hYBWbGwJs#V;_zQB&ovR?lt?P z;h>Dgw~xS5D#&Xv%$Amj;kWZ;6tb38_gw>BoF@b93+AkIhqvBJZni$sYX0IFXEj=W zpw;Anjne7H{S8g;`1)_YF|I2{NZl!{@E%MQDL~Q|^S2q6d*K#*7NSyqBaJYN0~f3Bt5B z8aLL$o$@_T49Hy{1_Q;IhtHz|H)oz+EV>`n{ROS3<&QT^Dcz<&`^7m z5607`OtjVHB9H^ldMzQz>Wk9_@izqzcDlK1#FLxGOBc0RLMQuHf2f63E^N+26|8@~ z5En?QN`#aaoa2Ei#zfjTbAXq>ik6}KA#8cLP>y8f<3NgC6JvI%)Ou>2S&p{e1}mpmHb4!WWW zUG!Vr4-oAR6O?l^Gu)(J@|92@fhb&#g{SVpw+#2wl!(@qtC^?QD%7Kok93EjK5To_ z#mR>|`1KzGj0Ck{b6(i|h#Y`Eh~_>gJ*%|)5~JM@b9hkEWW_AaT7YrULEdX5~QZ2z1{cuq&UITI)3~{=v(I&x75Qy^>*04 z9=s+s!!JqR{6c)6s2bWke2ZK!DNA=;KOw2|M^{X1zQvDFPd!H~f{HyfH{G4q+uw{& zEY=4JXG!Z)21eB*Q}q>f*5Xe+{iO($Y6Vw9`acA;LJ`>vYi2NkQmLz352v>JgQEm! z;F+O8-pusbcb_}n@TeT?#Bo8brQ1w(T(sxr=w@7KtQhsb5PoEo;GqjST48LQp}q{l zi0(Hx?Pf=Aua-pG;maVhFCWD8Hn-Z(ueQxHR{xAbq&Ujks`P%LC(MyA3P-(bfM|T91X16 zDO4y;N$pDZ)1JO-o0=1p1+V>e7`9CE=pplOD07OASt>PyOjn0k>lwDh($8Fl(B8`j zl|5of$A0kVF#Gv(<8v`b(lt5gw(`PzfnY=ZtB>@J`W%yT1gz%jhw>6ps}BrHtOIy< zX^MU+-r=oe%Of9Ms4Xff;5Oy+c@s&4&>tl_61Pg1jgNIY{ZpSW#QOOs>W!K57y**O z#LCzq2-=bb)3v9hgZ|kw^{{%cYb5C>fzz>dCQ68+X4MCxxk**>ghBBcVLs%xLJV8K z=KgtZ_+wey)hX*;7wk)O$b6N9~}R%8j@AEu3|}rFgABdlN zGgGeLYKCcExvwZK{|e7yHMnhhkk-d`mgzq-(~sncVr^*M<(TbZ#@h(&it~o&NmUZ` z^62&i5(;1rK}WC$O`|ba+b5H~33bjz;P7%lvg^+Fn?4b-ZIi2i1j^J+*vh5(g5mek z%}8(#7^Rj}W&IXb_YxTx3OW1x>$sKpHNrkCzf#VTS7ne~e;$7K%tSlA`#=~li6*JB zotDr@f7J(tEQp29Xch4(-NNHWg`cc{%$q(=8e0*ppeaM7u2bKHI?*??9}M*g0I|=Q ze(ESfgOV1Y4qD(kyKIfG`CFnhTcnau@zs%u;no|UIN2)EOIjhyrezP{Ch9Uy;hQ6k zFROK$lNFT08+i+zYsIPWVl=Lyp$<7xG(*CF>01z984yQ6?fK(2r#oQS?A`^X=h*jq zW0pB&rzNqZAxIVmQfV$kNrb|uy46ElhuTg8r!hr5CqRDy{|56dw$DW?cf|F;LEGXM z=D8C3xSHeG0+6vzNt>tnW@1N1*(15|kcjhBB)0d25};!4VA22*1;>>EEuLu6gSnb!3Z)NEX{9U9oEAw#*@jby)RaBw;h3?b+TmuHS-U@v>%iR zt*8S6;+`rTY@qpTs)rCzvbpwAT>?x4*q#HrY1yEcx!Md-_4x&Y_Qcoy)0HXdQJc1) ziZhc@o?LC%?Rp=-i6@uLDK8%I0RorHm%Uxzd&}-u>E7Lnl^IC-=1s5AyO#7I@?7?- zD-{dQRO1^Yb4e%Q5mQ3l0ab)?(q47@y~oYtntAfbDkmB+CF2ubb`M2j(+z~xBcE4@ zI}lCx82jMY%j5E6{5W*x$M+d*k)fq@n~g5Im#DAWoovfbM|S~od3DskK;Nw2R_vHL z@#xg6sSN=#8v5$;DVA~s`N#bYz&**<-2zaU5dGQ_|AhG0b?kH&)0@rs#oyJP7MKU1e?=hsMDhI6fpMuCLg1PmahpV$v;MPy5XU(BmKYA_~EQ zUv=3JesX~>ZUX!{J{yGs&0+iUZ@w2UCkBVnklTs$cM$JKAj&k-WEiKsCWCw<9dI^e zy%!8c!BU4zKAOB)?_b5~_;jpGBfFankeQsfy0jB2?g}(vA{NODbXbTHUU0xns3!CJ z<3cfzI`fdarCV-TQ&tPEFQ!*q#wiBL)f?frkXJ|Imiit?Usau1f}F5uqnbjwkRqjB z1jaoTxZ@U$L`#vD+Y}D)-*J3z*EAUnz=nz5c@w`-jnlN_>{cC$gkpY;I5EG2i-wi8 zc$vZC@pDZIE?~KyIHg4C_{awO7c0G(gfhp}D+2ynzNz{io|1{7GIZ@&y&YPWdGTper(1nUvFUA|3#Ap9g6NpC^%BAr2Sf>$#f| zy@(8#{Fo7U99Qmr!*+)BSv(yrZAe|41||Z1GOH^bggWMaZ%|G4r7}mDzxyFGE-MJK zp6%NVYfDW%ZoscR9a|uejWhx#>3a!%^LQTB!;1*H)>a@tZq+wy6^d6yk~J!cUU(>8 zE-ENs8P0#>DH2;=2T|0{+1lD_**6P&_9F+*eqx^c)JkL{Jd)Eta z9m@}}9yMu9F(c|5!|Ikr*g(VdUer%dkYWqXQ*c}oJ7KUN>Imi|HO39hA2S{MiS&Dz znj;@5ynKIUT5}s^a3z>(n-I2O%P#_H^dcuYPg zeK-V`_~{L_MpY8|z%n^`^Vk^)jb!svtYge;J~MMLesr^K3m(6n2&fBN?$PhQ^>*Oh z@#+H&8bcV8qZ#JhNP#ncf|w*_=gErkwdsQM2_yjd^wgfW7}cGpS%?O))3-M6J;7}a zh<<^6T>0dZS@kygkE6^y-mx9B3ypTjEnq7M6A;3FqBPdS(L@Oj4F?1pfa`h3RE*14 z9uV5!B!00mE9{Ii(cvN|s&{i%C@##}#p|0j(`u14TQdbJSFFA7=+Rflr-c(DZFETJ z6SyKIxcv+zP*o{Ub$Sns^kBx-1veYVl*i`t#k<(QJ%AG6!f7;wn|ac&v6wach=%PM z=C|UB$@KC8CrfgsPd<%_q zit6Er0ZaW9AFnWi+|bsWMbTn_(lOBH6B!#}qxrwTG0W>x6y?Z*t;lTj`i9gEO`lC% zu`;;9T>V`ZSQ!7s3Rhab*RtVbA%g0F%xyy={G9KS5Eu)CDFo@jY|k}gBt z%i6af-d`pluO^UmrjX(6J&S*%Jv8Wy7&CX4KK)*F-Qp7ny!DcLrT^8WyGw`IpY9ll zBP?ez-rWjpiFivKm@)L2=?-rFX|R24(-muXatTn+L4?DDZs4gq#iDoc(nK49y~%i5s;`P0FL+#2n#>J|=Ifv5A6DpLtOgSdp_W5ujj832&0k z+qKmkRbPZ7J|1AJOJ3S^B^#zWUxL#d)sgczx?Z%Kz;AN9UDZ!Cfs--%jUTuEnOt&A zx`j+R;2SZ!yHmGooKhsxd|FD*Ilf06g~iMN9DU0V;+00hWyr3+Wh>Beu`ay`r}ZB7 zwXf&-?3BULB<;CqZj7Dxxeu~+3AGOjJLqVEDbxBK5Vb#Gr&&LGR-*~vV+u)(AJGLK zcIkKa*yXY729S(|Or7p)dxxL6I)KnKx2;xS5g zVe1+2)zgs_)6Ikgho3R9%ZXoTm*4KFg7sX3zeYDZ41Yvh+l1s$cWMd!AGW?auF3X& zn^Hkg6a+yjrKAOv~-v80MgB*3_|Jdk{V-#lypc+=NK>s@3rxK-(S41 z|M3yF`@Z6=<2aAgvOj0_RbyPhLwoABfX(#9h{H!nSjEUC{3#RroWjPoyy)4Kj@hHB zi;x9ZNV|2_ta4*NaBMs2|7u>qU&%)PvE?Q=T=Q`CCwfRZ|42Rb$6Y_*a1T<0E8wP> z5|dt@fByOB#!s%^4XrLymUITvw*m5aZ8|qpk?8UaH1t?sv3_U^_zP!jRHO-1FqESH zekpv-1@5a1uyLw13y)r9aqr;9aRDE-`1%HU=|Vu{&!2KEC9f#-;O8~2O2=_rHvwPJ zp5;yz)LEbnRG+oJ<)EC3jV6M?CB!Lad^x%|G*qCf zK9PEOh>iFmiEz#fpRq^#(D+Q8aqJ4uo4gtgs7OY zzD1vyI!4Tnpy)RIu3syZcFzVug&DfMu&eywjUgAl-2uM5a%CmMBzm#6DY6*j>wpSG%K5h zn6;ZY_hAej_MqNhkPgf8dx&d5I3xQW$as18v-svH4GoPf0sDiydX>5p(5!&n#0b#P zQT06T70s7W|o*jS0Q;X7;3mVV?|D|Mx&cHGi{XxUc!CZJjc z=zHHm){_v&l<{&y{ zE2FDE9e7Q{W^AK=)CXt!{~4jmf;+8xHy)GRcpMmLB266|9f-l-6p9Tx{2KA*4j#yN zA!-FFH-;RsZ)e6v=zN1kiT7Q1nhqK<7&t!?IEI)|Ridsged~4H{`TO}Y&OE>B$*MOt}gb}8W844 z8HMv!PvFIUv6bP>TPmDwS2R!4L;akUq8LfnJ{jd!HzoDd+zU!&=TTh@CAm2KQ#3Sp z?wG?@c$550RJkuT_Sj8%DQSAgG+SLQ>o|GcJWFn;DvOs2_l)Z_>+Vhi3|6d1BEAUn zcH&q}qs>>dqZe0{uTPxUd!4z8VE{t9`r#ik4@-28Dqi5}fVGallzUUnPS{51SEWQ2uMwSQRKwvk_-$e1E@apF# zGfJIVc|2J4X4^*ctKD|@dUV7+lXg<<^PGTMJ-Fj|*X7SDZ?^IAbgim%p9XL+o}N^f zEhx-b1hPt;?KU(ZqbzDyv`OX=d!4hsYp34=lSTRrg-@nFN4>ZHPZ_6q5NLyrDr63tsrfD;j7TgM(6pr{1FJD!wre)#a=4TH-}nEcv6j@=CE zFh!}8QT2Bb$d6Q9Cxa`%?k`&WDB#}`iAJ}-Pr=#BI$-9(yjH%+d6wKFY43r!G)CSo zp6O6dN}>{Dh2uB(kg6bU<#KpO=L9H=8A1F%bNq4n3>4Hp(0tcUSl_E|$9K)1l{acb z6RY;o#~;XvN}vs?(tTRzkUl9JkqN*pG~>WUCqI%MmLZ~d#^3zd4RSiYu&Xqi)O zHvc{iWRuSsGe^MK*taq9Gn4>EbH&|;UAnj^K!@w}O71M`;c?NF_a4gS8UnG z?R<~9cA9Ho(=M&ZV9DR&&))pXaM2%Ea;j)`-fneMOkyqo+Iga6s+l~+yN5$7slG9u zPH1F2gFk&*8NwW8T(wHo=X2h+y|l6NyF)z_)9Cj(;BmHhR_5j!ZtGbYK6&@3rl@G{h7-mBKE?+>Pdk$L zeumu6Itt(4OG?ULV<=A#E72i1T02%R@Q+O`LKdCQ9k6oQo$RZ)oHWiFBFhmzyR(we zVT1Qg7MtaMyPlbF@TH9nyJstVySI~WIfz@&i|l=KtxBm}aGuhaIo51IxX+qkdN_wz z^Hn=g((yx?ejF~l4W}&wRVMg;D>BA0L+6K3KQq#aXql6OL-cAOTAK~&EmdJ-jCcNc zo6muCZq0XZD0;a64Doz+uU|*5@9aJX&CBjQ1wsd?YBwa#r4@MPAPzEa(#d7eBu|tX6X zRc}T%NwCSBczSzrPBP2#irO?~NS?$mws8f9kpxPcXNWpAi%QQF#gB|LnOxqo+k zc@`B`$zJdI*!mS(X?$ivn{nTQ*g z{#r>rD#ANVgo15n*gY(`RHERs?oo5XSXgItYRWjV@|VV+7bXQAJV~Q(t}q|e`(zNl z_j~29YvBo)D(Gvk#S>&VzQn-c-=Wo>oB`- zrXOyS0t4C2^85h@R|B|GS?TzR+0@w&{>(V)e<>>+>N83~YWWtnCZuxA56pT!P4A7y z+j8=SWe0u`D{^sIZoOC(X9#vt9J>VD)w@cMx+t9GEb%7GhFI;S9KNFfpGEzehNY5H z^{pZV7y475y@r3}KSjvnA8q3LC`U+Bk;I{)_Y# zN(9-;fe42CRtTww;iP83A1&QwM=6H2sX$Ra#(dYa=b8Iar*p=>@V_d_i-n%j3G`7B zhAXwkq;m|D6(-v`+@|@{?6Y=#NmcDt5_c!`JpvpLpx@1d@vP=)U}4ObZ&iTdp`>L( zi)4Id`sn{;s6}R;D?<_{AM?TZ`iRrQujs#5tPbCamMGAss9Z#q2e?p06tYU&_%uv; z=Fuz)pygA`3x4J~$&WpVrFpE>b^W8NvvX(p3$q}FbkYQ4;wJ62_T>|>-^f{CQkPt< zimIb=t{^*90iV?LjW!)sd$Ih(CFD&1F1r7G6?3`Gw%+8SL$2+v+<6~@sakE94R+nX`3S>6w|KyqIHM|^v`or>m z>|PM`#-Z!uu0}A`61aB*!IqikUFu7msZ;@m`|A;r1}-A@KVis)Y16OvnWC0k%t5`2 z!(t43uGSz#4->_u!(}+>I@m&6_rX63nTO9uBZ}>B@ zI;s`}QSssdyZV!>b77u~Yw@=WF&_g_zT+CvA?f(19rDnk^Fj^sSpjag$CW)J;|=Qm z=9Wa&2)y4bY3Q!p;s&nj)3&##em}d-ldyIg+4vS|(wt5@XELd6jaN-Qd#E{@X&M95 z=61Mu`jhW`Bv&oGy=JItu7(vxji0tbLQM&oz{vm)w#g>6zW4QHeAaurw3Dj@qG=vczUN_-?-E$0_Md`re;|{`H2@Lq#Ib%T4t;WV1atS0Q_IKb zEtNIwlK1-VR7GS*<25}Fhf|}cP51}KW)E}e72y+&{sKWx#~)Zf@in2g&)nC(78;Vw zaj^w3!*1J38>;EfmT&K8V5)hOII0kVyO?N6gp#4A7U|JHk46!yfxLY*Vv}D2`efE! zj!6bRmrBnqmCSPAJFrd~c7A~g8yn#@GgqIMk3=ai8mc_5E-EiSJKY$a!5rTO^$HX=+nOwI||2)>BcWd%zd<;F5dYg()T3=@J6@Q|gD~twv=!FmAd!2ln3wHO8 zHPv(jheGW(r>IeSHTIWw!&Nfu9VG0I=2^usXWn8(2rWB8&j!N|1M7wEY!JhYt}GSK z8pqsrlk#~z6h*YtUcbj|D4GAY2^nn+`Mh4XyY?zqaLbn-M7OH4Lz4K}jypi!Ip)^o z7;AU}5jTlLB>zsTYCvUy@}6DVAsUHpz#cad+;LO-@5gOQ_sc*&vC@LKZhznd*eu#e zx{Bh3!}w9Q-znUBuT#cb;GH2Ts4fP$sRf*zv7+30P2#F&j$dpYbeU4YbTrGTEt<*9 z3{MJuk(A!+l!hPk205KEaCxz_PBguBT-EKCZAIqEqqtkqHnoRb-aCcidq3s5o>rbW zyXi}Noojj9&oJ|E?&VviIPqmBmq)p3>j$3XiM$*4B{vivT^pTepxlOAUA>I z7v|Rzw_KX+G6G@h2b>B}h>+{S_}=bOon0`b&yXu>zt(FcR?O$&=D#4LQ{F zn&-mR&M`HON%uG~*TA0wx&=re$o9@g#=|3eig16$&y?}8+2Pd|RN`dBHNZkF92f5_=#AfP&XN75Jk9pACF1x4l#{;MJ z87O~qMGq%?b6|DKph<8xWRNBJLKc7psO7RK=2h&itK{*@g-RC1s{L-W)fEzEvurkP z4tNJj7M?QHM|bzNv8fPvL|pqU?3oACqgZFG75W7VH$6m;dMRJ5;WV+p#llZBQHp7| zv}?p%4oftVZlkD{GZMK5Jvg8jL`Qj&EqN|~``3Pfnl4tyC4LuI_v8ohS`W*k&G;8< zR~Eo;D4EHIMKQf684b;~S1jv#Y}OI~qXLC|W*AMsQgtvXW}s6V~AFJ)O<8Ea|T-MicVP$Z*qH zm7&2^u%Ejl(bAb&&KYHg!cNSN?YQ`4>fgMB=plB4+hagmlW%J)QIr=p3kR55hpY^P zvTO8T%l8zIHTZw``X}?5Mx8ba_?W1!m9ME#Oh5ee-r{D9)!`SG5+z#b_QgTLYHa^o zxa1dFi1mrzBqh9tt*{-vP1|wi@xm1kXJ}<>pv+gb4Pmv#EnmgBJLMn38r2Ub!002Z z!)z1pKMgZ0FWRHVa3N8}|MQ%0DkxdlzPDerxycGXeDvsPXSN(|vU9HoM8;O|!^?#G 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%0Apf~SKoBt?X5Jip zg*!V$O5CCI0(Cl>jC)UYuZaOV6^_P#dr}|ouq5pk^>GN}vf=j|K^NKguS~2|Un0wn z^p;8jb}MsJMZY<4R`?f*om>KfP9ZnGDN1Y%MIuco@?0^cneWh*s`On!u|(sSeoI)E z<%;KI+du$tMv_`=J3PQ9#HKn1d^JFb-;^DkMz_fGL;cmheGMi+2%iOd^ex=)Ag;-t z?3ckB!7L}Zq{he{9#zF^L}iL1qym>f1y%+XUqm$&Z zcT#Bki^2*!*=W66w#KcMcf{sa`-;Rr#fO+YG$%9EeastjERj?lOG(0q1ioYL6sDN* z8RIfmuP*`jyt~E^JAaBne*+gR#B+J&8SmL$!yDp8Z`v2Vrr(r-@Ca;4ALtMj9*%p6 z#2|3>vS1^&d?#*X`xi!Q)eyWxycPX1#Z4Gw6UwHnc)%j)GK~i(Hg9?Cm(7p!CYKF$ zuuw*ddTFNj)GZRSk4Hih;*tI57N?UX$oXj>(ocfp?qrzPfmQo;o{! z!FJ58I${Q1X<)haDBd^~&lQ3-qVVb?RX5l@?((VrU)@C19I=3K0kY)E+f+lB{_VFdwS5w1kY5L>X#S(2Lx>bse_KQ~ z>m69?d=Y-isiYQn9XIX@!A#R(S*pq^`Kr?X(v-Ikg#_>|HM$cE<#g$=$~k=6;b%6A z*L#YwJH~^Dy79PDj0wv^j6UC?VwnSEntJ>Fw>P!vhDxfzvEOQB*zNs;eWURssn-X#QkrgTH|;bcMVUNj0y2z6y*J77;<;mt_hZ)miL@~ z!FG>48u{mNbKnP1V?qy~`7W{Y>>5_g`PR?Nf>p>^O~rEk;TqK}UD(1w!LKc0HaikB zX~Xw=xc||MF{N|1d(fCjHVtfa434~}I8@=519Hn^j;U0m;54aU=Pydw?;J1Stpecf z@)sMSi??CM7}uQHPLxv>&J1B=3$a9zDqJsZ4NGP!##2l_kTn}AN8%)yu{v+y#s^Tp zudhwWQ2u6-l8&rDaTg%g)R(HLR94@7&C6^EMH7&;fUF54kB2h7u_OJFfL+4}okZ89 z<8W}yR8btnHoiux5ssQ-fk0aEw}XEUs6)&V-zCE8@rqR!zz0#Lnu%(ORCn8UJSX%6 z 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 Bu;%~( literal 0 HcmV?d00001 diff --git a/assets/vscode_git_commit.BYQAFQn8.png b/assets/vscode_git_commit.BYQAFQn8.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5e19ae67411721cc41968db20890659f8abdb4 GIT binary patch literal 311886 zcmb5W2UJt*)-D{n2#Sg{X$lAm(v{w*lOP?WOAQc& zKxiS-0wE;13*CEv=X~Qo|2=n%j3Ah?);rtt&iTC0O4K85)ib9rod$tGXVlg1JpqAe zLO~$PucxSizg!YCz=A-RLF)HzKlLTsY{idpbY|plOvlVgO6FF}8w}a?s-2=WYgi+{ zz`RIg>s=HHiw7B9<_)tx=i|Y+z;K0*xleGDU%X)PVxb_e#0cah$8jdbe`SINi0mC`Ws>8+bkf~#AaY-|ONn5QUk+#g zD+59SACaenJ^nG^-DL`aT;C5j%$lAKDw6^m7hcl&o~QV?Yn>9yU$Wtp-Z;$Y_2eJ> zCm8D|H>VT`+#nZNF64dv$AMw%Z0VAAvDpDzjqY7+c0Dht=#Z}%wd0MdZMS)-|IMs( z7AoESa?a*;jz%|QC$?`+ULOY+pVPHG{a5(LB|v?Kzxivmq8$
    Gyb=}At`#`D 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
    %`8B{{eM6 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௠{mi>rnK`wGaF-Uke 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 z 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�H>_VP7H)8UL{ISRcp(eZ!aCY3*es5fL(& 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 literal 0 HcmV?d00001 diff --git a/assets/vscode_git_push1.BlFN6oO1.png b/assets/vscode_git_push1.BlFN6oO1.png new file mode 100644 index 0000000000000000000000000000000000000000..e14596e2b1bdc801a67009ab30038a5f25dc5e20 GIT binary patch literal 326961 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

    j^{+ve}rp(&U9g*Q(cB^ZaU+ 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

    9!U25bc}SVAw)Tsf-neYis0PPp|$+_Emg6|9q( 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%0D71SA5H&J{*2%{OFsn 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 literal 0 HcmV?d00001 diff --git a/assets/vscode_git_fetch1.DRikG15J.png b/assets/vscode_git_fetch1.DRikG15J.png new file mode 100644 index 0000000000000000000000000000000000000000..80018ddcb696d0f80de8e8520b052b59e80d5327 GIT binary patch literal 321842 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%0DW^P(AyHnUKc0!E&tLzhhiIG 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 a6s7^fe0yBmei{w+&{We=ExTv+^8WyJI$3Z4 literal 0 HcmV?d00001 diff --git a/assets/vscode_git_fetch2.DAVY-Tc0.png b/assets/vscode_git_fetch2.DAVY-Tc0.png new file mode 100644 index 0000000000000000000000000000000000000000..55c468872267a88e76441e4a0e7fdbd267fd0ccc GIT binary patch literal 14648 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 literal 0 HcmV?d00001 diff --git a/assets/vscode_git_graph1.B-QqvDRT.png b/assets/vscode_git_graph1.B-QqvDRT.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4c41a6a2f209bc14fe5f3e1caa60a7103bd926 GIT binary patch literal 129212 zcmbTe2T+sQ7d9S>h>9Wt0@9Q!T|j!Zfl^hZNeNO#s`QowEC@=GE;TAmy3%U^DWN01 z7lF`1C=eego*USs@1It>DW&fdFw`ymK) zG7to!{7Ov)d~@lV;VuYt8FcUVjYmFYYjvUBIkWX?2Ic=pRd zJg?4^hX#G*dvS{V#x+&0^RHe}o8A)TF=eZwrh372je?x6E->(t+%2{17L_M4cx0+) zF9&i;X`ORDP03#|MX3Z`t*$bI%UP`;6jV&F7Ooern@k-}y01R+9x~a8>?J<(^iKsviKif)vw4X zT@yTbj`|v59{|UcNwezQL?N3J~e2o9utnY#>Mtgqvae+X_l;4Qpd1Hto^8ZtGP`9rz`9?@gM2 z>93(Fa9RuvDVbKmS;?zpHT`7_kJA*?vm6JF6?(H7X{L97sr@pHN=FXGAh(p_ZoSf< zS!~fro+#xIuLW05ea-wYH3z;Ss{;=c7i~J@Pwe&isdVqf9@J-_*RwqRYbSWXqG}-b zfxkXq`@v1ql_;s+qp+cvDC5GRvhE9=y!8qf3Hp0Cz?&iF`*itx1AgG{$U!{muC`(* z|1Wzjbb`n$)uEfH=JvhjD{0O2f8gZf0P~Ni(*&!bh6WIp34i8aYCJ3P@sCH{wLs8& zjeFl*JyUYL)(?|Ep@8K23ks^V*FFv?i)XKp0!~{fSzY}w z(GgL=-<(`hWd)kf@ynU{(q5byMhC=L%9;ZGU^1nv;-B3jPa< zo8s48rWN~$j?jUcfd35y-LN;hH`HXkMWa@2D7~YgbSLsvKY=c{=7Ga zsV&MDMyP*3K2I(ZUp>(VzPN6g%twO03Gl-;J8UbfOIu&MdY))eJ<0FA4$dK-H?IE8 zIreDy(ZSNReCCjpQ%#3OcgdKanfH_@b^uPgo*-}Eg$s$B%4&JX)Hz<}K>yCUVqgUw zqa%OMpvatE6Ro+#VK>bU9Q9LQXxQ@oaZRtF*)xAAhR7^?bbyPx+NJ`?_+8w!>8wm! z1!6}8zbI2L;63e|9k3_~KNT+qS<%Ec)9X?a%UxzfC2hN|noiLv)$#i+yA#-`EE;TP z(>V{nEJLJc;ME&MdWZ%b*dIf95XH%Jj~J5#q56WuxfLBvoTSY+pYcN)CJy!S*{E~p z&Pk^xEJl@`EnCfW8j!Z7%N!biZ}1aWGkRc$+|uc7*I^JmlNmF)w<98>+(`T6-`hmk@f z0+JJ^7+*ME6#^2)Mm7(gl{@?E6tb`^Cv=~Tpgg+ay^lD{64?&L8DVS%afp>XYuv8M zLc9|zYE4?xg7TV5h)y%@=h#!;_B8p%C49_3^RN};%jQ$r_GtmwdsWMy-@R`LvwZUh z@~^T1LQBK4=ZMe6>(TvU+h=G>Q;wzXP5yk^Lh`eZqhnVmfC_a{^p~fM4eL*5{Knsa z7UvdTi{K*1nj`lc|L}oYvJ{MX|AjsgiEBT1?$rw@+2hs5yflft*T|Xa68Ppu&#}@s zHUME!aAv<%MnY+R4>(Qd`d3ST&_5V4O7vC{%j|#Pdmz}<9f#eI)O_goI#XVf@1(sS=q1z0tnrhD9FSYRra-&MZCR*|aHk^YS;k0b07sv45p}Q>D4}75kxn zC8_^G9dU0X!GEJp#(ipceM%@&5gU>MC9EVy+MhakYRkx)jBOaRoNibyV;jm`HcOa@ zkf`)3O<1vbu<&c)|Q_1U+ zlEfZj;v1-EFH(n`BYi67wG8vwoQJ4U#fzE=Mk?)oSiU-&FT9F-u_LE$m+EP-XjQyu zW>_6@A(DEwnjpp+CHTUoqz}hYMU@12e%&;-u9Tf&6PJ5AkKV>}9_=HGpELz)nbVSmfqE!Ub5f3pU2A@8 zbc`d_ykm^-amH^wyeDrnzI2^$oHvNBp$!q=b`83ZLLO1E_{;{Kw6?as?IFJ`?6~UD zN2_x1wJTXhOphSMsdNbEi+r>me?bNb%I83=lz?CeClIV$fv$H z#yhrpXHsj=RqgnY*01;?9z}NzNP~AO*~*~Q)T>`Gt{oA`%fd}0vMc5l8p(4zC2)wT zy(WfPJ7Fc%Pu}+g(bFW;*(>#u(7Z1TcH92q^j*Cbu;mTm<6uEOYXIBhJ}TXac6@V| zd0FHboWvRvN>`30S#oAz$G_rDP=uw$0OZqwNS)^+^8hcc)=S3g6VWcocA_y-OocI? zXN6e{C;2KS-QG>Q&D$DFNfOUGDapK`o*h@2-lE_ae-X4R{?&a+$Ct2@jnab?9%+B_ z@4Lg)9;2%);HMR@eA?!d$WdV|l9OGKleMG!q1L|bmuS_!>ZC;HU9MLumI=*39~VDxeiS+}Sgb8-Y+7}%6L*G&ywV%`YT=|E zp_-ogM@|YSWcvYrd<4Pw?xKhWV-0Spmx*2EAlxP3mO;VexFpeM?v}3#n{KT_)h|=6 z2;VT~xR=D|RR^%{o{ujkujWZ)`B27{!wg2Qi01^zmSxD_N5X^&|Er3IvYDMYF zYXBVGqq|dQnV81!%RLD>@$EQQ4I;nxquyBUTpp#epzelgVo{sZ9;7iAU%Z~1yby2V z9F3M1ju8+MK-RcFT2SJyii-~p%9YRG~ zYu*EBqN;MM+FmP~was{gRJ<)5Ij*g}r11kwt#2|)g?yY2Yw`>JE~$~wh8!HYXJ=jH z&7Kt=X)BFi9%roCMPR=TZ}&Zz>W>i8e9Zl=1o_3(`MTSPq)2&8#mdB*&EVVDQ(orD z`^CX0{@gPeg0p;Cfnnxw#RS+CmpE{qd#oy`Eg)2zhV=yfEhP${`PT46DD54Pd(8V& zv0P?rUo>~$v47(-0KAD=r>f!IS-Il!vsgnGRnQWSf>R~-f;#Z%Afdv_n`uBeoUK9# z2I^CyuYw_>n?MCcF5p;h=GM-exKOkk4n`QPnmX0j^+MUvxL1|h8U{z-B1W~@zpZ9S z>RmSZEG-(~6orm3(is+c`yj_!n*x*NK9exNboVh#L5cfyy7cIP!kZmw2|2baP8+nH zUFN}AMHkTO29@7sQyKvQxkh7WiM<5mpC#p1J|N>frOIT%vbWDK_HV_NH#Czlm}D`Vztpw^o;)JRv8 zc*1oUN}XBI6SlRlzsMZfc9y3wRc)YpWpWR7aEY;Dy1e`*2syzX`FaeQZv-#F+8sRsG?nda@iwJ;yzj2hwrL~G%1kXvBnbE z4!)iszsKxnldj)8c=-GZi!ySU{eelEWp%Lij^u(hqE<$x`Ih5FbuX`^>(xWs!R>f&js`^WRY?tH`RoZ{C`H5Al!#=JCbUyo1D< zkio#Z#d^AVw7j@9EK*pzqhE`BG|WJB%&o-KHisvXa&xNJWI&dv#!pn^eq-|pD~9AY zur1cU0p`u{Y-P@5x6{3q$`zPypNc_j?c54BDh-w?WNl`ovas;mjErBeli4`4ZALfN zvax)8l)i(=Wr=p0O5E0-&EMYI!JCJpDg~{j>J^nIw4w5^OT<*BB7owWet4wOu@icM z{#Y%*-(5Rz^^u!rv$+i%P7g%%r}&_YRD987sU7(BnvHlDC@#6tqqm??^YW8|rA32R zc5OEb4xbzf-Yn1XT^Z~P3Mf_2<+HIjAj`LDMt_nRWh~XN48Q%Q=f$UYW<}WNHuy_x zG8cyA*6}q{(v=(YzIS>tWoqNWsO*-uu!S--OSxo+kUq#^jD^r>A0u;7O8vfJs1&k% znNvE%H?QdR!VE_%Gg;SO|LERBXvMC^S<7Z$a*A$Az|C+p0huSnc4H5*r-Wbku4h$5 z8=*?-mc58$2=Kui(@TMm-k5Pl&At8kNMyghLj4EwBwAbL55KDJj|$B9PaUk?81vHE zP5%B&=3doCvc#>PX^+%W_k|*R3i3)N6%h88(DUFR9tuL(OwD?=<~eqGp5q#d?w-EQ zXKuB;EbZ1yq>xj`XeosQ0pLcx{}y|_0%Cq3a+{mx_Hlj%n`Y1lp+`TRf`176ItX1@qXQ)jz*}!yT&IteB0h+BazWs;9H*+wR{VNX z(UT$v)U*NF_PySh=Co1(r;s>bFDJ6ZS5mqc)MUvOb82XbrzqaLeReuHz$AAkQ*iN+Ma+}8}-Q15L{ZRm5{hWQiVvh;S$ z%jc+c6foC;!XHtxfJ=QX3q+|udroaY_4eN`f~xvantP8NwMEA1U#{dh;|9?zGzU(D z(GY1BgC(Ms)D}B!wVZUV6|Gpmv> zU0;34X~w^yqfWC zRZD5CT2HbEM!%h>_+`OA?HD5Yaj(;FCV#ItHQ-2h3Qzj0vsBjt0&?=MZlQmf@=t^Q zAAbJb#8i>-L#xOv|JAqpzc*MLkbf)!bN@d)@lUP&`=`gLW5lf7g-_YB9_{>Zoy=bw z`F~!62>~lyZ_RP>XKvwwFPoP zXb|zK-_eR%>DVwH{1kpuD(mGipl8nB1lkjv@)enrw4Ecwxj&n;q}^*q+@*092}E*j z-8Gw~`wgleje+Wm+TvA3lWGY+Bhvjza8QpWaD)!lOJShdldC<|t(%GW4@h$6%q z9DV8-i$Djml(LtS9f6X+At=ZTNPfK*IKc#2{J1Cf!MXfKRdMDYXi};DfKkW|&D)25niPTB10Y%w{pl}=mc*~cK2?#-ren-sqqILBDOfBg@c)IbU}3>cnF*tLm7*Jvq~8_a1k`BoZ`2Ub*?aQM&R^H2?W?`4RA(h=X}e zPJZ|7w5~x`uO}bHskW>$BF<$<<*n5}&_T!0fKGV*qo9 z4$RmeD?R+WG|<`k=MV#JgfuwM&eBBiowd zgiHgKWzTwg-piirX3x9pH0(@Go|*ZNf>WRiDS|p+SMwiC^zFdD_ml6EuCkJT$0XMF z*a@mVl%rXIL`Q*LOe;MHH}W=o^%rDM#j8*6Q7;+1Nim_Goo38Q73{+YRm&(FR>Gcw zRor#T#D-n9^WSwHKUi1-K6qC7chs)}-gS-oG-CVtg(3e7Q5?236ep*>FJEYY$*=1c z&%1bC4oY>%57mzv_M6&xM0dB&U(ejV==+jRRN<$o`%FCoJvq*^AEdAMijTZlw4#2~ zeEv5mf~ej$9qWZYU`6O$is{wmcRE(8*$^nIuIToKecFxvmjSC3@SEfcBV(U;^33<> za_R&gDwNGs8UDn5dpgpmQ$)MOu=FTfQtJ@+#-||7_d*t@{?BEL{sZh1h1K z&=NhreJfkS6|1fj53VILMNyKb6kzEUXL7jS`|V{_E}FmYZR0Y# zRr5(SMK48fszKc8X_{5xiEiZibD{qpH!%RE@K*{b_Lm{L0$UeJoXpFyB2 zfE9LXpdykgiu9+}OkLjf*ZWPWXY6L(#SB81fEAFRO;u_#IsRDTy9DNGgblDl3oR*x z^Ixu);ob2HJirRVs#O+0IDr*bX$#|F{>b_}7xqWtoG}6rz4r}0QWeyPc_W89j6s7n zGA&Yjf&tPOe~yo7d(NiJrL6L$*=x=#x{Ewj^m0{S`yD(MAAJBH#?I21fS9|{@%p9m z$|I^m!bILeB=S%^x}lfUQbKL9lw|S>F@#p;DwDbMEPGc0c)IBS&!<~c?bgA-Jb@@# zI><~rW~H?n?OCsP=km_FHURt6@OM)_B57^X&vl;bX!F2g&Dcnl7a6j}WW|=x{N{hi znE#w-FtebpHN4KmpE)BQhPR1h4fx0*ZETEQWzV~cL2giZ=G?Yxy{*$R2`YR3XNDWPU zInJ)s^uuOmP!lLG7q)1o=YH=s%!JE&=X+^~)W=bF!^Ql{W}WN$SuU}9Z}bmxXX{L} z2x^4Ywpm@}t9k0+INeDF;lly{jmOG#BRRvda=PaGq(f}7iv;(blBK~2c7+9CT5&v^ z%3|tP$2n-jE0zMxyoopDd^XP+BOzMqdsfOcqOlHY=QB&dGuNW>MCu2xML+5?e20$^#6A+R9Bm(z(M-go5z>BW(9mUHd*pY;WC`*vz2~ z&>(F_r~qCvZV$l~L*Vmlj;~H*B6ck1^*sScw5K%Jgb97M(>-Ca}g#nZ3ngh7q;s@}w ziWq9V`mwopXTNk z>gPElKj^%hX?!VBZ1bsJtV=w{vP4*UO8L}uWSdkr-im2RL2srYM&SZpUua}tHy#%R z>hU;NQOkKy`#@$6sO$bL_l~m{4BadL;d)I5~Flm5npKPdT- z?8_Lv?Lbiag)ZYlT>Qz-2P}1im<3lOf8kUY=76$Kn017vI_l}8EP)yxtD33eroDE* z$4zT`*j#y<`pG?goKyg%XVKt;`Poi|O4-={@$;?M9B24gAR=jC;d0apS%9Y|T>i2Z z=ZSCFoo_1Z-Po3`mJoDA{n(Y`FdapyyosO~D+*myv`97S8s`o)ks+@fBCoV1MQv)u z6x&a*GJPD#l1j6?Te&uRw9%ce|oz82j)u zd0J61

    NpZi_GT*5rH6w_J7leGfJrfw=y2EHj2?^u~i(%(%TECU#< zU+;a^^*(Ykl}W6^C*#Slkl%3{O%DR~si!u6mqBOImdrY9F=F)zHkIE}k(7J zEzmfLHlS7)7Cj0KhaI5<*tn0r8LhxdgF_u>)#p8#&Rjdr)o~)pr_=!{N zy;Q~YNUV52Nd(=UOg7d`&7GoRMHMTs^SkNXt5L>(h-46r4aP+o-4EfXa*WHosvlS^%R zicwTy+=d2t=SmFo-(rA)ZBPztfIEtwXhy30S$e#tmIsFJBJ3o{##!Okk%q%jCat^V zJfyLhU_2SSFQviRtJaLYOa z+-Z_V%)p22LQAq)mRHDF!w8kb4P?l6;>>zBzs!3v6c>!&o9sA={Ir1A`La4ff&zpp z@71ndT4#(?mx#saLIWQ(j%)V70Us*rbnOM=NU|^={JZKJSynYHzAr zVCx})2oCLJThFL+5H;qvSuFREJ|pA(-FJVZ9;=m$fw{GqA771`*Jx}f%E5!l$RN)E zH-@CNJWpx&po)O#4FZYIb-xo&)MM&SA-{JU_=O%7`hl8Nmck@a*Iw(0I2 zvL-qjJ&_QGwoavL%m&g}jsA7~IvVqfBSxd^^(Q)zUPcqgU9O04r3wI8V(@<~-qcoH zkN2jdM-3+uksacyxlQz|Mby9mt!05Urr$fSS#4l#l#6+v#2JefE0Y$2q*W+NT)vhf?nI#d#!CkFA=066QC<->CLs=2!A|&G^rDx}19n65m()D(! z)jGD0%GeNd8e_`qeH<5|CcXa`tl(RajdUJe&;1+S5q)1p7KtlrzQh;D=Mll{gRik2+H# zRBuu<23RwYbNw21qJO(1hG@AVJC>~5O!{KvGh}J#v7OpFVH(KM+RKA^oz5B`BP>KI zC>$O){OPgI4Y;mHAORTGonkncUfW}dtwR#h-eAHTcOJccXy)=;SWC51gq=j;wfEtu zQ2C1_1qaNm1yogvCq67Qfnk4`Khw|#@}J_JFbsMpi1 z?6pH%eL^%rco|RNfASmbLrJpH*t0Yxz|z3Ne?tF1%n5qUK>)j=H*xRhKKi~QIyjfx z_yEW+$nR7-bziZzKfaygW9W)I zjt1ogY;bU7I(BU?l?u>zrN`Tly2xTBQoAL!J#6>?A-VDQ$XPMTF(zg7guUMX?>p1T z9cUjN-0iQhpUxiyvJTJA-}~P#MF?k7HuO1+a{)23kNt}22kK3Usd!*P%hq0P{|!y3 zl?|P7j<=93qN-0;KF04`HRnNl$el`OOtDJf^f?bU>8)h zV~vDqQe`U>13-OKoMM9WnsrXhgE#qC0ao{RuZ1G&lX6LKbDS_fM1d4no^T(wGVE7? zenr~r^)$AjOq>+uX6UfNK__+gkT zM-h^_0`IN$JV{O0As(3_N^t`Impb-4US*9+2faQ2ti1Lh0uGvTh^A;~Q7dJVE(;q% z#$&|q2rO$gX!j(Z8{N9z^v)o}#oH7}v1n!Y>?~?1jzQ%@!2V)OEWDKc9ehq@5!KM1 zkHspTaS2OoyWo#7_U-^K)wy9ECnTsaJ~f)CKvs!Uj(a^s!XW9O2;MpJAY=6wAq=j6 zHZaJ69l<3hk!K-*E>n2DnF(H8jetpwd{$9egO^l+2$U0FLs8^BQe9LvclR{UV=@>}FeSNY>> z@Qor@C?0gaxpnP@OlrUql|pnvgRR;WvNXD@z!^5*5*?r}m28~Ae>)|H$j(%#?{gNX zEe^JK;k#(DCNsboZ|(n(A2dzuDDPY#?j^EKiX_>Ua48dxpUgod#WX?XKL zb^C`32xg2jM)FFeKy=|)4B;*89)77ng!MK&n`qPg%Z9P{7{$bkHArUA&i`d5?SBsf z)>+rr@lp$EJ) z)p4U{9k!5?V-Ce&S=^gQw#SELY{PTIw@~B?fe7D!>3}zE{|nP$TXsMq29T7CI0O7q zVG`XuJdq`Fu*j`^Ir;v-huCO~7&G)ar$mm$FWxVG%@2oUjWUp*;8fQ0uT10KM@Sx= zkaFW<<9vxLZ86jXfXGgh=U*M72G~HN%m9L$$G&fP;WT37bucNl^C#Y}$F+!a!gVG& z{s5a}tz`0M3Aj;kvd+t>ct3sJ2vQwu2C|QiLAbgqPiqC(5XyH0Sy-5xZvSg&uqYc1 z5Inffh7vr}Ve$Fp4ehd}fKWLfgeVMk4J;A|LkYQBk4b z2=IURlegCU$o`StCef^O$8kQ6#P=eCs2wmS5j`M;Vp?^p zmO*pyQdfx&oNoAAmRLKUyQz-($PBTz2Q4@}ycEdIK*rnM8TI#{(~LI^%OzecK}y4w zsggu~2el7CUQNzgXK5Xrf@t;u(##&gjXDdg)=0LdCjv(2MG=yjhJ`PMP0O#9wwWR_T) zEb07oz$YC1mPr~g-TCAKc$HY=nc&vOQQQN3XDT_RPN>zA=3H$+SDozZY085s&KPWB zUZVksp7zL4*#?`gEO=|)DZOtU(@oj!ZHGIDKbh<}WVAtFh}t@842l@am15W2vZ30w z-%}!35NtPkox}yJs~o=rJ93u{5PXM)$>M*HvC$BrtvB%$8HrRaOG5C&1a^&~kZ*a_ z9a@KfuuJlp3l5K8)F9cEDli>`4_dmApsOTvgY0#>%0c8pTRI&25i;Qm*p9)U4$E&HWOGH4ltyu-7PcKN_&m;}tw?~~hg=ydfz`U5M&Y23Ca*xSZF zE-GTXoZ+_?ptpJwuistgErZ@*wDQr3D@YbUi^2QwfJ&eMPbD|C^}k(<@QKM^-^Ur( zgADY=WvFX9{Gwr~2#`m>7gMqS7$2BqqZQ(&c(Dp83-1w6UaV&`R;2zNDi_+$OmB(X z@t-qeEimYvLoSFFi;)&Owp@l!da=t;TD{U;mU?A-jZ3?x5EId!Ih>V7xE+O_d#HzP zpnX1&-6f{17c3{rdOP95(LVaP@gg7c+zYU8_^kYKy)?4o?(rrhKaz3=+Txyj zm|qCbAL|S(*fs7UoN!n(JJiH|u$Y(a1In()&<@94q1})_DQTSuAm~`{B$`v-=L~K- zc%P0c&FCS?2Y=CrV~@X;-PnczTMY}Px3kFNiu^ZQ;C*A`5U~27&?|lGq~*?tj@Kbq z;>g*^G=VI19WDPO0L~^b!PKJbjRFRi)nmi;BPlneXd8*VZ{?D6#4#B6Y=zrAgLZ$=6_W#dbrvHJc$xYIW8c z%Mh@^svr|$$?wq0h7)OL)XUpw4tNmQ;a&I1vTaxBu>1JO6mVwZ*V0%x% z#|be`QTkOX69US<3l}fVbmRjDCi3&D?c2U*9#wgd2xGprujt3xt`hfnyW^DbA<#b1SF}6az18P#}zUqqnP1L%pb#WjUZ~Fjr1n+ zky!<&!pvwJe>XPJf4rU!s;(oQvat}5DJGwPFBtev%I*%twv#shIm7e@WA{Yd%T`eb z#!mN~7v|jy-LsDt^M?z@0Wqc);LiMzd?ytUa-0n4xRiOlv(6T)66wSnz2}7F!ASokMS~cOiKIAw7IwdrX<&&D#rpT2zl0&E~~`y3hB+u1GTA_jz2q&@~pOvh7^KF|#ug5t?(o5tP;{ ztvEpiXAadFAku`CfNs@*&hxquhX_P3W_bHd5q%B&GDOGs(Gd_))ji32nh1D$_Im|= zO3DK~A_FIKgHG_-hy2=G(0D-U`<~JCxzm89D7Vd@V=I^>^M^-&Y=Gb-wrdH|0vEEI z^b)sd^GR1_C(W+V2)p-nSB8r&VJ3c1ASx3;f%d`FKw4=4-`#g*6p--T=~Ww zpL@-JwF?op%>P4sp{)V1EZrJ$Xufd?a{!RW%nnR_GR_s^@g7JCcvN<=5-|DjUkrYk zwG-6MKsFz%Bw_JO)@C&R^i?w>)pVzhu^oV5P!;f74p1(yxK@lAtWw7L0s^W2oA!&R zYrc8P9np^1$_Rhg=?}+40ex)~qu43kcqv|-HL_^~Jj0!GmmzJPQhT)1A?3ms(sl7v z%eI-Ncd}vU>yl;x!CKwpjMT)2u$g>zj}AQ@A|Mc47V;+2Q)=v&?U?T}Wnkd`O_{B~ETw-Ax|rN_*tqsIyHOrHCT^uoI)>(SYun3A zO9(6KKmc-0_!xIxJ0Xr%3os7&Rm&#MPFYk;#BP)xQ)tk@v&)vr0Un+%_W5QrZWDiz zxv3286s0eg5AsGrR9z~P4{I;DozOuEhA$Ui)h`ofq8E)bMM5;AbQPRhW^boGO!PT?Dq3qphcve27{^>BNXW-)DgC2N{ewm)u*CMuSb~A~hd;J?9W>RX z>kD|fPZZv>Z+rm=+%2@OS9~@#sH02(|322X%OO+iU{~6i6Wnqug)4o1(_rPWp^!sg z+NuvfJIJ}e7gP4@mRE9yoP(meQq)_N4pHy()LJy(+4v8!9UW#l^4uKPvGr#THAM^R z+YF)Myngv&r$c{jLg0XUkE(d$#Qnv&@3$MUEZg@F=NxMv23-b{4D94Hx&Zxa;$yRn zdP>h^z`TP>**smY|5&sjmV^{PimXYFOZ7)+fsb59{;#LD`HDc!pR~sE7 zpfF7UyuBiTp|3XC^=H?7I0QogxGh!Hdd0OV=<1q<8rjM+p911=mKhs@FJ=HR5+)e} z{^$NpEIBf)bHIe{RjYf!aD|&@ovb27qW9m=vpFc}@@!?1A#V4jtfwV=Anww13_)na zvFM#e0A{5O2kdhm?BN7GFCj#X47QQGrYGZ$DeFI@MQ%IdfZ6Ic;g!CF$8) z*~Pb%UJ(XoW4VynjGDRs#Z;m`m5JEwb1Ve2%74kM4wof<>tw zEC9A`Xos0;2;&Xx=S`jBF+RZbk$JQ{*q^xIdYuSxS;O26I^$d70~xrXAPv#l|b; zlaac#flM(u`D|`+e`49nQXlKHFSZcJ@W^Y+()jS%^bP9&C^oyz{Me( z9yQ}i?ZvNLlBLWc3mrY4u4S)o4QSu^Iu^bX9If^<6AA-Gw)=9Z&kHJEZGE&hnc%9| zYXcP?9>Lje{rUJeG8|luYPo^FUCB%rG}E?^6$m4u0pA;p2i50oR*JTVFa8p`*o#%| zi!pmYWpj^LJY;2|r{QN-u9i!;?)JckrX1c)hxuP1Z^nJZS zoD9h0w>Fnej>#SK-`Wa5*yj}!f0SG2zMsP`jRHDJYi_xq2)nS-_@f3B@lXVQ?_T#- zc%RRxb_iOU*_#S4VU}ilv?I3%xdIZr=c-L70UNlaEN-B(Bxh&u2a(&gfJHRvFd&yq zJq|uP@hC=m%Eb$>ZQjGhBIJ$Y)SBxJ{6>q?3y^V8ND{jkZx{3<&@=?#kS}09bq01I zeBtLiAHbpL`(Cn?a~SZ{0-T!9tlAzyzsRwb!O?83XDROW4#34iC&A>a!9%ntc90vg z1erq}YzQ&q)Z_`tF(``gy2*a&{6f16ENLM-ZU--akv`A*Yygk1x+w zYD00VeAwdL;wSC8;G0VBNsC7++3iXhN$Eri0jIf2K@+N?Z1G zvcSAz+Md6l1>%(0(->Q@YxpcXY|!-1Dc&{?jTfuiFans68;S=~lZ5?S?{#~3bk#Qy z{BtpswYd>y_A*IQdGpFR7HRRFwo3ZtL$RqvZVnSYdwX?7nTD)OLp*=&LEFB*h4_l8 z^r&qX(a-0rnx6_IlsmoO2>CVYScNZ5+dq>+T_1v?o|cN47f_UOW?s|GpIIUrY$*FR z-qF?VHIiUr0i4q=P8N|9W0U*`VlJm${C2(Ch&#Q@H5YgW;Fh=O5B_!2Uc;pb)FafZ zk0k>#+>Qq+r?cl51QpFc_S44rKYPm5?R|~35vN$=n$l*i8lrx$cGeQm0?}E>#~8z3 zrr=zgSyr$;B-S`&1(-;V#|4PX(86ve_r(`$K+$SA;k7d371+_yJ#$I=M^)ZVLTzQ8 za)%?>sx;Vu-CLlY5m)_#1lc!3OJNd^AQIZbF8>a&c*@IqmxC>o8QY#CL9zTRP61fy z!q(kj@pH4A{}|7y`Wdit{sWk`6$b$Cs$NFYr(E9s5QA^5uqZSCb`2L1 zeJ&>a(s3qhw4^EX>?}?Sr;+k71TnO{y}=@gYG9}x(B3!TPKPzO$!iH&N=@-(-{DEU zTvL?y_ggB?5gV27DjdoYVbXt-py1M(aU&pVc^ zoI>j_cEKar&);v2wcSwN!W@1eROh_Pq|-%BnLg2_7)i4|%+PYcUc&oe4D94%4`4Uj z++mvacJxGKC_Zebkq70zz#7JF*iBvw7?~ZC}DGmu9lupME_pc|N3HA?v7653A8%Ih8L7aP&&mi;9^$c2jvD^9YCOllkO@U;|?8T=a;aGm2ifUam zmoS_41KWZ@uy{LDf{<)%@4u-P1Wx^dl#|9f#DI#)lr}eZQa*a& zLb$u)q|@9YzCH|XZ&w{}yT#n{)D?)&b#=df7(@^s1kymJ;G}Pz66LM9*0C1$c?cl@ z5qg;2WMa$blz_9A(Yi%nuWs`JoTmNrL%Cj=W4-UEM-O;IB%9Fkbi%?`>05F8=cWdN z@~fn^9D@$qvBsjR$|Pf4b~O#p8>LovAf#vsR*A1M(qC`y|8~s-^dh^T(?LhYPLfd~ zZCtkFgY4k&To4;VYx&ph0RXWzfP{4ElH@1|%sc>cs{&h6IQ9B+;_UK++gjFvKf<6D zg++T#r*7t!vcS`er;48IpA?ORD1Glq4)kcA%B**SZV&ys4F#2=v(6!=l|ozg0hA4l zW){#0Psp#$2ivOKPsRzm{^?hqQOGP#J+gLF<$ALB1vmzibh+ethn)95vXPc%YfM<3 zReZE0>s?{6V_Rj`W&1tBA6U?j9l zREsaJ9z}SC4%tXuVRcHaTg&zt{C+p4qD?L4`es`9vg5_K%fK?x|wmJGkea0GH;J$-61@1oc5OvNqaQZECRZ09B0@4Z+|h-hp}aDb0phRx z&W32eXusF{C)o4JyCk1K!e{H(RL#BuBq$4ZQ#MXX^HRBGKDDo!$!D2WxprFFM-tfF+{`XVF>Y3VS_)7M2OK=iGh z1t?yVPu84g1ksp5pX+t-JE*qPM)6LXj`Ss^wRD*%TLd0=(&8ND3sO5bEB**=0y3MR zW$J(=>mV-4Kj+1lY5)pQ4&k`J{zZVulOQ-8;0m8RI9fJYU;T7LI_h3*DQ}eMiMCCr zs)Pfwc^zU9k$F5i3eh40H9}VtY8nWfR;;J~htO~=J%7Bn5}zGUzJ_F(eT*%j!W?!x z-?+Sy4vMR%+jIy)uN_h1aOd)x1m@r|tSvr7l_ZNVE7tXmflrMZ2Y`KnQBQi&|9ELd z1pX$A`LPB)L-#!M180oOfxT&<^50I;PGOwiysjm5Ri{6Cx5^1M9e7La#1d&6L zC*nlb#Kx-$@LIkiG17ZP9CNJYr- zH?)NJpc6Q-DK9JWS?jN>@Csey0tw}5w7<~YfT}Akxlj(BM73C0hW$Ms>TpdMqXk$YLb80P$XwQn{>e4*~d=4~$Ap2f^w7Gts3r==AtVA9Oi?<&~3KphR+Sf@720H)F9tMbaB|7~atwmj)HP z*_KC%sQh_2=2wi;YzWB@XIakrsgUYYA!G0N6^`j|K}R#S1~gO3XW}!OxQC6WB#8xj z;Vf>;cShnu0tlJC)yN+GiO&*MpH{zC|68y}WO@_4$o@gF^g{OlRU7l$wNoWt#aLZ< zdxvq}1>8I9m<}EW7bCkEau(Xtvq|XczYhJd{A?HdeJyArIRdH<9WHy9z}s@+UC&5F z|CI$~+r_8{#s0mmpxE=I()-E8XxLg-<-3IJO~_3%w|Po6GjKr~)SX;zCcr;$GJVnW z(Zi9XQ!~Ddf5HnXb63?`Zw&qSbbj)U*IKB={tmXkLWOb%sk6m;^6Zxds4VU2No5^s!Dj_et1_vWp<^;&zQ;DzI4=}8x!`#P`DdC2 zdx!mE|F+^3>J0)A?VMs#TZ;b~N81mN7b7EY-#xWB=lJ@v<8(7V*1{;xUdzhAjhrsK zRP|5zg3UzbO44G#3aKGHwKFW(XR?kY91wM}8p$HAdRmcT@Xrh`R%;WOuQV=DO1Has!LoI@h_MN33RS? zb^I!{qw!iC?FbWkc`5?qQW0k9qzW6mFmzu?BuxJ11cYN{&n$wDigG}-PZCfYy>Hipf!b-!^f$vV-K0DJFY!kS5R9^ zbs*XC*2naXEwu?GPIY8J=dlKIgSeFxsWxb<`@bZ&eG5>_19mBCSS`LxZYz1^zGwJp zwM4-P?W1}Abp^^DdyC09$6xQOnHHG{=Rc^PWtlatToNH$C3#_TiyOW zL>@52GwgeW;UPlxVSZI=*Qo^=QzfW2<%z;XbX*GkBjen*Z0U_+#!mw>FiOJ0jd5G# zC8=s$9o7icl2)(+3}vCvI@91q_k-#(oSTY5dPOPZQ)hq#i+?zhLEnxtMV}9mso;&0)E-l#?^QNb({4h z-tqe>U)3KE9dpY|M7r?CMl;=|=GiS`f%Z8^{#E~q-Odf>%5YNxE<_>(L-;b*ejP3y zzC^r?J&j4aYUud!A-QCzM5^VMvOd_JZkY^XI83k7;zl0&*T_zTk=d4AJOEEV2r8cS z%6_nS73xqg*^*NnBTq$Ce!U9P3!~Lzz`>?la<@!^GM((^4=sPjLyhkMaFtyAb(yxH zUIoC_ZK-Ru3g%c(Ud#QYH2hv=$8no;u_uGhs`SSlO~4&ZQa(9sjI`QAGV4kpz;%;U znagEkT(lZODpqM%0E}@$wg2=tcT!828Z!`P_>&qQqg_Sn#No?7J4Acmpk;o1nvREa z|Erc!F5R0T`>VF4W436RIwcF}M&J#n&B)bGzy(EiT!`O?+Ap>$#gzV0qmb8^$#FJU zYrYPl3xA9v5C4H6bXX>^I2mY6Qu<*%wnK(CVz84ASTNZa&6%qvluTw7W1K(KJBzl{ zbbKnFmONbS5@43>qo3De_oi>$1lQshfV=;vsSy!O8k3@_ln`Hd)jJ1Orq76SL$(7} z9hP}hhghVxu=3=>sDZiVz0&iemD*P4-&w1I>pHeCwo=rn;#!?AV~HM7p{MiRL~YAq zm8aC*K1vqy(sw6fdBC>~#2g|qo;Le_DIatISj4H?IQNTmJG?V0uwDDTTb5`*=f0Cd z(50{??2SKiP~f|qz{OPJKPuRN@|0qLkxB&I{F2+O6bdhkO>9DGjy=0rz|Nms@ac%U zuFF)W@L=z z13%E$Ybdmx&1j11Q4MWSlLDLPt2bRhxuUwb!yQ_v05#z78JJ-I=Aiy<(<6?MQlMx5 ztA6gG{b|ON!tmwRtL%T&W|(Ux{9eVk+K~(Gi=jt4{QXz%yfqzdj^`@wSLyucX!8CWHuob+ zx-Xu|Tb>u@{l|nVI;s&gIs<<`XGix5Kp){dQ(5Kkoakl;l?`)Oe?Ds742ru%wn(tt ziH~0rDK^Tfz{tub)|{{_w2yH-aO;)64sm6hgxtl8^dsFk^2c4LpMYbqlRZpV6i*6? z{2KhM)psROGR}MY1~GJ2R4T^n<@O?~C2rR{#P%nsxZ=QyCZ@9$S~@hPdY7CUWOClN z@9N$5MEGYv66KK1)ZepFS#xk(jvTIcPx(no)8!B#FSS(SxkO%bQ(zLRR~zA#+Z`&T85;bs7iNWC{e?*tcU z_HF60mgc);e&>9Z?s2bX;>Ec!6&l!r2p@tQ>MnL99j5tApPLuu2JM62o(Lf+2L z|J=t|nI#hGd2S-)C9}-vE=F*IK*`unaj%|i5SIh|L4 zMtPn=4*DLGl;@oH!Put}5$uTSn-dcoR`Ti=dsmjl^ zyk;o@{fKj_^5v1B2hyx_`Y(v5W}Y)UmE?skUvECcKB@;SQP#SlGfuF&p3W(f&O&y> zT%U<-&ZComnhdxb>7qrw8_6NtyOgee8O6gCa!_g0Clf|iaA&`leidNFe5I(S`c*`$#{VfmH-kc$ep}wum^i>DbMSO!N;*FYp=47YUs9d+?)65K(x0 zIO+m7e5rtnQr5db9I@red$1uw$!@q9-e!;`8DGdgchzn6vLSZgW><3^VirCog|YCl zh$j>Mg`GG-_;m(31fkjEM@mN<^opvpO?2f<)`Bp z&&He?>^=)l)c!fTcboSV@xu38r1_y))Na#1H*P3AqsFAthL6yN%t0&qG1*}Mv!Y)( zfhtE#R6wXX!tHuQhuC|D@u{AVDXs&jVQn~g7+qb3X*im9M}(pMd2OH-&gbD91GhzA z|0I5KtD^eCh^myOvHXF@F7<8aYC`k$7<}WB`zxzAZDA7$mHxT*5rlBam zqc%0XNb6we2nOlS6&Rl!=$!Y-=v*=Q2+$8J7tyr2x885MwVw@rki}=mI2LcJ4WA@7 z+^@rF$X}``p<1Fp`(EW|3@rxunDF{#h0YZjdz(F^BAxK+o}Bj+K|4WJSNQ1Gn(K9k zF(`ZXn6zLUiu%Yr5+ntF$;5%Cn?w;c7W>0eO}el>f8mO z0>dSs=t@?_2RnPAW%AO9$r6)8V6n9w^NKI-7h1mw)uu!6IO7$G2`erot8T`AXNeAK z4fqgUI*d#9Z`XT2Ql?cpnwT6m?|nYyA2Pm~x$j-rR~6a5p7rKZWiu;ZJMny_ikl4 ze5IMSf4WwM|J=Aj539rl+A%2{RAz@W3ljlQx4Fu`1$$!MKe$kGqa9_zs7lac5Yx=;yVi zxAr^(yOlKJ6Na>s6~7k(ge`6HT}BmYD+bvH7o^}xZj<(qg7#+~3~F6@nw%#uv<~8xBb0zON z6KBk|vHLOM&hnU%j~TcNQ|xywq(a_1&oysr7 z`rT={d@{}Zvc;%IImQHr!Yy$a(PtcZR-t`Jy!kaIFZeceWAqkl%o(EoE@H_ozpeL2 zh7lN3MsHu-MCtYC6(B5})|$LE-F_F|x(|xbtN;F@6aeSDD2ga$SXk9gpuJ>BOeMa@ z=E5(fQwMwuC`%pxShQV#*e!CX8dzMW*@MO1zb4c=+>TI#y4o!gRcsz7mL?k>T&9@6 zkn3f6AfyX!Vu5^>A-J~VSS9w*I$Ay1eCgBWuSb+FyHq>`c5>|05G~E{uZmaKc;aX5 z89ABl{uA3g^~BU=(#H$eI0IQ8TtZ&w!5_1YQzVwXS0h_d~xrta(HCr;0$C(3W|nqx>UzFT2mbA z|7qbt$LUWT4`rx7d%8ysK*PppGO-2$`TVWc|8 zHk1mu;odV!HxPB&ppgeRY*zI;)S-8=DQn0z1Fr5hv2mcdog#h#--PN4!Aj2<`g~(u z_<00_8e=`GH}L}5mx(!&o7eHdBI^p>OQrVWjU$?qFX+2s;Lr>E3M^ioT-0CS8$H#s zuRXUaW6*fq&{KDps9O!?O-D#kf-mM{M z9zTGMHxKwq@xvWHLg#lhrF1FE!PORM1cA*P`mhCUCx6MZVO#5|oJ9`F(rCY$zJy#G zbA9+;7pei;ZGgCoTCh8~73I-T&2v2@kjXcEcwOtVJa)*rE0ZE!K)apL_xOi=bw08gz7r#WMX5@a3W@h_d`iV4QR%^Stp#3>fhsi&kT}SKN+dr)u6#rV8*bnp^uYQYLW#U1W+2vKt7*s~&gVhSgOpo-0;f8xOBokI6p!96^mUGw zWxvJl5kpQy%09^-Vn%yr=I1yABTgl{Z(CfL0fzvklOJ8r9!jNHSG#+|^Cy-;(6b4K z9&xr1&))d{$QI$&hiKBhNHHGqFI`TDHhPu)+A&#sw@Gg{0x#607kR88$0Z(sB~e1Q&KcqDRqr9w}xOS|o-Gh0RfP*!s;9HrH~jUG&l|0f|)M$P4FGO3=B(eQ+|- zFB{~UqHVWgSF;k>3Vw->p}2GYLzRW?d)h*0`}vt;4q#TZ!dcpJ;RPC6q>Qa2iq$hO z{5Q-Uz7UTQKcaej6dw9_gv!QYzVVf|QZDb}Cr`e9U%3~dXYx&1$*JYKfj4p85nfoXX2HJBMK7jR1e-ba4*tlM%rCv zrOx6@tdcAfuL+7C{C5n7iT;W;XT&k+mkA1c3Q@O$kzj5Oa=*CHajM1k>pNM`jnlc| zS0?Ktb}X?zEq)ZcFX$Kt_xXNR(Ow2(fHk_>h1!$}NRr&9s~Hdw9p$+l{O%l^MB@&` zG1kTO$vDc+t1|mS)P?LbOFVlR{pq`#H(^g@;E;)4M5e8At)B4yvPD6HJ%I@oQrO9%V z>_B9dC;SEhC57N)EV$pV06%CvhYiJ;VehYWrL&c>?=SB_z3H#<)h8Yy?g$pj_#{Q` zClgUhpYJ2Kl4!lFC)ao8MG}I|&)(rz`<5M(*gBu1p&Pj0F%+(B8Se=R+XKrAh2`A9 zyA=6TSij@cmQ_ud5V)9>St^)3PBgZDkHqX?d@8FK@)9wW@pfWg@8wHx-2|v(;CdOKg8Su?LlTh&s(&)Rav*Y^h>vvmbR{T zDNt7clewM|OY6?60-nSo^PN@R>7(B&Df;DQVi~XoyZD}g8-d^IX}?Ffuc_!pXO`cp zG*D;W_D+ER^V5C%pP(`jpEL3_xs#U9j%*>0>E5Zly@zTM#6iYy*M7NU-^pJs=4d_T zXGSRiqD1X9qFno=mDj$D7@w~OcuZL5ytK5rf9ouXaWAVY&%-xVtrJkjjA95DdUgN6 znWBYBDdIcZ)R%2PJn7!2YfNqEZFOdOQ3+We7;?dh-g07qZ`9oO-UX^COGKVo`=}8U z1wW-QzMU=3QKDa|Ye`HphAkF@SP^&7!R%nBc~1mUnOH$uDyi|8xL1YUL6<>i5#So_ z&$VFH`$;ll`M&=RqW?(h=U=ea31_i_#LrO~%XDSTa{-?oEPz4y9q64@eY$bMcO(&$ zgJn_QM8w?sQAuI;cx7m@stbCicF-wmVXrV6{v9OyjQ5$%$Y56r{>%jnVJAHJU22XQ(3!j=__#`b+T$w&pg3o+2tRp za?c%cIVf1vw4~BQlrG*twQB;=6*#Cs4xs`5jk?36{PVL1@N*6xBSkCw zUObqHMo0A0sb-^y5=aX5aN7jtFHXKZS1evaiLGGqLG-D{u-y5%8dAM=%F3 z)q!t1tUjrh^|s8J``Q|#7#=Hh#yV_+!tqrjC$u7DnV!;{lUOI+Rh4(&OnKZS+1LZ_ zAQ^qVq0;=RUD3fgJi~2@WP09H+V1OwH%!6P*pxtBBVzs|*2 zX)z|Z{*p*u9Vz%Hk1@{BXv4MBUQA4O{4Be!V| z{r*}H9jC`oHYd$Az>J9!z=Z^uQfYpOL4@vpX83-a{w%%w6k6u$<5epn?qog5arA?p zpJs2g4pB~*i4FPB1zTbS@e47Hoj3m;?0?{IIf}sK8J6kgLTQQ$v*A;uG22ZUA3I~WcoJRiQXjwUbO4zKQ46|`0FBM!0LXS>HCmX;1h4UEdC*h~2FQDa zcnR}*?-lItF$-_m&#_1tZD5$i=WT@i0@c<8Q2dXGB3L*aj~q(I?f<6C_vv4&2xnoREndSP*Y1pMDX1V#}4OIlT(pb7AXxHtWHT+Fiy4k6RBXSb-5#$vb3$&7bL z4O=j57qHyLV?j`d=DEmz@l?Qp^L)RXqi0Iw0luOt8w}3|gIL<@EjOMX!{|w;JT}01 z3w&k?$OVhr;K8z}A(FvGFCMqo>(eoUE7V>x+ptXm;TAAQn(VN^^@t5LtCf)3k4U0# zad}vZ82`}w&)vsVYreuir!bC-k!YZskqqHu&P1)Sd9W?Yh%CPR!sh;6Q3fozzg2k! z8lShpX%y`dN|$Ln;{C(gXPVxJ|E*cqUc4mN#n;9Pi8Ch%f!F{#ZM{H`P0tQZzL~%L zM~hvXK#S`2_4il(0J5LMy$2iyVjR9%W53_roP8edo6ZI?X(p74i2DMdT20KGWBhtd z)AzBKQa=xW+VTrc9F(5%F-C1}top57EuIfSHRE7O4~@frg}uWWJ3xQi8CkT;+dW}Z zts! zwLRnepB=5{=wPt$Q$(=PVijk`3RWT91S*-6I|IT~LOG%o;cI&JBx`nSx1=zwbI87C z*nnBv8S9$Snw;0^wIF7hAv6W{SM1ol?+A7H%!eG*yxsJlzC>)}ymsa6o<>9L{=o0o zVm3UurhMZph*E#!D6csL3Np8_ztL8hXKwp=YD`l&>u}TaHepM6>WN!g^ZcENi&2qr z%&Bhv4hvEQ)Dt3wC?ly^!6x+Z9!(LT<-<@!^dalaZ}366FwU@4B*;&lBQmEXv>&4_ zD@?1()_AGveUSak0??%*UlG5hCX?%qUJm*{bS;qwBzf3Q_{{HVtBH)O_3{fI%%#)# znD9gR1UyJYm$RX?(MstSInu}Ah#4+n_-5E631AjUg4chBE@BiDu33`YI zmhJVd5~BxhsUM@s$AklW)2)TMOjR_dfgw%iNam4yC`ra{){}8K(r$X-!Q9XKm^og(Yi=`guTO5&m@-7n|xe-_jLKU|Fx*a9HJ_kSX8Aks_;^hfC^^x zXQ@XEy2;2r*ECbT@rPzoAe8VejL!b;(^kEDz1L#sWLdu5Jx;?D-h&SIz2q2^en;Mg zEh6j>ObFqOj~Fr@T~=qm+phgX0EQGrnckD{7|o@3$#GsYTsbll-Tp&+Xbaq48nadst~wrju=>sutN(dR zj1}+}`P`?)zrE!Lf(s$5|07SzyW$!w0~1#41&q4cZi>yw#mN(Fn;z>(m~dic>2?^S z`!d^GqW9`PalS`WfP{%NSm~?FO8S3?CJ)(9GI`)XibkU~bq>Kpm$*z6=)D)C2Vhp_ z&_m{XC{@M^W}&+{eHv!a@PJpM074zR?GgX;l|A0pBZhB6O`XT>K1WZe7f}tukX?iQ z;nH3g)!tu^bf9Ov`-d|$uc@6S$;=f3ajzOMJRugA;9AFzx6UJrr?vevs(?FUBH@$}R* zgP<`&7%K>3DS<`{hf0WH4*Xb|r-?%SyXcGDZp`TJBwlZV+;{+^ zRe|9it9$m7Nq6QP+gJ}S#^Ep)a3gIoUVmvt9?pDFVZhuyn|2gOn58&VJG! zj;Pr7iBdflK6|2I(iR2obOl7UW@1?+-_T9OB*M!;*@QM?&I~K^7#0u3AlT45E4O1l z&Vltnv_UhO7v60k->}8ElO10cXFPHnaiA~T%CX~;g;>dhgHl1;;F7{$QOos*nKDsq z*h|GAZ56Odh1�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 z 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:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-6ff51ddd]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6ff51ddd]{padding:96px 32px 168px}}.code[data-v-6ff51ddd]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6ff51ddd]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6ff51ddd]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6ff51ddd]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6ff51ddd]{padding-top:20px}.link[data-v-6ff51ddd]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-6ff51ddd]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-53c99d69]{position:relative;z-index:1}.nested[data-v-53c99d69]{padding-right:16px;padding-left:16px}.outline-link[data-v-53c99d69]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-53c99d69]:hover,.outline-link.active[data-v-53c99d69]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-53c99d69]{padding-left:13px}.VPDocAsideOutline[data-v-f610f197]{display:none}.VPDocAsideOutline.has-outline[data-v-f610f197]{display:block}.content[data-v-f610f197]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-f610f197]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-f610f197]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-1bb0c8a8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-1bb0c8a8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-1bcd8184]{margin-top:64px}.edit-info[data-v-1bcd8184]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-1bcd8184]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-1bcd8184]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-1bcd8184]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-1bcd8184]{margin-right:8px}.prev-next[data-v-1bcd8184]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-1bcd8184]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-1bcd8184]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-1bcd8184]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-1bcd8184]{margin-left:auto;text-align:right}.desc[data-v-1bcd8184]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-1bcd8184]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-e6f2a212]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-e6f2a212]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-e6f2a212]{display:flex;justify-content:center}.VPDoc .aside[data-v-e6f2a212]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-e6f2a212]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-e6f2a212]{max-width:1104px}}.container[data-v-e6f2a212]{margin:0 auto;width:100%}.aside[data-v-e6f2a212]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-e6f2a212]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-e6f2a212]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-e6f2a212]::-webkit-scrollbar{display:none}.aside-curtain[data-v-e6f2a212]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-e6f2a212]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-e6f2a212]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-e6f2a212]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-e6f2a212]{order:1;margin:0;min-width:640px}}.content-container[data-v-e6f2a212]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-e6f2a212]{max-width:688px}.VPButton[data-v-93dc4167]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-93dc4167]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-93dc4167]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-93dc4167]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-93dc4167]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-93dc4167]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-93dc4167]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-93dc4167]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-93dc4167]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-93dc4167]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-93dc4167]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-93dc4167]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-93dc4167]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-b10c5094]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-b10c5094]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-b10c5094]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-b10c5094]{flex-direction:row}}.main[data-v-b10c5094]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-b10c5094]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-b10c5094]{text-align:left}}@media (min-width: 960px){.main[data-v-b10c5094]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-b10c5094]{max-width:592px}}.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0 auto}.name[data-v-b10c5094]{color:var(--vp-home-hero-name-color)}.clip[data-v-b10c5094]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-b10c5094],.text[data-v-b10c5094]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-b10c5094],.text[data-v-b10c5094]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-b10c5094],.VPHero.has-image .text[data-v-b10c5094]{margin:0}}.tagline[data-v-b10c5094]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-b10c5094]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-b10c5094]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-b10c5094]{margin:0}}.actions[data-v-b10c5094]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-b10c5094]{justify-content:center}@media (min-width: 640px){.actions[data-v-b10c5094]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-b10c5094]{justify-content:flex-start}}.action[data-v-b10c5094]{flex-shrink:0;padding:6px}.image[data-v-b10c5094]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-b10c5094]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-b10c5094]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-b10c5094]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-b10c5094]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-b10c5094]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-b10c5094]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-b10c5094]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-b10c5094]{width:320px;height:320px}}[data-v-b10c5094] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-b10c5094] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-b10c5094] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-bd37d1a2]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-bd37d1a2]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-bd37d1a2]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-bd37d1a2]>.VPImage{margin-bottom:20px}.icon[data-v-bd37d1a2]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-bd37d1a2]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-bd37d1a2]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-bd37d1a2]{padding-top:8px}.link-text-value[data-v-bd37d1a2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-bd37d1a2]{margin-left:6px}.VPFeatures[data-v-b1eea84a]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-b1eea84a]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-b1eea84a]{padding:0 64px}}.container[data-v-b1eea84a]{margin:0 auto;max-width:1152px}.items[data-v-b1eea84a]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-b1eea84a]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-b1eea84a],.item.grid-4[data-v-b1eea84a]{width:50%}.item.grid-3[data-v-b1eea84a],.item.grid-6[data-v-b1eea84a]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-b1eea84a]{width:25%}}.container[data-v-c141a4bd]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-c141a4bd]{padding:0 48px}}@media (min-width: 960px){.container[data-v-c141a4bd]{width:100%;padding:0 64px}}.vp-doc[data-v-c141a4bd] .VPHomeSponsors,.vp-doc[data-v-c141a4bd] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-c141a4bd] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-c141a4bd] .VPHomeSponsors a,.vp-doc[data-v-c141a4bd] .VPTeamPage a{text-decoration:none}.VPHome[data-v-07b1ad08]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-07b1ad08]{margin-bottom:128px}}.VPContent[data-v-9a6c75ad]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-9a6c75ad]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:0}@media (min-width: 960px){.VPContent[data-v-9a6c75ad]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-9a6c75ad]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-9a6c75ad]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-566314d4]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-566314d4]{display:none}.VPFooter[data-v-566314d4] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-566314d4] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-566314d4]{padding:32px}}.container[data-v-566314d4]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-566314d4],.copyright[data-v-566314d4]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-883964e0]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-883964e0]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-883964e0]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-883964e0]{color:var(--vp-c-text-1)}.icon[data-v-883964e0]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-883964e0]{font-size:14px}.icon[data-v-883964e0]{font-size:16px}}.open>.icon[data-v-883964e0]{transform:rotate(90deg)}.items[data-v-883964e0]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-883964e0]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-883964e0]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-883964e0]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-883964e0]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-883964e0]{transition:all .2s ease-out}.flyout-leave-active[data-v-883964e0]{transition:all .15s ease-in}.flyout-enter-from[data-v-883964e0],.flyout-leave-to[data-v-883964e0]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-2488c25a]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-2488c25a]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-2488c25a]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-2488c25a]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-2488c25a]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-2488c25a]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-2488c25a]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-2488c25a]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-2488c25a]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-2488c25a]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-2488c25a]{display:none}}.menu-icon[data-v-2488c25a]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-2488c25a]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-2488c25a]{padding:12px 32px 11px}}.VPSwitch[data-v-b4ccac88]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-b4ccac88]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-b4ccac88]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-b4ccac88]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-b4ccac88] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-b4ccac88] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-be9742d9]{opacity:1}.moon[data-v-be9742d9],.dark .sun[data-v-be9742d9]{opacity:0}.dark .moon[data-v-be9742d9]{opacity:1}.dark .VPSwitchAppearance[data-v-be9742d9] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-3f90c1a5]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-3f90c1a5]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-7eeeb2dc]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-7eeeb2dc]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-7eeeb2dc]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-7eeeb2dc]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-20ed86d6]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-20ed86d6] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-20ed86d6] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-20ed86d6] .group:last-child{padding-bottom:0}.VPMenu[data-v-20ed86d6] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-20ed86d6] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-20ed86d6] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-20ed86d6] .action{padding-left:24px}.VPFlyout[data-v-bfe7971f]{position:relative}.VPFlyout[data-v-bfe7971f]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-bfe7971f]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-bfe7971f]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-bfe7971f]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-bfe7971f]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-bfe7971f]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-bfe7971f],.button[aria-expanded=true]+.menu[data-v-bfe7971f]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-bfe7971f]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-bfe7971f]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-bfe7971f]{margin-right:0;font-size:16px}.text-icon[data-v-bfe7971f]{margin-left:4px;font-size:14px}.icon[data-v-bfe7971f]{font-size:20px;transition:fill .25s}.menu[data-v-bfe7971f]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-60a9a2d3]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-60a9a2d3]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-60a9a2d3]>svg,.VPSocialLink[data-v-60a9a2d3]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-f953d92f]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-f953d92f]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-f953d92f]{display:none}}.trans-title[data-v-f953d92f]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-f953d92f],.item.social-links[data-v-f953d92f]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-f953d92f]{min-width:176px}.appearance-action[data-v-f953d92f]{margin-right:-2px}.social-links-list[data-v-f953d92f]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-815115f5]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-815115f5],.VPNavBarMenuLink[data-v-815115f5]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-afb2845e]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-afb2845e]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--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:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),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 rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--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 rgba(3,4,9,.3);--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 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.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;margin:0 0 0 16px;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:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.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;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;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{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;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-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance: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-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.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:transparent}.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,.DocSearch-Label{color:var(--docsearch-muted-color)}.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{color:var(--docsearch-muted-color);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}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.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;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.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);stroke-width:var(--docsearch-icon-stroke-width)}.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{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.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}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.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{-webkit-appearance:none;-moz-appearance:none;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:none;text-decoration:underline}.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{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;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}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.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-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;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:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-9f43907a]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-9f43907a]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-9f43907a]{border-bottom-color:var(--vp-c-divider)}}[data-v-9f43907a] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-acee064b]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-acee064b]{display:flex;align-items:center}}.title[data-v-acee064b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-9fd4d1dd]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-9fd4d1dd]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-9fd4d1dd]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-9fd4d1dd]:not(.home){background-color:transparent}.VPNavBar[data-v-9fd4d1dd]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-9fd4d1dd]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-9fd4d1dd]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-9fd4d1dd]{padding:0}}.container[data-v-9fd4d1dd]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-9fd4d1dd],.container>.content[data-v-9fd4d1dd]{pointer-events:none}.container[data-v-9fd4d1dd] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-9fd4d1dd]{max-width:100%}}.title[data-v-9fd4d1dd]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-9fd4d1dd]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-9fd4d1dd]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-9fd4d1dd]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-9fd4d1dd]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-9fd4d1dd]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-9fd4d1dd]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-9fd4d1dd]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-9fd4d1dd]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-9fd4d1dd]{column-gap:.5rem}}.menu+.translations[data-v-9fd4d1dd]:before,.menu+.appearance[data-v-9fd4d1dd]:before,.menu+.social-links[data-v-9fd4d1dd]:before,.translations+.appearance[data-v-9fd4d1dd]:before,.appearance+.social-links[data-v-9fd4d1dd]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-9fd4d1dd]:before,.translations+.appearance[data-v-9fd4d1dd]:before{margin-right:16px}.appearance+.social-links[data-v-9fd4d1dd]:before{margin-left:16px}.social-links[data-v-9fd4d1dd]{margin-right:-8px}.divider[data-v-9fd4d1dd]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-9fd4d1dd]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-9fd4d1dd]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-9fd4d1dd]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-9fd4d1dd]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-a3e2920d]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-a3e2920d]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-fa963d97]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-fa963d97]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-e04f3e85]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-e04f3e85]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-d99bfeec]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-d99bfeec]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-d99bfeec]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-d99bfeec]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-d99bfeec]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-d99bfeec]{transform:rotate(45deg)}.button[data-v-d99bfeec]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-d99bfeec]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-d99bfeec]{transition:transform .25s}.group[data-v-d99bfeec]:first-child{padding-top:0}.group+.group[data-v-d99bfeec],.group+.item[data-v-d99bfeec]{padding-top:4px}.VPNavScreenTranslations[data-v-516e4bc3]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-516e4bc3]{height:auto}.title[data-v-516e4bc3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-516e4bc3]{font-size:16px}.icon.lang[data-v-516e4bc3]{margin-right:8px}.icon.chevron[data-v-516e4bc3]{margin-left:4px}.list[data-v-516e4bc3]{padding:4px 0 0 24px}.link[data-v-516e4bc3]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-2dd6d0c7]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-2dd6d0c7],.VPNavScreen.fade-leave-active[data-v-2dd6d0c7]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-2dd6d0c7],.VPNavScreen.fade-leave-active .container[data-v-2dd6d0c7]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-2dd6d0c7],.VPNavScreen.fade-leave-to[data-v-2dd6d0c7]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-2dd6d0c7],.VPNavScreen.fade-leave-to .container[data-v-2dd6d0c7]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-2dd6d0c7]{display:none}}.container[data-v-2dd6d0c7]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-2dd6d0c7],.menu+.appearance[data-v-2dd6d0c7],.translations+.appearance[data-v-2dd6d0c7]{margin-top:24px}.menu+.social-links[data-v-2dd6d0c7]{margin-top:16px}.appearance+.social-links[data-v-2dd6d0c7]{margin-top:16px}.VPNav[data-v-7ad780c2]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-7ad780c2]{position:fixed}}.VPSidebarItem.level-0[data-v-edd2eed8]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-edd2eed8]{padding-bottom:10px}.item[data-v-edd2eed8]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-edd2eed8]{cursor:pointer}.indicator[data-v-edd2eed8]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-edd2eed8],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-edd2eed8],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-edd2eed8],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-edd2eed8]{background-color:var(--vp-c-brand-1)}.link[data-v-edd2eed8]{display:flex;align-items:center;flex-grow:1}.text[data-v-edd2eed8]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-edd2eed8]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-edd2eed8],.VPSidebarItem.level-2 .text[data-v-edd2eed8],.VPSidebarItem.level-3 .text[data-v-edd2eed8],.VPSidebarItem.level-4 .text[data-v-edd2eed8],.VPSidebarItem.level-5 .text[data-v-edd2eed8]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-edd2eed8],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-edd2eed8],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-edd2eed8],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-edd2eed8],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-edd2eed8],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-edd2eed8]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-1.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-2.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-3.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-4.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-5.has-active>.item>.text[data-v-edd2eed8],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-edd2eed8],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-edd2eed8],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-edd2eed8],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-edd2eed8],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-edd2eed8],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-edd2eed8]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-edd2eed8],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-edd2eed8],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-edd2eed8],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-edd2eed8],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-edd2eed8],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-edd2eed8]{color:var(--vp-c-brand-1)}.caret[data-v-edd2eed8]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-edd2eed8]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-edd2eed8]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-edd2eed8]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-edd2eed8]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-edd2eed8],.VPSidebarItem.level-2 .items[data-v-edd2eed8],.VPSidebarItem.level-3 .items[data-v-edd2eed8],.VPSidebarItem.level-4 .items[data-v-edd2eed8],.VPSidebarItem.level-5 .items[data-v-edd2eed8]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-edd2eed8]{display:none}.no-transition[data-v-51288d80] .caret-icon{transition:none}.group+.group[data-v-51288d80]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-51288d80]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-42c4c606]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-42c4c606]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-42c4c606]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-42c4c606]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-42c4c606]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-42c4c606]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-42c4c606]{outline:0}.VPSkipLink[data-v-c8291ffa]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-d8b57b2d]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3dc26e1d]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3dc26e1d]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{margin:128px 0}}.VPHomeSponsors[data-v-3dc26e1d]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3dc26e1d]{padding:0 64px}}.container[data-v-3dc26e1d]{margin:0 auto;max-width:1152px}.love[data-v-3dc26e1d]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3dc26e1d]{display:inline-block}.message[data-v-3dc26e1d]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3dc26e1d]{padding-top:32px}.action[data-v-3dc26e1d]{padding-top:40px;text-align:center}.VPTeamPage[data-v-a5329171]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-a5329171]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-a5329171-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-a5329171-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-a5329171-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-a5329171-s],.VPTeamMembers+.VPTeamPageSection[data-v-a5329171-s]{margin-top:96px}}.VPTeamMembers[data-v-a5329171-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-a5329171-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-a5329171-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-3bf2e850]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-acff304e]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-acff304e]{padding:32px}.VPTeamMembersItem.small .data[data-v-acff304e]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-acff304e]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-acff304e]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-acff304e]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-acff304e]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-acff304e]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-acff304e]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-acff304e]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-acff304e]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-acff304e]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-acff304e]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-acff304e]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-acff304e]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-acff304e]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-acff304e]{text-align:center}.avatar[data-v-acff304e]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-acff304e]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-acff304e]{margin:0;font-weight:600}.affiliation[data-v-acff304e]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-acff304e]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-acff304e]:hover{color:var(--vp-c-brand-1)}.desc[data-v-acff304e]{margin:0 auto}.desc[data-v-acff304e] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-acff304e]{display:flex;justify-content:center;height:56px}.sp-link[data-v-acff304e]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-acff304e]:hover,.sp .sp-link.link[data-v-acff304e]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-acff304e]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #0a1561 30%, #e5004f )}.dark{--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #fff 30%, #e5004f )}.image-src{opacity:.1}@media (min-width: 960px){.VPNavBarTitle .title{font-size:14px;line-height:18px}}@media (max-width: 820px){.VPNavBar .title{max-width:calc(100vw - 450px);font-size:14px;line-height:18px}}@media (max-width: 768px){.VPNavBar .title{max-width:calc(100vw - 120px);font-size:14px;line-height:18px}}.VPHero .main>.name{white-space:nowrap}#app .VPDoc.has-aside .content-container{max-width:1280px}@media (min-width: 1440px) and (max-width: 1920px){#app .VPNavBar.has-sidebar .container>.title{padding-left:32px;width:var(--vp-sidebar-width)}#app .VPSidebar{padding-left:32px;width:var(--vp-sidebar-width)}#app .VPContent.has-sidebar{padding-right:0;padding-left:var(--vp-sidebar-width)}#app .VPNavBar.has-sidebar .content{padding-right:32px;padding-left:var(--vp-sidebar-width)}#app .VPNavBar.has-sidebar .divider{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1920px){:root{--vp-layout-max-width: 1920px}}@media print{.VPNav,.VPLocalNav,.VPSidebar,.VPDocFooter{display:none}.VPContent.has-sidebar{padding-left:0}}.print-test .VPNav,.print-test .VPLocalNav,.print-test .VPSidebar,.print-test .VPDocFooter{display:none}.print-test .VPContent.has-sidebar{padding-left:0}h1,h2{page-break-before:always}h1,h2,h3,h4,h5,h6{page-break-after:avoid}.page-info[data-v-b1e769ab]{display:inline-flex;align-items:flex-end}.page-info[data-v-b1e769ab] .hatena-bookmark-button-frame{margin-left:4px}.share-buttons[data-v-a4261501]{display:flex;justify-content:flex-end;flex-wrap:wrap}.vitepress-page-title[data-v-a4261501] .share-buttons>*{padding-left:5px}.vitepress-page-title__author[data-v-a4261501]{padding-bottom:8px;margin-bottom:18px;font-size:12px;border:none;color:initial;text-align:right;page-break-after:always;font-weight:600;line-height:1.25;border-bottom:1px solid #eaecef}@media print{.share-buttons[data-v-a4261501]{display:none}.vitepress-page-title__title[data-v-a4261501]{text-align:center;margin-top:50%;page-break-before:auto}.vitepress-page-title__author[data-v-a4261501]{page-break-after:always}}.VPLocalSearchBox[data-v-68e678c9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-68e678c9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-68e678c9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-68e678c9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-68e678c9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-68e678c9]{padding:0 8px}}.search-bar[data-v-68e678c9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-68e678c9]{display:block;font-size:18px}.navigate-icon[data-v-68e678c9]{display:block;font-size:14px}.search-icon[data-v-68e678c9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-68e678c9]{display:none}}.search-input[data-v-68e678c9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-68e678c9]{padding:6px 4px}}.search-actions[data-v-68e678c9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-68e678c9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-68e678c9]{display:none}}.search-actions button[data-v-68e678c9]{padding:8px}.search-actions button[data-v-68e678c9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-68e678c9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-68e678c9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-68e678c9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-68e678c9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-68e678c9]{display:none}}.search-keyboard-shortcuts kbd[data-v-68e678c9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-68e678c9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-68e678c9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-68e678c9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-68e678c9]{margin:8px}}.titles[data-v-68e678c9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-68e678c9]{display:flex;align-items:center;gap:4px}.title.main[data-v-68e678c9]{font-weight:500}.title-icon[data-v-68e678c9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-68e678c9]{opacity:.5}.result.selected[data-v-68e678c9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-68e678c9]{position:relative}.excerpt[data-v-68e678c9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-68e678c9]{opacity:1}.excerpt[data-v-68e678c9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-68e678c9] mark,.excerpt[data-v-68e678c9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-68e678c9] .vp-code-group .tabs{display:none}.excerpt[data-v-68e678c9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-68e678c9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-68e678c9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-68e678c9],.result.selected .title-icon[data-v-68e678c9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-68e678c9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-68e678c9]{flex:none} diff --git a/assets/vscode_git_branch1.l8tVcgzj.png b/assets/vscode_git_branch1.l8tVcgzj.png new file mode 100644 index 0000000000000000000000000000000000000000..a4a33907ac1ed90b20e2b7cc220dbd7c8c4c1341 GIT binary patch literal 307403 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�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