@next-bricks/diagram 0.42.11 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/bricks.json +1 -1
  2. package/dist/chunks/{1122.97ee7474.js → 1122.dea87200.js} +2 -2
  3. package/dist/chunks/{1122.97ee7474.js.map → 1122.dea87200.js.map} +1 -1
  4. package/dist/chunks/{114.9d0b78d2.js → 114.d27688d7.js} +2 -2
  5. package/dist/chunks/{114.9d0b78d2.js.map → 114.d27688d7.js.map} +1 -1
  6. package/dist/chunks/{1940.3fa9b819.js → 1940.e1fdb1c6.js} +2 -2
  7. package/dist/chunks/{1940.3fa9b819.js.map → 1940.e1fdb1c6.js.map} +1 -1
  8. package/dist/chunks/{2277.642aada3.js → 2277.0b3548af.js} +2 -2
  9. package/dist/chunks/{4658.ff7efb11.js.map → 2277.0b3548af.js.map} +1 -1
  10. package/dist/chunks/3025.6d94cc70.js +3 -0
  11. package/dist/chunks/3025.6d94cc70.js.map +1 -0
  12. package/dist/chunks/{3171.9a74d0e1.js → 3171.633b30e8.js} +2 -2
  13. package/dist/chunks/{3171.9a74d0e1.js.map → 3171.633b30e8.js.map} +1 -1
  14. package/dist/chunks/3233.70157b34.js +3 -0
  15. package/dist/chunks/3233.70157b34.js.map +1 -0
  16. package/dist/chunks/3252.0a5098f4.js +2 -0
  17. package/dist/chunks/3252.0a5098f4.js.map +1 -0
  18. package/dist/chunks/3933.fca8ae82.js +2 -0
  19. package/dist/chunks/{3933.e4f7efe6.js.map → 3933.fca8ae82.js.map} +1 -1
  20. package/dist/chunks/{4658.ff7efb11.js → 4658.d4d0115b.js} +2 -2
  21. package/dist/chunks/{2277.642aada3.js.map → 4658.d4d0115b.js.map} +1 -1
  22. package/dist/chunks/4837.44f22425.js +2 -0
  23. package/dist/chunks/{7218.3cc8b20d.js.map → 4837.44f22425.js.map} +1 -1
  24. package/dist/chunks/{5552.69fe3835.js → 5552.ad11237e.js} +2 -2
  25. package/dist/chunks/{5552.69fe3835.js.map → 5552.ad11237e.js.map} +1 -1
  26. package/dist/chunks/6314.f35cc928.js +2 -0
  27. package/dist/chunks/{6314.d82ad8ed.js.map → 6314.f35cc928.js.map} +1 -1
  28. package/dist/chunks/7218.6822e904.js +2 -0
  29. package/dist/chunks/{4837.ac3853bb.js.map → 7218.6822e904.js.map} +1 -1
  30. package/dist/chunks/{7733.a27200f8.js → 7733.e752ca8f.js} +2 -2
  31. package/dist/chunks/{7733.a27200f8.js.map → 7733.e752ca8f.js.map} +1 -1
  32. package/dist/chunks/799.5e6749ba.js +3 -0
  33. package/dist/chunks/799.5e6749ba.js.map +1 -0
  34. package/dist/chunks/{9559.436645e2.js → 9559.1cd5e0b2.js} +2 -2
  35. package/dist/chunks/{9559.436645e2.js.map → 9559.1cd5e0b2.js.map} +1 -1
  36. package/dist/chunks/9711.d7bd00df.js +2 -0
  37. package/dist/chunks/9711.d7bd00df.js.map +1 -0
  38. package/dist/chunks/{editable-label.a3d1d983.js → editable-label.e65ba20e.js} +3 -3
  39. package/dist/chunks/{editable-label.a3d1d983.js.map → editable-label.e65ba20e.js.map} +1 -1
  40. package/dist/chunks/eo-diagram.1934f2b2.js +2 -0
  41. package/dist/chunks/eo-diagram.1934f2b2.js.map +1 -0
  42. package/dist/chunks/eo-display-canvas.f874fb2f.js +2 -0
  43. package/dist/chunks/eo-display-canvas.f874fb2f.js.map +1 -0
  44. package/dist/chunks/eo-draw-canvas.84ade234.js +2 -0
  45. package/dist/chunks/eo-draw-canvas.84ade234.js.map +1 -0
  46. package/dist/chunks/experimental-node.7441f68a.js +2 -0
  47. package/dist/chunks/{experimental-node.c9bb5135.js.map → experimental-node.7441f68a.js.map} +1 -1
  48. package/dist/chunks/main.9e233da7.js +2 -0
  49. package/dist/chunks/main.9e233da7.js.map +1 -0
  50. package/dist/examples.json +4 -4
  51. package/dist/index.d6687c6f.js +2 -0
  52. package/dist/index.d6687c6f.js.map +1 -0
  53. package/dist/manifest.json +48 -41
  54. package/dist/types.json +1018 -472
  55. package/dist-types/diagram/lines/getPolyLinePoints.d.ts +2 -2
  56. package/dist-types/draw-canvas/CellComponent.d.ts +3 -2
  57. package/dist-types/draw-canvas/HoverStateContext.d.ts +27 -0
  58. package/dist-types/draw-canvas/LineConnectorComponent.d.ts +9 -0
  59. package/dist-types/draw-canvas/SmartConnectLineComponent.d.ts +8 -0
  60. package/dist-types/draw-canvas/constants.d.ts +2 -0
  61. package/dist-types/draw-canvas/decorators/DecoratorArea.d.ts +1 -1
  62. package/dist-types/draw-canvas/decorators/index.d.ts +1 -1
  63. package/dist-types/draw-canvas/index.d.ts +4 -2
  64. package/dist-types/draw-canvas/interfaces.d.ts +56 -16
  65. package/dist-types/draw-canvas/processors/handleMouseDown.d.ts +3 -2
  66. package/dist-types/draw-canvas/processors/normalizeSnapOptions.d.ts +6 -0
  67. package/dist-types/draw-canvas/processors/normalizeSnapOptions.spec.d.ts +1 -0
  68. package/dist-types/draw-canvas/reducers/interfaces.d.ts +3 -1
  69. package/dist-types/shared/canvas/processors/getConnectLinePoints.d.ts +4 -0
  70. package/dist-types/shared/canvas/processors/getConnectLinePoints.spec.d.ts +1 -0
  71. package/dist-types/shared/canvas/processors/getSmartLinePoints.d.ts +3 -0
  72. package/dist-types/shared/canvas/processors/nodeViewToNodeRect.d.ts +3 -0
  73. package/dist-types/shared/canvas/shapes/Rectangle.d.ts +2 -0
  74. package/dist-types/shared/canvas/useLineMarkers.d.ts +7 -5
  75. package/docs/eo-draw-canvas.md +15 -5
  76. package/package.json +4 -4
  77. package/dist/chunks/1371.4d56b3dc.js +0 -2
  78. package/dist/chunks/1371.4d56b3dc.js.map +0 -1
  79. package/dist/chunks/2416.1dd136d0.js +0 -2
  80. package/dist/chunks/2416.1dd136d0.js.map +0 -1
  81. package/dist/chunks/3489.e0ce6106.js +0 -3
  82. package/dist/chunks/3489.e0ce6106.js.map +0 -1
  83. package/dist/chunks/3790.093a51f1.js +0 -3
  84. package/dist/chunks/3790.093a51f1.js.map +0 -1
  85. package/dist/chunks/3933.e4f7efe6.js +0 -2
  86. package/dist/chunks/4017.2680d65a.js +0 -3
  87. package/dist/chunks/4017.2680d65a.js.LICENSE.txt +0 -5
  88. package/dist/chunks/4017.2680d65a.js.map +0 -1
  89. package/dist/chunks/4837.ac3853bb.js +0 -2
  90. package/dist/chunks/6314.d82ad8ed.js +0 -2
  91. package/dist/chunks/7218.3cc8b20d.js +0 -2
  92. package/dist/chunks/799.0d07ef57.js +0 -3
  93. package/dist/chunks/799.0d07ef57.js.map +0 -1
  94. package/dist/chunks/eo-diagram.261eb2d9.js +0 -2
  95. package/dist/chunks/eo-diagram.261eb2d9.js.map +0 -1
  96. package/dist/chunks/eo-display-canvas.e43ca2e5.js +0 -2
  97. package/dist/chunks/eo-display-canvas.e43ca2e5.js.map +0 -1
  98. package/dist/chunks/eo-draw-canvas.91b46e0d.js +0 -2
  99. package/dist/chunks/eo-draw-canvas.91b46e0d.js.map +0 -1
  100. package/dist/chunks/experimental-node.c9bb5135.js +0 -2
  101. package/dist/chunks/main.4e79d4df.js +0 -2
  102. package/dist/chunks/main.4e79d4df.js.map +0 -1
  103. package/dist/index.4a8ba3c2.js +0 -2
  104. package/dist/index.4a8ba3c2.js.map +0 -1
  105. /package/dist/chunks/{3489.e0ce6106.js.LICENSE.txt → 3025.6d94cc70.js.LICENSE.txt} +0 -0
  106. /package/dist/chunks/{3790.093a51f1.js.LICENSE.txt → 3233.70157b34.js.LICENSE.txt} +0 -0
  107. /package/dist/chunks/{799.0d07ef57.js.LICENSE.txt → 799.5e6749ba.js.LICENSE.txt} +0 -0
  108. /package/dist/chunks/{editable-label.a3d1d983.js.LICENSE.txt → editable-label.e65ba20e.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/2416.1dd136d0.js","mappings":"6MAWO,SAASA,EAAoBC,GAIO,IAJN,iBACnCC,EAAgB,cAChBC,EAAa,aACbC,GAC0BH,EAC1B,OACEI,IAAAA,cAAA,OACEC,MAAM,OACNC,OAAO,OACPC,UAAWC,IAAW,eAAgB,CACpCC,aACIR,IAEDC,EAAc,GAAKD,EAAiBS,KAAK,KAAO,GAC9CR,EAAc,GAAKD,EAAiBS,KAAK,KAAO,EACjD,MAGNN,IAAAA,cAAA,YACEA,IAAAA,cAACO,EAAAA,EAAe,CACdC,KAAK,QACLC,GAAI,GAAGV,gBACPW,YAAab,aAAgB,EAAhBA,EAAkBc,QAAQD,eAG3CV,IAAAA,cAAA,QACEY,EACEf,EACI,IAAIA,EAAiBS,KAAKO,KAAK,QAAQf,EAAce,KAAK,OAC1D,GAENC,KAAK,OACLC,OAAQlB,aAAgB,EAAhBA,EAAkBc,QAAQD,YAClCM,YAAanB,aAAgB,EAAhBA,EAAkBc,QAAQK,YACvCC,UACEpB,SAAAA,EAAkBc,QAAQO,MACtB,QAAQnB,sBACRoB,IAKd,C,4ECpCO,SAASC,EAAaxB,GAWO,IAAAyB,EAAAC,EAAA,IAVlCC,MAAM,KAAEA,EAAI,KAAEC,EAAI,EAAEZ,EAAC,QAAEa,GAAS,UAChCC,EAAS,cACTC,EAAa,WACbC,EAAU,aACV7B,EAAY,uBACZ8B,EAAsB,OACtBC,EAAM,cACNC,EAAa,YACbC,EAAW,kBACXC,GACmBrC,EACnB,MAAMsC,EAAOP,EAAcQ,IAAIZ,EAAKa,KAChC,QAAQR,IAAaL,EAAKa,YAC1BjB,GAEE,YAAET,EAAW,YAAEM,EAAW,oBAAEqB,GAAwB,IACrDd,KACCO,EACc,QADRT,EACNE,EAAKe,iBAAS,IAAAjB,OAAA,EAAdA,EAAgBS,OAChBC,EACgB,QADHT,EACXC,EAAKe,iBAAS,IAAAhB,OAAA,EAAdA,EAAgBS,cAChB,MAGFQ,EAAgBT,EAClB,SACAC,EACE,iBACA,UAEN,IAAIS,EACAvB,EAEJ,IAAK,MAAMwB,KAAUhB,EACfgB,EAAOC,UAAYH,IACI,UAArBE,EAAOE,UACTH,EAAc,QAAQzC,IAAe0C,EAAOG,SAE5C3B,EAAY,QAAQlB,IAAe0C,EAAOG,UAKhD,OACE5C,IAAAA,cAAA,KACEG,UAAWC,IAAW,OAAQ,CAC5ByC,aAActB,EAAKsB,aACnBf,SACA,iBAAkBC,IAEpBe,QACEvB,EAAKsB,aACD,KACEb,SAAAA,EAAc,CAAEvB,GAAIc,EAAKa,IAAKZ,QAAO,OAEvCL,EAEN4B,cACExB,EAAKsB,aACAG,IACCA,EAAEC,iBACFD,EAAEE,kBACFjB,SAAAA,EAAoB,CAAExB,GAAIc,EAAKa,IAAKZ,QAAO,OAE7CL,EAENgC,MAAO,CAAEC,OAAQ7B,EAAK6B,SAErB7B,EAAKsB,cACJ7C,IAAAA,cAAA,QAEEY,EAAGA,EACHE,KAAK,OACLC,OAAO,cACPC,YAAaqB,IAGjBrC,IAAAA,cAAA,QACEqD,IAAMC,GAAY5B,EAAU6B,IAAIhC,EAAKa,IAAKkB,GAC1CvC,OAAQL,EACRM,YAAaA,EACbJ,EAAGA,EACHE,KAAK,OACL0B,YAAaA,EACbvB,UAAWA,EACXiB,KAAMA,IAERlC,IAAAA,cAAA,QACEe,OAAO,wBACPC,YAAaA,EACbJ,EAAGA,EACHE,KAAK,OACLX,UAAU,YACVqC,YAAa,QAAQX,UACrBZ,UAAW,QAAQY,QACnBK,KAAMA,IAId,C,4ECpGO,SAASsB,EAAuB5D,GAGO,IAHN,OACtC6D,EAAM,WACNC,GAC6B9D,EAC7B,MAAO+D,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAAmB,IACnDG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAAC3D,EAAY6C,KACPA,GACFU,EAAcT,IAAI9C,EAAI6C,GAExBS,GAAgBM,GACdA,EAASC,SAAS7D,GAAM4D,EAAWA,EAASE,OAAO9D,IACpD,GAEH,CAACuD,IAGGQ,GAAgBJ,EAAAA,EAAAA,cACnB3D,IACCsD,GAAgBM,IACd,MAAMzB,EAAQyB,EAASI,QAAQhE,GAC/B,OAAkB,IAAXmC,EACHyB,EACAA,EAASK,MAAM,EAAG9B,GAAO2B,OAAOF,EAASK,MAAM9B,EAAQ,GAAG,IAEhEoB,EAAcW,OAAOlE,EAAG,GAE1B,CAACuD,IAiBH,OAdAY,EAAAA,EAAAA,YAAU,KAERhB,IAAaH,SAAAA,EAAQoB,MAAMC,IAAWhB,EAAYQ,SAASQ,EAAMrE,OAAK,GACrE,CAACgD,EAAQK,KAEZc,EAAAA,EAAAA,YACE,KACElB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlC3D,IAAAA,cAACA,IAAAA,SAAc,KACZyD,aAAM,EAANA,EAAQsB,KAAIC,IAAA,IAAC,KAAEC,EAAI,MAAEH,EAAK,GAAkBrE,EAAE,KAAEe,GAAMwD,EAAA,OACrDF,EACE9E,IAAAA,cAAA,OACEkF,IAAKzE,EACLN,UAAU,cAMVH,IAAAA,cAACmF,EAAkB,CACjB1E,GAAIA,EACJe,KAAMA,EACNsD,MAAOA,EACPpB,WAAYS,EACZiB,UAAWZ,KAIfxE,IAAAA,cAACqF,EAAiB,CAChBH,IAAKzE,EACLA,GAAIA,EACJwE,KAAMA,EAENvB,WAAYS,GAEf,IAIT,CAUO,SAASkB,EAAiBC,GAKO,IALN,GAChC7E,EAAE,KACFwE,EAAI,WAEJvB,GACuB4B,EACvB,MAAMC,GAAcnB,EAAAA,EAAAA,cACjBd,IACCI,SAAAA,EAAajD,EAAI6C,EAAQ,GAE3B,CAAC7C,EAAIiD,IAGP,OACE1D,IAAAA,cAAA,OACEG,UAAU,aACVkD,IAAKkC,EAMLpC,MAAO8B,EAAK9B,OAEX8B,EAAMO,QAGb,CAYO,SAASL,EAAkBM,GAMc,IANb,GACjChF,EAAE,KACFe,EAAI,MACJsD,EAAK,WACLpB,EAAU,UACV0B,GACwBK,EACxB,MAAMC,GAAWzB,EAAAA,EAAAA,UACf,KAAO0B,EAAAA,EAAAA,oBAAmBb,EAAO,CAAEtD,SAAUsD,EAAMY,SAAW,MAC9D,CAAClE,EAAMsD,IAGHc,GAAe3B,EAAAA,EAAAA,UAAQ,KAAM,CAAGzC,UAAS,CAACA,KAEhDoD,EAAAA,EAAAA,YAAU,KACHc,GAEHG,YAAW,KACTnC,SAAAA,EAAajD,EAAI,KAAK,GAE1B,GACC,CAACA,EAAIiD,EAAYgC,KAEpBd,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAY3E,EAAG,GAKnB,IAGF,MAAM8E,GAAcnB,EAAAA,EAAAA,cACjBd,IACKA,GAGFuC,YAAW,KACTnC,SAAAA,EAAajD,EAAI6C,EAAQwC,cAAc,GAE3C,GAEF,CAACrF,EAAIiD,IAGDqC,GAAkB3B,EAAAA,EAAAA,cAAY,KAClCyB,YAAW,KACTnC,SAAAA,EAAajD,EAAI,KAAK,GACtB,GACD,CAACA,EAAIiD,IAER,OAAKgC,EAKH1F,IAAAA,cAACgG,EAAAA,cAAa,CACZT,YAAaA,EAGbQ,gBAAiBA,EACjBL,SAAUA,EACVO,KAAML,IAVD,IAaX,C,yDC1MO,SAASM,EAAiBtG,GAKc,IALb,OAChCuG,EAAM,MACNC,EAAK,WACLxE,EAAU,mBACVyE,GACuBzG,EACvB,MAAM0G,EAAWD,EAAmBE,MACjCC,GAASA,EAAKL,SAAWA,GAA6B,WAAnBK,EAAK7D,YAG3C,IAAK2D,EACH,OAAO,KAET,MAAM,SAAEG,GAAaH,EACfI,GAgCsCC,EAhCA,IAiCrC,CACLC,MAFwBC,EAhCQJ,GAkCrBG,KAAOD,EAClBG,IAAKD,EAAKC,IAAMH,EAChB1G,MAAO4G,EAAK5G,MAAQ0G,IACpBzG,OAAQ2G,EAAK3G,OAASyG,MAL1B,IAA4BE,EAAkBF,EA/B5C,OACE3G,IAAAA,cAAA,QACES,GAAI,GAAGmB,IAAauE,IACpBY,EAAGL,EAAOE,KACVI,EAAGN,EAAOI,IACV7G,MAAOyG,EAAOzG,MACdC,OAAQwG,EAAOxG,QAEfF,IAAAA,cAAA,QACE+G,EAAGL,EAAOE,KACVI,EAAGN,EAAOI,IACV7G,MAAOyG,EAAOzG,MACdC,OAAQwG,EAAOxG,OAEfY,KAAK,UAENsF,EAAMrB,KAAI,CAAC8B,EAAMjE,IAChB5C,IAAAA,cAAA,QACEkF,IAAKtC,EACLmE,EAAGF,EAAKD,KACRI,EAAGH,EAAKC,IACR7G,MAAO4G,EAAK5G,MACZC,OAAQ2G,EAAK3G,OAEbY,KAAK,YAKf,C,2ECtCO,SAASmG,EAAkBrH,GAIO,IAJN,MACjCsH,EAAK,WACLC,EAAU,WACVzD,GACwB9D,EACxB,MAAO+D,EAAUC,IAAeC,EAAAA,EAAAA,WAAS,IAClCC,EAAaC,IAAkBF,EAAAA,EAAAA,UAA0B,IAC1DG,GAAgBC,EAAAA,EAAAA,UAAuB,IAAM,IAAIC,KAAO,IAExDC,GAAiBC,EAAAA,EAAAA,cACrB,CAAC3D,EAAmB6C,KACdA,GACFU,EAAcT,IAAI9C,EAAI6C,GAExBS,GAAgBM,GACdA,EAASC,SAAS7D,GAAM4D,EAAWA,EAASE,OAAO9D,IACpD,GAEH,CAACuD,IAGGQ,GAAgBJ,EAAAA,EAAAA,cACnB3D,IACCsD,GAAgBM,IACd,MAAMzB,EAAQyB,EAASI,QAAQhE,GAC/B,OAAkB,IAAXmC,EACHyB,EACAA,EAASK,MAAM,EAAG9B,GAAO2B,OAAOF,EAASK,MAAM9B,EAAQ,GAAG,IAEhEoB,EAAcW,OAAOlE,EAAG,GAE1B,CAACuD,IAiBH,OAdAY,EAAAA,EAAAA,YAAU,KAERhB,IAAasD,SAAAA,EAAOrC,MAAMuC,IAAUtD,EAAYQ,SAAS8C,EAAK3G,OAAK,GAClE,CAACyG,EAAOpD,KAEXc,EAAAA,EAAAA,YACE,KACElB,SAAAA,EAAaC,EAAWK,EAAgB,KAAK,GAI/C,CAAmBA,EAAeL,IAIlC3D,IAAAA,cAACA,IAAAA,SAAc,KACZkH,aAAK,EAALA,EAAOnC,KAAKqC,GACXpH,IAAAA,cAAA,OAAKkF,IAAKkC,EAAK3G,GAAIN,UAAU,QAC3BH,IAAAA,cAACqH,EAAa,CACZF,WAAYA,EACZC,KAAMA,EACN1D,WAAYS,EACZiB,UAAWZ,OAMvB,CASO,SAAS6C,EAAarC,GAKc,IALb,KAC5BoC,EAAI,WACJD,EAAU,WACVzD,EAAU,UACV0B,GACmBJ,EACnB,MAAMU,GAAWzB,EAAAA,EAAAA,UACf,SAAAqD,EAAA,OAAqC,QAArCA,EC3FG,SACLF,EACAD,GAEA,OAAOA,aAAU,EAAVA,EAAYZ,MAAMC,GACnBA,EAAKe,SACC,GAAiBhD,OAAOiC,EAAKe,UAAUjD,SAAS8C,EAAK5G,OAExDmF,EAAAA,EAAAA,oBAAmBa,EAAM,CAAEY,UAEtC,CDiFUI,CAAcJ,EAAMD,UAAW,IAAAG,OAAA,EAA/BA,EAAiC5B,QAAQ,GAC/C,CAAC0B,EAAMD,IAEHvB,GAAe3B,EAAAA,EAAAA,UAAQ,KAAM,CAAGmD,UAAS,CAACA,KAEhDxC,EAAAA,EAAAA,YAAU,KACHc,GAEHG,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI,KAAK,GAE/B,GACC,CAAC2G,EAAK3G,GAAIiD,EAAYgC,KAEzBd,EAAAA,EAAAA,YACE,IACS,KACLQ,SAAAA,EAAYgC,EAAK3G,GAAG,GAKxB,IAGF,MAAM8E,GAAcnB,EAAAA,EAAAA,cACjBd,IACKA,GAGFuC,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI6C,EAAQ,GAElC,GAEF,CAAC8D,EAAK3G,GAAIiD,IAGNqC,GAAkB3B,EAAAA,EAAAA,cAAY,KAClCyB,YAAW,KACTnC,SAAAA,EAAa0D,EAAK3G,GAAI,KAAK,GAC3B,GACD,CAAC2G,EAAK3G,GAAIiD,IAEb,OAAKgC,EAKH1F,IAAAA,cAACgG,EAAAA,cAAa,CACZT,YAAaA,EAGbQ,gBAAiBA,EACjBL,SAAUA,EACVO,KAAML,IAVD,IAaX,C,gFExJO,MAAM6B,EAA4B,wBAC5BC,EAA4B,EAC5BC,EAA0B,aAC1BC,EAAqC,GACrCC,EAA0B,GAC1BC,EAA0B,C,6ECHhC,SAASC,EACdb,EACAc,EACAC,GAEA,IAAK,MAAMb,KAAQF,EAAO,CACxB,MAAM5D,EAAU0E,EAAmBE,IAAId,EAAK3G,IAC5C2G,EAAKnH,MACHkI,KAAKC,KAAI9E,aAAO,EAAPA,EAAS+E,cAAe,EAAG,IACpCJ,EAAa,GACbA,EAAa,GACfb,EAAKlH,OACHiI,KAAKC,KAAI9E,aAAO,EAAPA,EAASgF,eAAgB,EAAG,IACrCL,EAAa,GACbA,EAAa,EACjB,CACF,CChBO,SAASM,EACdrB,EACAc,EACAC,GAEA,IAAK,MAAMb,KAAQF,EAAO,KAAAsB,EACxB,MAAMzB,EAAIK,EAAKL,EAAIK,EAAKnH,MAAQ,EAAIgI,EAAa,GAC3CjB,EAAII,EAAKJ,EAAII,EAAKlH,OAAS,EAAI+H,EAAa,GAE5CQ,EAA+C,QAAlCD,EAAGR,EAAmBE,IAAId,EAAK3G,WAAG,IAAA+H,OAAA,EAA/BA,EAAiC1C,cACnD2C,IACFA,EAActF,MAAMyD,KAAO,GAAGG,MAC9B0B,EAActF,MAAM2D,IAAM,GAAGE,MAC7ByB,EAActF,MAAMuF,WAAa,UAErC,CACF,C,0ECVO,SAASC,EACdC,EAAgChJ,GAQhC,IAPA,mBACEiJ,EAAkB,wBAClBC,GAIDlJ,EAED,OACEgJ,aAAK,EAALA,EAAO7D,KAAmBvD,IACxB,MAAM2E,EAAS0C,EAAmBX,IAAI1G,GAChCuH,EAAuB,CAAC,EAC9B,GAAI5C,EACF,IAAK,MAAMxD,IAAa,CAAiB,QAAS,OAAiB,CACjE,MAAMW,EAAUwF,EAAwBZ,IAAI,GAAG/B,KAAUxD,KACrDW,IACFyF,EAAUpG,GAAa,CAACW,EAAQ+E,YAAa/E,EAAQgF,cAEzD,CAGF,MAAO,CACLrC,KAAMzE,EACNuH,YACD,MACG,EAEV,CCiJA,SAASC,EAAcxH,EAAmByH,GACxC,OAAO,IAAIC,MAAMD,GAAOnI,KAAK,MAAMiE,KAAe,CAACoE,EAAGC,KAAM,CAC1DC,OAAO,EACP5I,GAAI,UAAUe,EAAK8H,UAAU9H,EAAK+H,UAAUH,OAEhD,CAEA,SAASI,EAAchI,EAAmByH,GACxC,OAAO,IAAIC,MAAMD,EAAQ,GAAGnI,KAAK,MAAMiE,KAAe,CAACoE,EAAGC,KAAM,CAC9DC,OAAO,EACPC,OACQ,IAANF,EAAU5H,EAAK8H,OAAS,UAAU9H,EAAK8H,UAAU9H,EAAK+H,UAAUH,EAAI,IACtEG,OACEH,IAAMH,EAAQzH,EAAK+H,OAAS,UAAU/H,EAAK8H,UAAU9H,EAAK+H,UAAUH,OAE1E,CCnLO,SAASK,EAAkB7J,GA4B/B,IA3BD8J,OAAQC,EAAc,MACtBzC,EAAK,MACL0B,EAAK,mBACLgB,EAAkB,cAClBC,EAAa,iBACbC,EAAgB,aAChBC,EAAY,mBACZ/B,EAAkB,wBAClBc,EAAuB,mBACvBD,EAAkB,cAClBmB,EAAa,mBACbC,EAAkB,cAClBC,GAeDtK,EACC,MAAM8J,EAAgC,YAAvBE,EAAmCD,EAAiB,UAC5DQ,EAAOC,IAAYvG,EAAAA,EAAAA,UAA8B,OAEjDwG,EAAiBC,IAAsBzG,EAAAA,EAAAA,UAA0B,CACtEqD,MAAO,GACP0B,MAAO,KA2DT,OAxDAhE,EAAAA,EAAAA,YAAU,KACHiF,GAGLO,GAAUG,GACG,UAAXb,EC9CC,SACLa,EACArD,EACA0B,EACA4B,GAEA,MAAM,YAAEC,KAAgBC,GAAsB,CAC5CD,YAAa,EACbE,QAAS,KACTC,QAAS,GACTC,QAAS,GACTC,QAAS,OAENC,EAAAA,EAAAA,MAAKP,EAAoB,CAC1B,cACA,UACA,UACA,UACA,UACA,WAGEvC,GAAe+C,EAAAA,EAAAA,GAAwBP,GAGvCN,EAAQ,IAAIc,IAAAA,SAAeC,OAGjCf,EAAMC,SAASM,GAGfP,EAAMgB,qBAAoB,WACxB,MAAO,CAAC,CACV,IAEA,IAAK,MAAM/D,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,IACjD0J,EAAMmB,QACJlE,EAAK3G,IACL2K,aAAY,EAAZA,EAAcnF,QAASmB,EACnBgE,EACA,CACE3K,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAGhB,CAEA,IAAK,MAAM5F,KAAQoH,GAAS,GAC1BuB,EAAMoB,QAAQ/J,EAAK8H,OAAQ9H,EAAK+H,OAAQ,CAAEtD,KAAMzE,IAGlD,MAAO,CACLkI,OAAQ,QACR2B,QAAQ5K,GACC0J,EAAM/C,KAAK3G,GAEpB+K,WAAAA,CAAW5L,GAIR,IAJS,mBACVoI,EAAkB,wBAClBc,EAAuB,mBACvBD,GACDjJ,EACC,MAAM6L,EAAgC,GACtC,IAAK,MAAMhL,KAAM0J,EAAMjD,QAAS,CAC9B,MAAME,EAAO+C,EAAM/C,KAAK3G,GACpB2G,EACFqE,EAAcC,KAAKtE,GAGnBuE,QAAQC,MAAM,6BAA8BnL,EAEhD,CAEA,GAA6B,IAAzBgL,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAEnD,MAAM6D,EAAgB3B,EACnBvB,QACA7D,KAAK/B,GAAMmH,EAAM3I,KAAKwB,KACzB,IAAK,MAAMxB,KAAQsK,EAAe,CAChC,MAAM3F,EAAS0C,EAAmBX,IAAI1G,EAAKyE,MAC3C,GAAIE,EACF,IAAK,MAAMxD,IAAa,CAAC,SAAU,QAAS,OAAiB,CAC3D,MAAMW,EAAUwF,EAAwBZ,IACtC,GAAG/B,KAAUxD,KAEf,GAAIW,EAAS,CACX,MAAM,YAAE+E,EAAW,aAAEC,GAAiBhF,EACpB,WAAdX,IACFnB,EAAKuK,SAAW,IAChBvK,EAAKvB,MAAQoI,EACb7G,EAAKtB,OAASoI,GAEhB9G,EAAKuH,YAALvH,EAAKuH,UAAc,CAAC,GACpBvH,EAAKuH,UAAUpG,GAAa,CAAC0F,EAAaC,EAC5C,CACF,CAEJ,CAKA,OAJA2C,IAAAA,OAAad,GAEb5B,EAAoBkD,EAAezD,EAAoBC,GAEhD,CACLf,MAAOuE,EACP7C,MAAOkD,EAEX,EAEJ,CDjEUE,CACEzB,EACArD,EACA0B,EACAsB,GAES,UAAXR,EDrBH,SACLa,EACArD,EACA0B,EACAkB,EACAmC,GAEA,MAAM,YAAExB,EAAW,kBAAEyB,EAAiB,QAAEC,GAAY,CAClD1B,YAAa,EACbyB,kBAAmB,MAChBnB,EAAAA,EAAAA,MAAKkB,EAAoB,CAAC,cAAe,sBAC5CE,SACkC,KAAhCF,aAAkB,EAAlBA,EAAoBE,UACf,CACCC,YAAa,EACbC,WAAY,EACZC,SAAU,EACVC,WAAY,MACwB,KAAhCN,aAAkB,EAAlBA,EAAoBE,SACpB,KACCF,aAAkB,EAAlBA,EAAoBE,UAI7BlE,GAAe+C,EAAAA,EAAAA,GAAwBP,GAEvCgB,EAAgC,GACtC,IAAK,MAAMrE,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,IACjD,IAAI2K,aAAY,EAAZA,EAAcnF,QAASmB,EACzBqE,EAAcC,KAAKN,OACd,CACL,MAAMoB,EAAe,CACnB/L,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAEFqF,EAAe3C,aAAgB,EAAhBA,EAAkB5B,IAAId,EAAK3G,IAC5CgM,IACFD,EAAaE,GAAKD,EAAa1F,EAC/ByF,EAAaG,GAAKF,EAAazF,GAEjCyE,EAAcC,KAAKc,EACrB,CACF,CAMA,MAAO,CACL9C,OAAQ,QACR2B,QANF,SAAiB5K,GACf,OAAOgL,EAAclF,MAAMa,GAASA,EAAKnB,KAAKxF,KAAOA,GACvD,EAKE+K,WAAAA,CAAW5L,GAIR,IAJS,mBACVoI,EAAkB,wBAClBc,EAAuB,mBACvBD,GACDjJ,EACC,GAA6B,IAAzB6L,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAEnD,MAAM2E,EAAanB,EAAc/G,QAC3BmI,EAA0B,GAEhC,IAAK,MAAMrL,KAAQoH,GAAS,GAC1BiE,EAAWnB,KAAK,IAAKlK,IACjB0K,EAAoB,IACtBU,EAAWlB,QACL1C,EACFxH,EACA0K,IAGJW,EAAWnB,QAAQlC,EAAchI,EAAM0K,KAI3C,MAAMY,GAAiBC,EAAAA,EAAAA,GAAgCF,GAAYpM,IAChEG,GAAMA,EAAEH,KAGPyL,EAAoB,GACtBY,EACGE,UAAUC,GAAOA,EAAE5D,MAAQ,IAAM6C,EAAoB,GAAK,KAC1DI,UAAUW,GAAOA,EAAE5D,MAAQ,GAAM,IAGtC,MAAM6D,GAAaC,EAAAA,EAAAA,GAA2BP,GAC3CQ,MAAM,OAAQN,GACdM,MAAM,KAAKC,EAAAA,EAAAA,MACXD,MAAM,KAAKE,EAAAA,EAAAA,MACXF,MAAM,UAAUG,EAAAA,EAAAA,MAEfpB,GACFe,EAAWE,MACT,WACAI,EAAAA,EAAAA,KACGC,QAAQ7M,GACPA,EAAEyI,MACE8C,EAAQC,YACRjE,KAAKuF,KAAK9M,EAAEX,OAAS,EAAIW,EAAEV,QAAU,GAAK,EAC1CiM,EAAQE,aAEbC,SAASH,EAAQG,UACjBC,WAAWJ,EAAQI,aAI1BW,EAAWS,OAejB,SACET,GAGAA,EAAWU,KACTzF,KAAK0F,KACH1F,KAAK2F,IAAIZ,EAAWa,YAAc5F,KAAK2F,IAAI,EAAIZ,EAAWc,eAGhE,CAvBMC,CAAqBf,GAErB3E,EAAoBkD,EAAezD,EAAoBC,GAEvD,MAAM6D,EAAgBnD,EAAiBC,EAAO,CAC5CC,qBACAC,4BAGF,MAAO,CAAE5B,MAAOuE,EAAe7C,MAAOkD,EACxC,EAEJ,CCrGYoC,CACE3D,EACArD,EACA0B,EACAkB,EACAI,GAES,WAAXR,EE7DL,SACLa,EACArD,EACA0B,EACAsB,GAEA,MAAM,YAAEO,GAAgB,CACtBA,YAAa,MACVM,EAAAA,EAAAA,MAAKb,EAAe,CAAC,iBAEpBjC,GAAe+C,EAAAA,EAAAA,GAAwBP,GAEvCgB,EAAgC,GACtC,IAAK,MAAMrE,KAAQF,GAAS,GAAI,CAC9B,MAAMkE,EAAeb,aAAa,EAAbA,EAAec,QAAQjE,EAAK3G,KAC7C2K,aAAY,EAAZA,EAAcnF,QAASmB,GACzBqE,EAAcC,KAAKN,GACnBA,EAAa+C,GAAK/C,EAAarE,EAC/BqE,EAAagD,GAAKhD,EAAapE,GAE/ByE,EAAcC,KAAK,CACjBjL,GAAI2G,EAAK3G,GACTwF,KAAMmB,GAGZ,CAMA,IAAIiH,EAEJ,MAAO,CACL3E,OAAQ,SACR2B,QARF,SAAiB5K,GACf,OAAOgL,EAAclF,MAAMa,GAASA,EAAKnB,KAAKxF,KAAOA,GACvD,EAOE+K,WAAAA,CAAW5L,GAMR,IANS,mBACVgK,EAAkB,mBAClB5B,EAAkB,wBAClBc,EAAuB,mBACvBD,EAAkB,aAClBkB,GACDnK,EACC,GAA6B,IAAzB6L,EAAcI,OAChB,OAAO,KAGT9D,EAAgB0D,EAAezD,EAAoBC,GAE/C8B,IACFsE,EAAY5C,EAAclF,MAAMa,GAASA,EAAK3G,KAAOsJ,EAAatJ,KAC9D4N,IACFA,EAAUtH,GAAKsH,EAAUF,IAAM,GAAKpE,EAAauE,KAAK,GACtDD,EAAUrH,GAAKqH,EAAUD,IAAM,GAAKrE,EAAauE,KAAK,KAI/B,aAAvB1E,GAAqCyE,IAEvCA,EAAUF,GAAKE,EAAUtH,EACzBsH,EAAUD,GAAKC,EAAUrH,GAG3BuB,EAAoBkD,EAAezD,EAAoBC,GAEvD,MAAM6D,EAAgBnD,EAAiBC,EAAO,CAC5CC,qBACAC,4BAGF,MAAO,CAAE5B,MAAOuE,EAAe7C,MAAOkD,EACxC,EAEJ,CFXcyC,CAAehE,EAAerD,EAAO0B,EAAOsB,GAC5C,MACT,GACA,CAACtB,EAAO1B,EAAOwC,EAAQQ,EAAeL,EAAeC,KAExDlF,EAAAA,EAAAA,YAAU,KACR,IACGoD,IACAc,GACDY,KAAWS,aAAK,EAALA,EAAOT,QAElB,OAEF,MAAMW,EAAkBF,aAAK,EAALA,EAAOqB,YAAY,CACzC5B,qBACA5B,qBACAc,0BACAD,qBACAkB,iBAEEM,GACFC,EAAmBD,EACrB,GACC,CACDX,EACAE,EACAO,EACAJ,EACA/B,EACAc,EACAkB,EACAC,EACApB,IAGKwB,CACT,C,sFGjGA,MAAMmE,EAAqB,0BAQpB,SAASC,EAAYC,GAC1B,MAAO7E,EAAe8E,IAAoB9K,EAAAA,EAAAA,WAAU6K,GAC9CE,GAAgBC,EAAAA,EAAAA,WACf/E,EAAkBgF,IACvBjL,EAAAA,EAAAA,UAAkC,MAC9BkL,GAAQ9K,EAAAA,EAAAA,UAAQ,ICzBjB,WACL,IAAI+K,GAAU,EACd,MAAMC,EAAuB,GAC7B,OAAOC,eAAqBC,GAE1B,GADAF,EAAavD,KAAKyD,IACbH,EAAS,CAEZ,IAAII,EACJ,IAFAJ,GAAU,EAEFI,EAAWH,EAAaI,SAC9B,UACQD,GACR,CAAE,MAAOxD,GAEPD,QAAQC,MAAMA,EAChB,CAEFoD,GAAU,CACZ,CACF,CACF,CDM8BM,IAAoB,IA8FhD,OA5FA1K,EAAAA,EAAAA,YAAU,MACRsK,iBACE,IAAKR,EAEH,YADAC,GAAiB,GAGnB,MAAM,UAAEY,EAAS,IAAErK,GAAQwJ,EAC3B,IAAMa,IAAarK,EAIjB,OAFAyG,QAAQC,MAAM,+DACd+C,GAAiB,GAGnB,IACE,MAAMa,SACEC,EAAAA,EAAAA,GAAyBjB,EAAoB,CACjDkB,OAAQ,CAAC,SACThB,MAAO,CACLa,UAAW,CACTI,IAAKJ,GAEPrK,IAAK,CACHyK,IAAKzK,IAGT0K,KAAM,EACNC,UAAW,MAEbL,KACF,GAAIA,EAAK3D,OAAS,EAAG,KAAAiE,EACnB,MAAMC,EAAWP,EAAK,GAChB1F,EAAmB,IAAI5F,IACb,QADgB4L,EAC9BC,EAAS7I,aAAK,IAAA4I,OAAA,EAAdA,EAAgB/K,KAAKqC,GAAS,CAACA,EAAK3G,GAAI2G,MAE1CwH,EAAcoB,QAAUD,EAASE,WACjCnB,EAAoBhF,EACtB,MACEgF,EAAoB,KAExB,CAAE,MAAOlD,IACPsE,EAAAA,EAAAA,iBAAgBtE,EAClB,CAAE,QACA+C,GAAiB,EACnB,CACF,CACAwB,EAAa,GACZ,CAACzB,IA8CG,CACL7E,gBACAC,mBACAsG,cA/CmBhM,EAAAA,EAAAA,cAClB8C,IACC,MAAM,UAAEqI,EAAS,IAAErK,GAAQwJ,GAAS,CAAC,EAC/Ba,GAAarK,GAGnB6J,GAAMG,UACJ,MAAMmB,EAAe,CACnBd,YACArK,MACAgC,SAEF,IACE,GAAI0H,EAAcoB,cACVM,EAAAA,EAAAA,GACJ9B,EACAI,EAAcoB,QACdK,EACA,CACEE,kBAAmB,CACjBC,kBAAkB,SAInB,CACL,MAAMT,QAAiBU,EAAAA,EAAAA,GACrBjC,EACA6B,EACA,CACEE,kBAAmB,CACjBC,kBAAkB,KAIxB5B,EAAcoB,QAAUD,EAASE,UACnC,CACF,CAAE,MAAOrE,IACPsE,EAAAA,EAAAA,iBAAgBtE,EAClB,IACA,GAEJ,CAAC8C,EAAOK,IAQZ,C,iBE7HO,SAAS2B,EACdrK,EACAyC,GAEA,IAAK,MAAM,GACTrI,EAAE,SACFkQ,EAAQ,UACRhO,EAAS,MACTiO,EACAC,KAAMC,KACHzK,EAAoB,CACvB,MAAMvB,EAAQgE,EAAwBZ,IAAIzH,GAC1C,GAAIqE,IACFA,EAAM3B,MAAMyD,KAAO,GAAG+J,EAAS,OAC/B7L,EAAM3B,MAAM2D,IAAM,GAAG6J,EAAS,OAC9B7L,EAAM3B,MAAMuF,WAAa,UAEP,WAAd/F,QAAoCxB,IAAVyP,GAAqB,CACjD,MAAO3Q,EAAOC,GAAU4Q,GAAS,CAAC,EAAG,GAU/BC,EAAgB5I,KAAK6I,OACvBJ,EAAQ,EAAc,EAAVzI,KAAK8I,GAASL,EAAQA,GAASzI,KAAK8I,GAAM,GAGpDC,EACU,UAAdvO,EAAwBoO,GAAiBA,EAAgB,GAAK,EAC1DI,EAAUhJ,KAAKiJ,IAAIR,GACnBS,EACJT,GAAwB,UAAdjO,EAAwB,GAAK,GAAKwF,KAAK8I,GAAM,EACnDK,EAAS,EACTC,EAAYpJ,KAAKqJ,IAAIH,GAAeC,EACpCG,EAAYtJ,KAAKuJ,IAAIL,GAAeC,EAC1C,IAAIK,EACJ,OAAQT,GACN,KAAK,EACHS,EAAY,eAAe1R,EAAQkR,EAAUI,OAC7C,MACF,KAAK,EACHI,EAAY,aAAazR,EAASiR,EAAUM,SAC5C,MACF,KAAK,EACHE,EAAY,kBACVzR,EAASiR,EAAUM,iBAErB,MACF,KAAK,EACHE,EAAY,oBAAoB1R,EAAQkR,EAAUI,OAClD,MACF,KAAK,EACHI,EAAY,yBACT1R,EAAQkR,EAAUI,eAErB,MACF,KAAK,EACHI,EAAY,mBACTzR,EAASiR,EAAUM,qBAEtB,MACF,KAAK,EACHE,EAAY,cAAczR,EAASiR,EAAUM,aAC7C,MACF,QACEE,EAAY,oBACV1R,EAAQkR,EAAUI,eAGxBzM,EAAM3B,MAAMwO,UAAYA,CAC1B,CAEJ,CACF,C,iCC1EO,SAASC,EACdvL,EACAyC,GAEA,MAAM/D,EAAqB,IAAIb,IAE/B,IAAK,MAAM,GAAEzD,EAAE,OAAE0F,EAAM,UAAExD,KAAe0D,EAAoB,CAC1D,IAAKyC,GAAyC,WAAdnG,EAC9B,SAEF,MAAMW,EAAUwF,EAAwBZ,IAAIzH,GAC5C,IAAK6C,EACH,SAEF,MAAM,YAAE+E,EAAW,aAAEC,GAAiBhF,EAGtC,GAEmB,IAAhB+E,GAAsC,IAAjBC,EAEtB,SAEF,MAAM3B,EAAU,EAEhB5B,EAAIxB,IAAI4C,EAAQ,CACd,CACES,KAAMtD,EAAQuO,WAAaxJ,EAAc,EAAI1B,EAC7CG,IAAKxD,EAAQwO,UAAYxJ,EAAe,EAAI3B,EAC5C1G,MAAOoI,EAAwB,EAAV1B,EACrBzG,OAAQoI,EAAyB,EAAV3B,IAG7B,CAEA,OAAO5B,CACT,C,iCCnCO,SAASgN,EACd1N,EACA2N,EACAtQ,GAEA,OAAwB,IAApB2C,EAASwH,QAAyC,IAAzBmG,EAAcnG,OAClCxH,EAEF2N,EAAcC,SACnBrS,IAA4D,IAAzD2B,MAAM,KAAE0D,EAAI,MAAEH,EAAK,IAAE1C,GAAK,KAAEZ,EAAI,UAAEuH,EAAS,MAAE6H,GAAOhR,EACrD,MAAMsS,EAAOxQ,EAAUwG,IAAI9F,GAC3B,IAAM6C,IAASH,IAAWoN,IAASA,EAAKC,aAAa,KACnD,MAAO,GAGT,IAAIjN,EACAsK,EACA1K,GACFI,EAAM,QACNsK,EAAQ,GAAuBjL,OAAOO,KAEtCI,EAAM,OACNsK,EAAQ,GAAqBjL,OAAOU,IAItC,MACE8B,EAAGH,EACHI,EAAGF,EAAG,MACN7G,EAAK,OACLC,GAGEgS,EAAKE,UAGHC,EACmCH,EAAKI,iBAE9C,OAAO9C,EAAKzK,KAAwByB,IAClC,MAAM7D,EAAY6D,EAAK7D,WAAa,SAG9B4P,EAGAL,EAAKM,iBACW,UAAd7P,EACIwF,KAAKsK,IAPF,EAOcJ,EAAa,GAChB,QAAd1P,EACEwF,KAAKC,IAAIiK,EATR,EAS6BA,EAAa,GAC3CA,EAAa,GAG3B,MAAO,CACL,CAACnN,GAAiBsB,EAClBhF,OACAmP,SAAU,CAAC4B,EAAMxL,EAAGwL,EAAMvL,GAC1BP,SAAU,CAAEG,OAAME,MAAK7G,QAAOC,UAC9BO,GAAI,GAAG2B,KAAOO,IACdwD,OAAQ/D,EACRO,YACAiO,QACAC,KAAM9H,aAAS,EAATA,EAAYpG,GACnB,GACD,GAGR,C,iHC3DO,SAAS+P,EACdC,EACAC,EACAC,EACAC,GAEA,IAAK5J,MAAM6J,QAAQJ,GACjB,MAAO,GAET,IAAIK,EACJ,OAAQJ,GACN,IAAK,cACHI,EAAeC,EAAAA,EACf,MACF,IAAK,aACHD,EAAeE,EAAAA,GACf,MACF,IAAK,aACHF,EAAeG,EAAAA,GACf,MACF,IAAK,iBACHH,EAAeI,EAAAA,EACf,MACF,IAAK,iBACHJ,EAAeK,EAAAA,EACf,MACF,IAAK,eACHL,EAAeM,EAAAA,EACf,MACF,QACEN,EAAeO,EAAAA,GAEnB,MAAMC,EAAeC,EAAWd,EAAO,GAAIA,EAAO,GAAIE,GAChDa,EAAaD,EACjBd,EAAOA,EAAO9G,OAAS,GACvB8G,EAAOA,EAAO9G,OAAS,GACvBiH,GAsBF,OApBqBvR,EAAAA,EAAAA,KAClBwF,GACC,CAACnG,EAAGgC,IACDhC,EAA+BmG,GACrB,IAAVnE,EACG4Q,EAAazM,EACbnE,IAAU+P,EAAO9G,OAAS,EACxB6H,EAAW3M,EACX,KAETC,GACC,CAACpG,EAAGgC,IACDhC,EAA+BoG,GACrB,IAAVpE,EACG4Q,EAAaxM,EACbpE,IAAU+P,EAAO9G,OAAS,EACxB6H,EAAW1M,EACX,KAET2M,MAAMX,EACFY,CAAajB,EACtB,CAEA,SAASc,EACPI,EACAC,EACAxC,GAEA,IAAKA,EACH,MAAO,CAAEvK,EAAG,EAAGC,EAAG,GAEpB,MAAQD,EAAGoH,EAAInH,EAAGoH,GAAOyF,GACjB9M,EAAGgN,EAAI/M,EAAGgN,GAAOF,EAEnBG,EAAQ3C,EADGnJ,KAAKuF,KAAKvF,KAAK+L,IAAIH,EAAK5F,EAAI,GAAKhG,KAAK+L,IAAIF,EAAK5F,EAAI,IAEpE,MAAO,CACLrH,GAAIgN,EAAK5F,GAAM8F,EACfjN,GAAIgN,EAAK5F,GAAM6F,EAEnB,C,cCxDA,SAASE,EACP/M,EACA8J,EACAP,GAEA,MAAM,EAAE5J,EAAC,EAAEC,EAAC,MAAE/G,EAAK,OAAEC,GAAWkH,EAChC,OAAQ8J,GACN,IAAK,MACH,MAAO,CACLnK,EAAGA,EAAI9G,EAAQ,EAAIA,EAAQ0Q,EAC3B3J,EAAGA,EAAI9G,EAAS,GAEpB,IAAK,SACH,MAAO,CACL6G,EAAGA,EAAI9G,EAAQ,EAAIA,EAAQ0Q,EAC3B3J,EAAGA,EAAI9G,EAAS,GAEpB,IAAK,OACH,MAAO,CACL6G,EAAGA,EAAI9G,EAAQ,EACf+G,EAAGA,EAAI9G,EAAS,EAAIA,EAASyQ,GAEjC,IAAK,QACH,MAAO,CACL5J,EAAGA,EAAI9G,EAAQ,EACf+G,EAAGA,EAAI9G,EAAS,EAAIA,EAASyQ,GAGrC,C,aCnDO,SAASyD,EACdtI,EACAL,EACA4I,GAEA,MAAMC,EAAkB,IAAIC,QACtBC,EAAkB,IAAItQ,IACtBuQ,EAAe,IAAIvQ,IAEzB,IAAK,MAAMsI,KAAgBf,EACzB+I,EAAgBjR,IAAIiJ,EAAa/L,GAAI+L,GAGvC,IAAK,MAAMkI,KAAgB5I,EAAe,CACxC,MAAQ7F,KAAMzE,GAASkT,EACvBJ,EAAgB/Q,IAAI/B,EAAMkT,EAC5B,CAEA,IAAIC,GAAW,EA4Bf,OAAON,EACJtP,KAA8BnF,IAAsC,IAAAgV,EAAAC,EAAA,IAArC,KAAEtT,EAAI,KAAEC,EAAI,QAAEC,KAAYqT,GAAMlV,EAC9D,MAAM8U,EAAeJ,EAAgBpM,IAAI1G,GACzC,IAAKkT,EACH,OAEF,MAAMK,GAIH,QAHDH,EAAAnT,EAAQ8E,MACL9D,GACoB,YAAnBA,EAAOC,SAA8C,UAArBD,EAAOE,mBAC1C,IAAAiS,OAAA,EAHDA,EAGGtD,SAAU,EACT0D,GAGH,QAFDH,EAAApT,EAAQ8E,MACL9D,GAA8B,YAAnBA,EAAOC,SAA8C,QAArBD,EAAOE,mBACpD,IAAAkS,OAAA,EAFDA,EAEGvD,SAAU,EACf,IAAIV,GAEA,OAAE+B,GAAW+B,EAEjB,IAAK/B,EAAQ,CACX,MAAMrJ,EAASkL,EAAgBtM,IAAI1G,EAAK8H,QAClCC,EAASiL,EAAgBtM,IAAI1G,EAAK+H,QAExC,GAAID,GAAUC,GAAUD,IAAWC,EAAQ,CACzC,GAAkB,aAAdhI,EAAKf,MACP,KACGyU,EAAAA,EAAAA,GACC3L,EACAC,EACAwL,EACAC,GAEF,CA3DgBE,MAC1B,GAAIP,EACF,OAEFA,GAAW,EAEX,MAAMQ,EAAkBA,CAAC7U,EAAc8U,KACrC,IAAIC,EAAUZ,EAAavM,IAAI5H,GAC1B+U,GACHZ,EAAalR,IAAIjD,EAAO+U,EAAU,IAAIC,KAExC,MAAMC,EAASf,EAAgBtM,IAAIkN,GAC/BG,GACFF,EAAQG,IAAID,EACd,EAGF,IAAK,MACHtP,MAAM,OAAEqD,EAAM,OAAEC,MACbuC,EACCxC,IAAWC,IACb4L,EAAgB7L,EAAQC,GACxB4L,EAAgB5L,EAAQD,GAE5B,EAoCU4L,GACA,MAAMO,EAAkBC,EACtBpM,EACAC,EACAwL,GAEIY,EAAkBD,EACtBnM,EACAD,EACA0L,GAEIY,EAAgBC,EACpBpB,EAAavM,IAAI1G,EAAK8H,SAAW,GACjCA,EACAmM,EACAV,GAEIe,EAAgBD,EACpBpB,EAAavM,IAAI1G,EAAK+H,SAAW,GACjCA,EACAoM,EACAX,GAUFrC,ED1HP,SACLrJ,EACAC,EACAkM,EACAE,EACAI,EACAC,GAEA,MAAMC,EAAK9B,EAAe7K,EAAQmM,EAAiBM,GAC7CG,EAAK/B,EAAe5K,EAAQoM,EAAiBK,GAEnD,IAAIG,EACAC,EACJ,OAAQX,GACN,IAAK,MACL,IAAK,SAGCU,EAAK,CAAEpP,EAAGkP,EAAGlP,EAAGC,GAAIiP,EAAGjP,EAAIkP,EAAGlP,GAAK,GACnCoP,EAAK,CAAErP,EAAGmP,EAAGnP,EAAGC,EAAGmP,EAAGnP,GAG1B,MACF,QAGMmP,EAAK,CAAEpP,GAAIkP,EAAGlP,EAAImP,EAAGnP,GAAK,EAAGC,EAAGiP,EAAGjP,GACnCoP,EAAK,CAAErP,EAAGoP,EAAGpP,EAAGC,EAAGkP,EAAGlP,GAK9B,MAAO,CAACiP,EAAIE,EAAIC,EAAIF,EACtB,CCyFuBG,CACP/M,EACAC,EACAkM,EACAE,GAVCC,EAAcnR,QAAQ8E,GAAU,IAChCqM,EAAc/J,OAAS,IAEvBiK,EAAcrR,QAAQ6E,GAAU,IAChCwM,EAAcjK,OAAS,GAU5B,OAEA8G,GAAS2D,EAAAA,EAAAA,GAAoBhN,EAAQC,GAGvC,GAAIoJ,EAAQ,CACV,MAAMkB,EAAQlB,EAAO,GACfmB,EAAMnB,EAAOA,EAAO9G,OAAS,GACnC+E,EAAQzI,KAAKoO,MAAMzC,EAAI9M,EAAI6M,EAAM7M,EAAG8M,EAAI/M,EAAI8M,EAAM9M,EACpD,CACF,CACF,CAQA,MAAO,IACF+N,EACHrT,UACAF,OACAC,OACAZ,EAXQ8R,EACRC,EACApR,EAAKqR,UACLmC,EACAC,GAQApE,QACA7H,UAAW2L,EAAa3L,UACzB,IAEFyN,OAAOC,QACZ,CAEA,SAASf,EACPpM,EACAC,EACA5C,GAGA,MAAM+P,EAAcvO,KAAKoO,MACvBjN,EAAOpJ,OAAmB,EAAVyG,EAChB2C,EAAOrJ,MAAkB,EAAV0G,IAETI,EAAG4P,EAAI3P,EAAG4P,GAAOtN,GACjBvC,EAAG8P,EAAI7P,EAAG8P,GAAOvN,EACnBqH,EAAQzI,KAAKoO,MAAMO,EAAKF,EAAIC,EAAKF,GACjCI,EAAanG,EAAQ,EAAc,EAAVzI,KAAK8I,GAASL,EAAQA,EAErD,OADkBzI,KAAK6I,MAAO+F,EAAa5O,KAAK8I,GAAM,IAEpD,KAAK,EACH,OAAO8F,EAAaL,EAAc,QAAU,SAC9C,KAAK,EACH,OAAOK,EAAa5O,KAAK8I,GAAKyF,EAAc,SAAW,OACzD,KAAK,EACH,OAAOK,EAAa5O,KAAK8I,GAAKyF,EAAc,OAAS,MACvD,QACE,OAAOK,EAAuB,EAAV5O,KAAK8I,GAASyF,EAAc,MAAQ,QAE9D,CAEA,SAASb,EACPR,EACA/U,EACA4Q,EACAvK,GAEA,MAAO,IAAI0O,GACRmB,QAAQpP,GAASsO,EAAapV,EAAM8G,EAAMT,KAAauK,IACvD8F,MAAK,CAACC,EAAGC,KACR,MAAQnQ,EAAGoQ,EAAInQ,EAAGoQ,GAAOH,GACjBlQ,EAAGsQ,EAAIrQ,EAAGsQ,GAAOJ,EACzB,MAAqB,QAAdhG,GAAqC,WAAdA,EAAyBiG,EAAKE,EAAKD,EAAKE,CAAE,GAE9E,C,gDChLO,SAASC,EACdC,EAAoB5X,GAQQ,IAP5B,cACE6L,EAAa,aACbgM,GAID7X,EAED,MAAM8X,EACmB,UAAvBD,aAAY,EAAZA,EAAcjX,MACViL,EAAclF,MAAMa,GAASA,EAAK3G,KAAOgX,EAAaE,cACtDxW,EACAyW,EACmB,UAAvBH,aAAY,EAAZA,EAAcjX,MAAkBiX,EAAajW,UAAOL,EAEtD,IAAKuW,IAAeE,EAClB,OAGF,MAAM1S,EACJsS,EAAMtS,KACoCsS,EAAMK,SACNL,EAAMM,MAClD,IAAIC,EACA3Q,EACA5F,EAEJ,OAAQ0D,GACN,IAAK,YACL,KAAK,EACL,IAAK,SACL,KAAK,GACCwS,GACFK,EAAS,cACT3Q,EAAOsQ,IAEPK,EAAS,cACTvW,EAAOoW,GAET,MAEF,QACE,IAAKF,EACH,OAEF,OAAQxS,GACN,IAAK,YACL,KAAK,GACHkC,EAAO4Q,EAAW,IAAKvM,EAAeiM,GAAa,GACnDK,EAAS,qBACT,MAEF,IAAK,UACL,KAAK,GACH3Q,EAAO4Q,EAAW,IAAKvM,EAAeiM,GAAa,GACnDK,EAAS,qBACT,MAEF,IAAK,aACL,KAAK,GACH3Q,EAAO4Q,EAAW,IAAKvM,EAAeiM,EAAY,GAClDK,EAAS,qBACT,MAEF,IAAK,YACL,KAAK,GACH3Q,EAAO4Q,EAAW,IAAKvM,EAAeiM,EAAY,GAClDK,EAAS,sBAKL,IAAAE,EAAZ,OAAIF,GACFP,EAAMvU,iBACNuU,EAAMtU,kBACC,CAAE6U,SAAQ3Q,KAAU,QAAN6Q,EAAE7Q,SAAI,IAAA6Q,OAAA,EAAJA,EAAMhS,KAAMzE,cAHrC,CAKF,CAEA,SAASwW,EACPE,EACAzM,EACAiM,EACAxG,GAEA,MAAMiH,EAAwB,MAATD,EAAe,IAAM,IAC1C,IAAIE,EACJ,MAAMC,EAAa5M,EAAc+K,QAC9BpP,GACCA,IAASsQ,IACPU,GAAQhR,EAAK8Q,GAAQR,EAAWQ,IAAShH,EAAYkH,EAAO,IAC9DA,EAAOjQ,KAAKmQ,IAAIZ,EAAWS,GAAgB/Q,EAAK+Q,MAEpD,OAAOI,EAAAA,EAAAA,OACLF,GACCjR,IACEsQ,EAAWS,GAAgB/Q,EAAK+Q,KAAkB,GAClDT,EAAWQ,GAAQ9Q,EAAK8Q,KAAU,GAEzC,C,yDC7GO,SAASM,EACdhB,EAAiB5X,GA8BjB,IA7BA,MACEsH,EAAK,mBACLc,EAAkB,aAClByQ,EAAY,UACZC,EAAS,MACTC,EAAK,oBACLC,EAAmB,iBACnBC,EAAgB,sBAChBC,EAAqB,gBACrBC,EAAe,qBACfC,EAAoB,eACpBC,GAiBDrZ,EAED,SAASsZ,EAASC,GAChB,GAAInR,EACF,IAAK,MAAOvH,EAAI6C,KAAY0E,EAC1B,GAAImR,EAAM7V,GACR,OAAO4D,aAAK,EAALA,EAAOX,MAAMa,GAASA,EAAK3G,KAAOA,GAIjD,CAEA,IAAKgY,IAAiBC,EACpB,OAGF,MAAMpP,EAAS4P,GAAU5V,GACvBA,EAAQ8V,SAAS5B,EAAMjO,UAGzB,IAAKD,EACH,OAGF,IAwEF,SACE3I,EACA2I,GAEA,OAAO3I,EAAQ0Y,WACV,GAAiB9U,OAAO5D,EAAQ0Y,YAAY/U,SAASgF,EAAO9I,OAC7DmF,EAAAA,EAAAA,oBAAmBhF,EAAS,CAAE2I,UACpC,CA/EOgQ,CAAYb,GAAgBC,EAAYpP,GAC3C,OAGFkO,EAAMtU,kBACN,MAAM5C,EAAsB,CAACkX,EAAM+B,QAAS/B,EAAMgC,SAElD,GAAIf,EAAc,CAChBG,EAAoB,CAClBtY,OACAK,QAAS,CACPD,YAAa+G,EAAAA,GACbzG,YAAa0G,EAAAA,MACT+R,EAAAA,mBAAmBC,kBACrB,CAAEpQ,UACFmP,MAINI,EAAiBvY,GAEjB0Y,SAAAA,EAAuB,CAAExY,KAAM,OAAQmX,OAAQrO,EAAO7I,KAEtD,MAAMkZ,EAAe3W,IACnB6V,EAAiB,CAAC7V,EAAEuW,QAASvW,EAAEwW,SAAS,EAEpCI,EAAa5W,IACjB6W,SAASC,oBAAoB,YAAaH,GAC1CE,SAASC,oBAAoB,UAAWF,GACxChB,EAAoB,MACpB,MAAMmB,EAAe/W,EAAEgX,eACjBzQ,EAAS2P,GAAU5V,GAAYyW,EAAazV,SAAShB,KACvDiG,GAAUD,IAAWC,IACvB0P,SAAAA,EAAiB,CAAE3P,SAAQC,WAC7B,EAIF,OAFAsQ,SAASI,iBAAiB,YAAaN,QACvCE,SAASI,iBAAiB,UAAWL,EAEvC,CAGAZ,SAAAA,EAAuB,CAAExY,KAAM,OAAQmX,OAAQrO,EAAO7I,KAEtD,IAAIyZ,GAAQ,EACZ,MAAMP,EAAe3W,IAEnB,MAAMmX,EAA0B,EAC7BnX,EAAEuW,QAAUjZ,EAAK,IAAMqY,GACvB3V,EAAEwW,QAAUlZ,EAAK,IAAMqY,GAErBuB,IACHA,EAAQC,EAAS,IAAM,EAAIA,EAAS,IAAM,GAAK,EAC3CD,GACFpB,EAAsB,YAGtBoB,GACFnB,EAAgB,CAAEtY,GAAI6I,EAAO7I,GAAI6N,KAAM6L,GACzC,EAEIP,EAAYA,KAChBM,GAAQ,EACRL,SAASC,oBAAoB,YAAaH,GAC1CE,SAASC,oBAAoB,UAAWF,GACxCb,EAAgB,MAChBD,EAAsB,WAAW,EAEnCe,SAASI,iBAAiB,YAAaN,GACvCE,SAASI,iBAAiB,UAAWL,EACvC,C,yDC7IO,SAASQ,EACd5Y,EACAgV,GAEA,QAAKA,IAGDA,EAAO6D,SACD,GAAgB9V,OAAOiS,EAAO6D,UAAU/V,SAAS9C,EAAKhB,OAEzDmF,EAAAA,EAAAA,oBAAmB6Q,EAAQ,CAAEhV,SACtC,C,cCKO,SAAS8Y,EACd1R,EACA2R,GAEA,MAAMlG,EAAoC,GACpCxL,EAAqB,IAAI0L,QACzB9S,EAAwB,GAC9B,IAAK,MAAMD,KAAQoH,GAAS,GAAI,CAC9B,MAAM,MAAE9D,KAAU0V,IAChBD,aAAK,EAALA,EAAOhU,MAAMhF,GAAS6Y,EAAkB5Y,EAAMD,OAAU,CAAC,EAErDkZ,EAAmBhB,EAAAA,mBAAmBC,kBAC1C,CAAElY,QACFgZ,GAEF,IAA+B,KAA3BC,aAAgB,EAAhBA,EAAkBC,MACpB,SAEF,MAAMja,GAAKka,EAAAA,EAAAA,UAAS,SACdpZ,EAA+B,CACnCb,YAAa+G,EAAAA,GACbzG,YAAa0G,EAAAA,GACbkL,UAC6B,cAA3B6H,aAAgB,EAAhBA,EAAkBja,MACd,cACAmH,EAAAA,GACNtF,oBAAqBuF,EAAAA,GACrBpH,KAAM,UACHia,EACH3V,QACA1C,IAAK3B,GAEPoI,EAAmBtF,IAAI/B,EAAMf,GAE7B,MAAMma,EAA4C,GAE5CC,EACJtZ,EAAKE,UAAYF,EAAKL,MAAQ,CAAC,CAAEyB,UAAW,MAAOnC,KAAM,UAAa,IACxE,IAAK,MAAMiC,KAAUoY,EAAa,KAAAxZ,EAAAC,EAChC,MAAQqB,UAAWmY,EAAYta,KAAMua,GAAUtY,EACzCE,EAAYmY,GAAc,MAEhC,IAAIta,EACAwa,EAEJ,OAAQD,GACN,IAAK,OACL,IAAK,OACHC,EAAa,GACbxa,EAAOua,EACP,MACF,QACEC,EAAa,EACbxa,EAAO,QAEX,MAAM8Q,EAAS0J,EAAazZ,EAAKP,YAE3B4B,EAAQqY,EAAU,CAAEza,OAAME,YAAaa,EAAKb,aAAee,GACjEmZ,EAAkBlP,KAAK,CACrB9I,QACAD,YACAnC,OACAkC,QAAS,UACT4O,WAGF,MAEM4J,EAAoBD,EACxB,CAAEza,OAAME,aAFM,QAAdW,EAAAE,EAAKe,iBAAS,IAAAjB,GAAQ,QAARA,EAAdA,EAAgBS,cAAM,IAAAT,OAAA,EAAtBA,EAAwBX,cAAea,EAAKb,aAG5Ce,GAEFmZ,EAAkBlP,KAAK,CACrB9I,MAAOsY,EACPvY,YACAnC,OACAkC,QAAS,SACT4O,WAEF,MAEM6J,EAA2BF,EAC/B,CAAEza,OAAME,aAFM,QAAdY,EAAAC,EAAKe,iBAAS,IAAAhB,GAAe,QAAfA,EAAdA,EAAgBS,qBAAa,IAAAT,OAAA,EAA7BA,EAA+BZ,cAAea,EAAKb,aAGnDe,GAEFmZ,EAAkBlP,KAAK,CACrB9I,MAAOuY,EACPxY,YACAnC,OACAkC,QAAS,iBACT4O,UAEJ,CAEA+C,EAAgB3I,KAAK,CACnBnK,OACAE,QAASmZ,EACTpZ,QAEJ,CACA,MAAO,CACL6S,kBACAxL,qBACApH,UAEJ,CAEA,SAASwZ,EAAUxY,EAAoBhB,GACrC,IAAI2Z,GAAcC,EAAAA,EAAAA,WAAU5Z,EAASgB,GAIrC,OAHqB,IAAjB2Y,IACFA,EAAc3Z,EAAQiK,KAAKjJ,GAAU,GAEhC2Y,CACT,C,iBC9HO,SAASE,EACdrE,EACAC,GAEA,OAAOD,IACDC,GACAD,EAAEzW,OAAS0W,EAAE1W,OACD,SAAXyW,EAAEzW,KACCyW,EAAEU,SAAYT,EAAyBS,OACvCV,EAAEzV,KAAK8H,SAAY4N,EAAyB1V,KAAK8H,QACjD2N,EAAEzV,KAAK+H,SAAY2N,EAAyB1V,KAAK+H,SACtD2N,CACP,C,iCCVO,SAASqE,EACd9P,EAA6B7L,GAEX,IADlB,YAAE4b,EAAW,aAAEC,EAAY,WAAEC,GAAsC9b,EAE/DgH,EAAO+U,IACP7U,EAAM6U,IACNC,GAAQ,IACRC,GAAS,IACb,IAAK,MAAMzU,KAAQqE,EAAe,CAChC,MAAMqQ,EAAK1U,EAAKnH,MAAQ,EAClB8b,EAAK3U,EAAKlH,OAAS,EACnB+M,EAAI7F,EAAKL,EAAI+U,EACbE,EAAI5U,EAAKL,EAAI+U,EACbG,EAAI7U,EAAKJ,EAAI+U,EACb7E,EAAI9P,EAAKJ,EAAI+U,EACf9O,EAAIrG,IACNA,EAAOqG,GAEL+O,EAAIJ,IACNA,EAAQI,GAENC,EAAInV,IACNA,EAAMmV,GAEJ/E,EAAI2E,IACNA,EAAS3E,EAEb,CAEA,MAAMjX,EAAQ2b,EAAQhV,EAChB1G,EAAS2b,EAAS/U,EAElB6R,EACJ+C,IAAezb,EAAQub,GAAetb,EAASub,GAC3CtT,KAAKC,IACHD,KAAKsK,IAAI+I,EAAcvb,EAAOwb,EAAevb,EAAQwb,EAAW,IAChEA,EAAW,IAEb,EAKN,MAAO,CAAE3U,GAHEyU,EAAcvb,EAAQ0Y,GAAS,EAAI/R,EAAO+R,EAGzC3R,GAFDyU,EAAevb,EAASyY,GAAS,EAAI7R,EAAM6R,EAEvCuD,EAAGvD,EACpB,C,iFCjDIwD,E,MAA0B,GAA4B,KAE1DA,EAAwBzQ,KAAK,CAAC0Q,EAAO3b,GAAI,s0BAImX,KAE5Z,QAAe0b,EAAwBE,U","sources":["webpack:///./src/diagram/ConnectLineComponent.tsx","webpack:///./src/diagram/LineComponent.tsx","webpack:///./src/diagram/LineLabelComponent.tsx","webpack:///./src/diagram/LineMaskComponent.tsx","webpack:///./src/diagram/NodeComponent.tsx","webpack:///./src/diagram/processors/findNodeBrick.ts","webpack:///./src/diagram/constants.ts","webpack:///./src/diagram/processors/adjustNodesSize.ts","webpack:///./src/diagram/processors/adjustNodesPosition.ts","webpack:///./src/diagram/processors/getRenderedEdges.ts","webpack:///./src/diagram/processors/getForceGraph.ts","webpack:///./src/diagram/hooks/useRenderedDiagram.ts","webpack:///./src/diagram/processors/getDagreGraph.ts","webpack:///./src/diagram/processors/getManualGraph.ts","webpack:///./src/diagram/hooks/useUserView.ts","webpack:///./src/diagram/processors/createAsyncQueue.ts","webpack:///./src/diagram/processors/adjustLineLabels.ts","webpack:///./src/diagram/processors/getLineMaskRects.ts","webpack:///./src/diagram/processors/getRenderedLineLabels.ts","webpack:///./src/diagram/lines/curveLine.ts","webpack:///./src/diagram/lines/getPolyLinePoints.ts","webpack:///./src/diagram/processors/getRenderedLines.ts","webpack:///./src/diagram/processors/handleKeyboard.ts","webpack:///./src/diagram/processors/handleNodesMouseDown.ts","webpack:///./src/diagram/processors/matchEdgeByFilter.ts","webpack:///./src/diagram/processors/normalizeLinesAndMarkers.ts","webpack:///./src/diagram/processors/sameTarget.ts","webpack:///./src/diagram/processors/transformToCenter.ts","webpack:///./src/diagram/styles.shadow.css"],"sourcesContent":["import React from \"react\";\nimport classNames from \"classnames\";\nimport type { ConnectLineState, PositionTuple } from \"./interfaces\";\nimport { MarkerComponent } from \"./MarkerComponent\";\n\nexport interface ConnectLineComponentProps {\n connectLineState: ConnectLineState | null;\n connectLineTo: PositionTuple;\n markerPrefix: string;\n}\n\nexport function ConnectLineComponent({\n connectLineState,\n connectLineTo,\n markerPrefix,\n}: ConnectLineComponentProps): JSX.Element {\n return (\n <svg\n width=\"100%\"\n height=\"100%\"\n className={classNames(\"connect-line\", {\n connecting:\n !!connectLineState &&\n // Do not show when the distance of mouse move is less than 5px\n (connectLineTo[0] - connectLineState.from[0]) ** 2 +\n (connectLineTo[1] - connectLineState.from[1]) ** 2 >\n 25,\n })}\n >\n <defs>\n <MarkerComponent\n type=\"arrow\"\n id={`${markerPrefix}connect-line`}\n strokeColor={connectLineState?.options.strokeColor}\n />\n </defs>\n <path\n d={\n connectLineState\n ? `M${connectLineState.from.join(\" \")}L${connectLineTo.join(\" \")}`\n : \"\"\n }\n fill=\"none\"\n stroke={connectLineState?.options.strokeColor}\n strokeWidth={connectLineState?.options.strokeWidth}\n markerEnd={\n connectLineState?.options.arrow\n ? `url(#${markerPrefix}connect-line)`\n : undefined\n }\n />\n </svg>\n );\n}\n","import React from \"react\";\nimport classNames from \"classnames\";\nimport type { LineTarget, RenderedLine, LineMaskRects } from \"./interfaces\";\n\nexport interface LineComponentProps {\n line: RenderedLine;\n linePaths: Map<string, SVGPathElement | null>;\n lineMaskRects: LineMaskRects;\n maskPrefix: string;\n markerPrefix: string;\n activeLineMarkerPrefix: string;\n active?: boolean;\n activeRelated?: boolean;\n onLineClick?(line: LineTarget): void;\n onLineDoubleClick?(line: LineTarget): void;\n}\n\nexport function LineComponent({\n line: { line, edge, d, markers },\n linePaths,\n lineMaskRects,\n maskPrefix,\n markerPrefix,\n activeLineMarkerPrefix,\n active,\n activeRelated,\n onLineClick,\n onLineDoubleClick,\n}: LineComponentProps): JSX.Element {\n const mask = lineMaskRects.has(line.$id)\n ? `url(#${maskPrefix}${line.$id})`\n : undefined;\n\n const { strokeColor, strokeWidth, interactStrokeWidth } = {\n ...line,\n ...(active\n ? line.overrides?.active\n : activeRelated\n ? line.overrides?.activeRelated\n : null),\n };\n\n const expectVariant = active\n ? \"active\"\n : activeRelated\n ? \"active-related\"\n : \"default\";\n\n let markerStart: string | undefined;\n let markerEnd: string | undefined;\n\n for (const marker of markers) {\n if (marker.variant === expectVariant) {\n if (marker.placement === \"start\") {\n markerStart = `url(#${markerPrefix}${marker.index})`;\n } else {\n markerEnd = `url(#${markerPrefix}${marker.index})`;\n }\n }\n }\n\n return (\n <g\n className={classNames(\"line\", {\n interactable: line.interactable,\n active,\n \"active-related\": activeRelated,\n })}\n onClick={\n line.interactable\n ? () => {\n onLineClick?.({ id: line.$id, edge });\n }\n : undefined\n }\n onDoubleClick={\n line.interactable\n ? (e) => {\n e.preventDefault();\n e.stopPropagation();\n onLineDoubleClick?.({ id: line.$id, edge });\n }\n : undefined\n }\n style={{ cursor: line.cursor }}\n >\n {line.interactable && (\n <path\n // This `path` is made for expanding interaction area of graph lines.\n d={d}\n fill=\"none\"\n stroke=\"transparent\"\n strokeWidth={interactStrokeWidth}\n />\n )}\n <path\n ref={(element) => linePaths.set(line.$id, element)}\n stroke={strokeColor}\n strokeWidth={strokeWidth}\n d={d}\n fill=\"none\"\n markerStart={markerStart}\n markerEnd={markerEnd}\n mask={mask}\n />\n <path\n stroke=\"var(--palette-blue-3)\"\n strokeWidth={strokeWidth}\n d={d}\n fill=\"none\"\n className=\"active-bg\"\n markerStart={`url(#${activeLineMarkerPrefix}start)`}\n markerEnd={`url(#${activeLineMarkerPrefix}end)`}\n mask={mask}\n />\n </g>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineLabelConf,\n // PositionTuple,\n RefRepository,\n LineLabel,\n TextOptions,\n} from \"./interfaces\";\n\nexport interface LineLabelComponentGroupProps {\n labels?: LineLabel[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function LineLabelComponentGroup({\n labels,\n onRendered,\n}: LineLabelComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<string[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: string, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: string) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!labels?.some((label) => !renderedIds.includes(label.id)));\n }, [labels, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {labels?.map(({ text, label, /* position, */ id, edge }) =>\n label ? (\n <div\n key={id}\n className=\"line-label\"\n // style={{\n // left: position[0],\n // top: position[1],\n // }}\n >\n <LineLabelComponent\n id={id}\n edge={edge}\n label={label}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ) : (\n <LineTextComponent\n key={id}\n id={id}\n text={text!}\n // position={position}\n onRendered={handleRenderer}\n />\n )\n )}\n </React.Fragment>\n );\n}\n\nexport interface LineTextComponentProps {\n id: string;\n text: TextOptions;\n // position: PositionTuple;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n // onUnmount?: (id: string) => void;\n}\n\nexport function LineTextComponent({\n id,\n text,\n // position,\n onRendered /* , onUnmount */,\n}: LineTextComponentProps): JSX.Element {\n const refCallback = useCallback(\n (element: HTMLDivElement) => {\n onRendered?.(id, element);\n },\n [id, onRendered]\n );\n\n return (\n <div\n className=\"line-label\"\n ref={refCallback}\n // style={{\n // left: position[0],\n // top: position[1],\n // ...text!.style,\n // }}\n style={text.style}\n >\n {text!.content}\n </div>\n );\n}\n\n// export const LineLabelComponentGroup = React.memo(LegacyLineLabelComponentGroup);\n\nexport interface LineLabelComponentProps {\n id: string;\n edge: DiagramEdge;\n label: LineLabelConf;\n onRendered?: (id: string, element: HTMLElement | null) => void;\n onUnmount?: (id: string) => void;\n}\n\nexport function LineLabelComponent({\n id,\n edge,\n label,\n onRendered,\n onUnmount,\n}: LineLabelComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => (checkIfByTransform(label, { edge }) ? label.useBrick : null),\n [edge, label]\n );\n\n const memoizedData = useMemo(() => ({ edge }), [edge]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }\n }, [id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(id, element.parentElement);\n });\n }\n },\n [id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(id, null);\n });\n }, [id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import React from \"react\";\nimport type { RenderedLineLabel, SimpleRect } from \"./interfaces\";\n\nexport interface LineMaskComponentProps {\n maskPrefix: string;\n lineId: string;\n rects: SimpleRect[];\n renderedLineLabels: RenderedLineLabel[];\n}\n\nexport function LineMaskComponent({\n lineId,\n rects,\n maskPrefix,\n renderedLineLabels,\n}: LineMaskComponentProps): JSX.Element | null {\n const lineText = renderedLineLabels.find(\n (item) => item.lineId === lineId && item.placement === \"center\"\n );\n // istanbul ignore next\n if (!lineText) {\n return null;\n }\n const { lineRect } = lineText;\n const bgRect = getRectWithPadding(lineRect, 1000);\n return (\n <mask\n id={`${maskPrefix}${lineId}`}\n x={bgRect.left}\n y={bgRect.top}\n width={bgRect.width}\n height={bgRect.height}\n >\n <rect\n x={bgRect.left}\n y={bgRect.top}\n width={bgRect.width}\n height={bgRect.height}\n // Everything under a white pixel will be visible\n fill=\"white\"\n />\n {rects.map((rect, index) => (\n <rect\n key={index}\n x={rect.left}\n y={rect.top}\n width={rect.width}\n height={rect.height}\n // Everything under a black pixel will be invisible\n fill=\"black\"\n />\n ))}\n </mask>\n );\n}\n\nfunction getRectWithPadding(rect: SimpleRect, padding: number): SimpleRect {\n return {\n left: rect.left - padding,\n top: rect.top - padding,\n width: rect.width + padding * 2,\n height: rect.height + padding * 2,\n };\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ReactUseBrick } from \"@next-core/react-runtime\";\nimport type {\n DiagramNode,\n DiagramNodeId,\n NodeBrickConf,\n RefRepository,\n} from \"./interfaces\";\nimport { findNodeBrick } from \"./processors/findNodeBrick\";\n\nexport interface NodeComponentGroupProps {\n nodes?: DiagramNode[];\n nodeBricks?: NodeBrickConf[];\n onRendered?: (refRepository: RefRepository | null) => void;\n}\n\nexport function NodeComponentGroup({\n nodes,\n nodeBricks,\n onRendered,\n}: NodeComponentGroupProps): JSX.Element {\n const [rendered, setRendered] = useState(false);\n const [renderedIds, setRenderedIds] = useState<DiagramNodeId[]>([]);\n const refRepository = useMemo<RefRepository>(() => new Map(), []);\n\n const handleRenderer = useCallback(\n (id: DiagramNodeId, element: HTMLElement | null) => {\n if (element) {\n refRepository.set(id, element);\n }\n setRenderedIds((previous) =>\n previous.includes(id) ? previous : previous.concat(id)\n );\n },\n [refRepository]\n );\n\n const handleUnmount = useCallback(\n (id: DiagramNodeId) => {\n setRenderedIds((previous) => {\n const index = previous.indexOf(id);\n return index === -1\n ? previous\n : previous.slice(0, index).concat(previous.slice(index + 1));\n });\n refRepository.delete(id);\n },\n [refRepository]\n );\n\n useEffect(() => {\n // All nodes have been rendered.\n setRendered(!nodes?.some((node) => !renderedIds.includes(node.id)));\n }, [nodes, renderedIds]);\n\n useEffect(\n () => {\n onRendered?.(rendered ? refRepository : null);\n },\n // Dot not re-run effect when `onRendered` changed.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [/* onRendered, */ refRepository, rendered]\n );\n\n return (\n <React.Fragment>\n {nodes?.map((node) => (\n <div key={node.id} className=\"node\">\n <NodeComponent\n nodeBricks={nodeBricks}\n node={node}\n onRendered={handleRenderer}\n onUnmount={handleUnmount}\n />\n </div>\n ))}\n </React.Fragment>\n );\n}\n\nexport interface NodeComponentProps {\n node: DiagramNode;\n nodeBricks?: NodeBrickConf[];\n onRendered?: (id: DiagramNodeId, element: HTMLElement | null) => void;\n onUnmount?: (id: DiagramNodeId) => void;\n}\n\nexport function NodeComponent({\n node,\n nodeBricks,\n onRendered,\n onUnmount,\n}: NodeComponentProps): JSX.Element | null {\n const useBrick = useMemo(\n () => findNodeBrick(node, nodeBricks)?.useBrick,\n [node, nodeBricks]\n );\n const memoizedData = useMemo(() => ({ node }), [node]);\n\n useEffect(() => {\n if (!useBrick) {\n // Keep the same time delay for reporting rendered.\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }\n }, [node.id, onRendered, useBrick]);\n\n useEffect(\n () => {\n return () => {\n onUnmount?.(node.id);\n };\n },\n // Only unmount once\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n // Todo: correctly wait for `useBrick` in v3 to be rendered (after layout)\n // Wait a macro task to let `useBrick` to be rendered.\n setTimeout(() => {\n onRendered?.(node.id, element);\n });\n }\n },\n [node.id, onRendered]\n );\n\n const ignoredCallback = useCallback(() => {\n setTimeout(() => {\n onRendered?.(node.id, null);\n });\n }, [node.id, onRendered]);\n\n if (!useBrick) {\n return null;\n }\n\n return (\n <ReactUseBrick\n refCallback={refCallback}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore For v3 only\n ignoredCallback={ignoredCallback}\n useBrick={useBrick}\n data={memoizedData}\n />\n );\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport { NodeBrickConf, DiagramNode } from \"../interfaces\";\n\nexport function findNodeBrick(\n node: DiagramNode,\n nodeBricks: NodeBrickConf[] | undefined\n): NodeBrickConf | undefined {\n return nodeBricks?.find((item) => {\n if (item.nodeType) {\n return ([] as unknown[]).concat(item.nodeType).includes(node.type);\n }\n return checkIfByTransform(item, { node });\n });\n}\n","export const DEFAULT_LINE_STROKE_COLOR = \"var(--palette-gray-5)\";\nexport const DEFAULT_LINE_STROKE_WIDTH = 1;\nexport const DEFAULT_LINE_CURVE_TYPE = \"curveBasis\";\nexport const DEFAULT_LINE_INTERACT_STROKE_WIDTH = 20;\nexport const DEFAULT_SCALE_RANGE_MIN = 0.5;\nexport const DEFAULT_SCALE_RANGE_MAX = 2;\n","import type { FullRectTuple, RefRepository, RenderedNode } from \"../interfaces\";\n\nexport function adjustNodesSize(\n nodes: RenderedNode[],\n nodesRefRepository: RefRepository,\n nodePaddings: FullRectTuple\n) {\n for (const node of nodes) {\n const element = nodesRefRepository.get(node.id);\n node.width =\n Math.max(element?.offsetWidth ?? 0, 10) +\n nodePaddings[1] +\n nodePaddings[3];\n node.height =\n Math.max(element?.offsetHeight ?? 0, 10) +\n nodePaddings[0] +\n nodePaddings[2];\n }\n}\n","import type { FullRectTuple, RefRepository, RenderedNode } from \"../interfaces\";\n\nexport function adjustNodesPosition(\n nodes: RenderedNode[],\n nodesRefRepository: RefRepository,\n nodePaddings: FullRectTuple\n) {\n for (const node of nodes) {\n const x = node.x - node.width / 2 + nodePaddings[3];\n const y = node.y - node.height / 2 + nodePaddings[0];\n\n const nodeContainer = nodesRefRepository.get(node.id)?.parentElement;\n if (nodeContainer) {\n nodeContainer.style.left = `${x}px`;\n nodeContainer.style.top = `${y}px`;\n nodeContainer.style.visibility = \"visible\";\n }\n }\n}\n","// istanbul ignore file: experimental\nimport type {\n DiagramEdge,\n LabelSize,\n RefRepository,\n RenderedEdge,\n} from \"../interfaces\";\n\nexport function getRenderedEdges(\n edges: DiagramEdge[] | undefined,\n {\n normalizedLinesMap,\n lineLabelsRefRepository,\n }: {\n normalizedLinesMap: WeakMap<DiagramEdge, string>;\n lineLabelsRefRepository: RefRepository;\n }\n) {\n return (\n edges?.map<RenderedEdge>((edge) => {\n const lineId = normalizedLinesMap.get(edge);\n const labelSize: LabelSize = {};\n if (lineId) {\n for (const placement of [/* \"center\", */ \"start\", \"end\"] as const) {\n const element = lineLabelsRefRepository.get(`${lineId}-${placement}`);\n if (element) {\n labelSize[placement] = [element.offsetWidth, element.offsetHeight];\n }\n }\n }\n\n return {\n data: edge,\n labelSize,\n };\n }) ?? []\n );\n}\n","// istanbul ignore file: experimental\nimport {\n forceSimulation,\n forceLink,\n forceCollide,\n forceManyBody,\n forceX,\n forceY,\n type Simulation,\n type SimulationNodeDatum,\n type SimulationLinkDatum,\n} from \"d3-force\";\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n ForceCollideOptions,\n LayoutOptionsForce,\n RenderedNode,\n UnifiedGraph,\n UserViewNodesMap,\n} from \"../interfaces\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\nimport { getRenderedEdges } from \"./getRenderedEdges\";\n\ninterface NormalNode extends SimulationNodeDatum {\n dummy?: false;\n id: string;\n data: DiagramNode;\n width: number;\n height: number;\n}\n\ninterface DummyNode extends SimulationNodeDatum {\n dummy: true;\n id: string;\n}\n\ntype ForceNode = NormalNode | DummyNode;\n\ntype ForceLink = SimulationLinkDatum<ForceNode> & {\n dummy?: boolean;\n};\n\nexport function getForceGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n userViewNodesMap: UserViewNodesMap | null,\n forceLayoutOptions: LayoutOptionsForce | undefined\n): UnifiedGraph {\n const { nodePadding, dummyNodesOnEdges, collide } = {\n nodePadding: 0,\n dummyNodesOnEdges: 0,\n ...pick(forceLayoutOptions, [\"nodePadding\", \"dummyNodesOnEdges\"]),\n collide:\n forceLayoutOptions?.collide !== false\n ? ({\n dummyRadius: 1,\n radiusDiff: 5,\n strength: 1,\n iterations: 1,\n ...(forceLayoutOptions?.collide === true\n ? null\n : (forceLayoutOptions?.collide as ForceCollideOptions)),\n } as Required<ForceCollideOptions>)\n : (false as const),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n const renderedNodes: RenderedNode[] = [];\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n if (previousNode?.data === node) {\n renderedNodes.push(previousNode);\n } else {\n const renderedNode = {\n id: node.id,\n data: node,\n } as RenderedNode & { fx?: number; fy?: number };\n const userViewNode = userViewNodesMap?.get(node.id);\n if (userViewNode) {\n renderedNode.fx = userViewNode.x;\n renderedNode.fy = userViewNode.y;\n }\n renderedNodes.push(renderedNode);\n }\n }\n\n function getNode(id: string) {\n return renderedNodes.find((node) => node.data.id === id);\n }\n\n return {\n layout: \"force\",\n getNode,\n applyLayout({\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n }) {\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n const forceNodes = renderedNodes.slice();\n const forceLinks: ForceLink[] = [];\n\n for (const edge of edges ?? []) {\n forceLinks.push({ ...edge });\n if (dummyNodesOnEdges > 0) {\n forceNodes.push(\n ...(getDummyNodes(\n edge,\n dummyNodesOnEdges\n ) as Partial<RenderedNode>[] as RenderedNode[])\n );\n forceLinks.push(...getDummyEdges(edge, dummyNodesOnEdges));\n }\n }\n\n const linkSimulation = forceLink<ForceNode, ForceLink>(forceLinks).id(\n (d) => d.id\n );\n\n if (dummyNodesOnEdges > 0) {\n linkSimulation\n .distance((l) => (l.dummy ? 30 / (dummyNodesOnEdges + 1) : 30))\n .strength((l) => (l.dummy ? 0.5 : 1));\n }\n\n const simulation = forceSimulation<ForceNode>(forceNodes)\n .force(\"link\", linkSimulation)\n .force(\"x\", forceX())\n .force(\"y\", forceY())\n .force(\"charge\", forceManyBody());\n\n if (collide) {\n simulation.force(\n \"collide\",\n forceCollide<ForceNode>()\n .radius((d) =>\n d.dummy\n ? collide.dummyRadius\n : Math.sqrt(d.width ** 2 + d.height ** 2) / 2 +\n collide.radiusDiff\n )\n .strength(collide.strength)\n .iterations(collide.iterations)\n );\n }\n\n simulation.stop();\n manuallyTickToTheEnd(simulation);\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = getRenderedEdges(edges, {\n normalizedLinesMap,\n lineLabelsRefRepository,\n });\n\n return { nodes: renderedNodes, edges: renderedEdges };\n },\n };\n}\n\nfunction manuallyTickToTheEnd(\n simulation: Simulation<ForceNode, ForceLink>\n): void {\n // Manually tick to the end.\n simulation.tick(\n Math.ceil(\n Math.log(simulation.alphaMin()) / Math.log(1 - simulation.alphaDecay())\n )\n );\n}\n\nfunction getDummyNodes(edge: DiagramEdge, count: number): DummyNode[] {\n return new Array(count).fill(null).map<DummyNode>((v, i) => ({\n dummy: true,\n id: `$dummy-${edge.source}-${edge.target}-${i}`,\n }));\n}\n\nfunction getDummyEdges(edge: DiagramEdge, count: number): ForceLink[] {\n return new Array(count + 1).fill(null).map<ForceLink>((v, i) => ({\n dummy: true,\n source:\n i === 0 ? edge.source : `$dummy-${edge.source}-${edge.target}-${i - 1}`,\n target:\n i === count ? edge.target : `$dummy-${edge.source}-${edge.target}-${i}`,\n }));\n}\n","import { useEffect, useState } from \"react\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptions,\n LayoutOptionsDagre,\n LayoutOptionsForce,\n ManualLayoutStatus,\n NodeMovement,\n RefRepository,\n RenderedDiagram,\n UnifiedGraph,\n UserViewNodesMap,\n} from \"../interfaces\";\nimport { getDagreGraph } from \"../processors/getDagreGraph\";\nimport { getForceGraph } from \"../processors/getForceGraph\";\nimport { getManualGraph } from \"../processors/getManualGraph\";\n\nexport function useRenderedDiagram({\n layout: originalLayout,\n nodes,\n edges,\n manualLayoutStatus,\n userViewReady,\n userViewNodesMap,\n nodeMovement,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodesRenderId,\n lineLabelsRenderId,\n layoutOptions,\n}: {\n layout: \"dagre\" | \"force\" | undefined;\n nodes: DiagramNode[] | undefined;\n edges: DiagramEdge[] | undefined;\n manualLayoutStatus: ManualLayoutStatus;\n userViewReady: boolean;\n userViewNodesMap: UserViewNodesMap | null;\n nodeMovement: NodeMovement | null;\n nodesRefRepository: RefRepository | null;\n lineLabelsRefRepository: RefRepository | null;\n normalizedLinesMap: WeakMap<DiagramEdge, string>;\n nodesRenderId: number;\n lineLabelsRenderId: number;\n layoutOptions?: LayoutOptions;\n}) {\n const layout = manualLayoutStatus === \"initial\" ? originalLayout : \"manual\";\n const [graph, setGraph] = useState<UnifiedGraph | null>(null);\n\n const [renderedDiagram, setRenderedDiagram] = useState<RenderedDiagram>({\n nodes: [],\n edges: [],\n });\n\n useEffect(() => {\n if (!userViewReady) {\n return;\n }\n setGraph((previousGraph) =>\n layout === \"dagre\"\n ? getDagreGraph(\n previousGraph,\n nodes,\n edges,\n layoutOptions as LayoutOptionsDagre\n )\n : layout === \"force\"\n ? getForceGraph(\n previousGraph,\n nodes,\n edges,\n userViewNodesMap,\n layoutOptions as LayoutOptionsForce\n )\n : layout === \"manual\"\n ? getManualGraph(previousGraph, nodes, edges, layoutOptions)\n : null\n );\n }, [edges, nodes, layout, layoutOptions, userViewReady, userViewNodesMap]);\n\n useEffect(() => {\n if (\n !nodesRefRepository ||\n !lineLabelsRefRepository ||\n layout !== graph?.layout\n ) {\n return;\n }\n const renderedDiagram = graph?.applyLayout({\n manualLayoutStatus,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodeMovement,\n });\n if (renderedDiagram) {\n setRenderedDiagram(renderedDiagram);\n }\n }, [\n layout,\n manualLayoutStatus,\n graph,\n nodeMovement,\n nodesRefRepository,\n lineLabelsRefRepository,\n nodesRenderId,\n lineLabelsRenderId,\n normalizedLinesMap,\n ]);\n\n return renderedDiagram;\n}\n","import dagre from \"@dagrejs/dagre\";\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n LayoutOptionsDagre,\n RenderedEdge,\n RenderedNode,\n UnifiedGraph,\n} from \"../interfaces\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\n\nexport function getDagreGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n dagreLayoutOptions: LayoutOptionsDagre | undefined\n): UnifiedGraph {\n const { nodePadding, ...dagreGraphOptions } = {\n nodePadding: 0,\n rankdir: \"TB\",\n ranksep: 50,\n edgesep: 10,\n nodesep: 50,\n // align: undefined,\n ...pick(dagreLayoutOptions, [\n \"nodePadding\",\n \"rankdir\",\n \"ranksep\",\n \"edgesep\",\n \"nodesep\",\n \"align\",\n ]),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n // Create a new directed graph\n const graph = new dagre.graphlib.Graph<RenderedNode>();\n\n // Set an object for the graph label\n graph.setGraph(dagreGraphOptions);\n\n // Default to assigning a new object as a label for each new edge.\n graph.setDefaultEdgeLabel(function () {\n return {};\n });\n\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n graph.setNode(\n node.id,\n previousNode?.data === node\n ? previousNode\n : {\n id: node.id,\n data: node,\n }\n );\n }\n\n for (const edge of edges ?? []) {\n graph.setEdge(edge.source, edge.target, { data: edge });\n }\n\n return {\n layout: \"dagre\",\n getNode(id) {\n return graph.node(id);\n },\n applyLayout({\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n }) {\n const renderedNodes: RenderedNode[] = [];\n for (const id of graph.nodes()) {\n const node = graph.node(id);\n if (node) {\n renderedNodes.push(node);\n } else {\n // eslint-disable-next-line no-console\n console.error(\"Diagram node not found: %s\", id);\n }\n }\n\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = graph\n .edges()\n .map((e) => graph.edge(e) as RenderedEdge);\n for (const edge of renderedEdges) {\n const lineId = normalizedLinesMap.get(edge.data);\n if (lineId) {\n for (const placement of [\"center\", \"start\", \"end\"] as const) {\n const element = lineLabelsRefRepository.get(\n `${lineId}-${placement}`\n );\n if (element) {\n const { offsetWidth, offsetHeight } = element;\n if (placement === \"center\") {\n edge.labelpos = \"c\";\n edge.width = offsetWidth;\n edge.height = offsetHeight;\n }\n edge.labelSize ??= {};\n edge.labelSize[placement] = [offsetWidth, offsetHeight];\n }\n }\n }\n }\n dagre.layout(graph);\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n return {\n nodes: renderedNodes,\n edges: renderedEdges,\n };\n },\n };\n}\n","// istanbul ignore file: experimental\nimport { pick } from \"lodash\";\nimport type {\n DiagramEdge,\n DiagramNode,\n BaseLayoutOptions,\n RenderedNode,\n UnifiedGraph,\n} from \"../interfaces\";\nimport { extractPartialRectTuple } from \"./extractPartialRectTuple\";\nimport { adjustNodesSize } from \"./adjustNodesSize\";\nimport { adjustNodesPosition } from \"./adjustNodesPosition\";\nimport { getRenderedEdges } from \"./getRenderedEdges\";\n\nexport function getManualGraph(\n previousGraph: UnifiedGraph | null,\n nodes: DiagramNode[] | undefined,\n edges: DiagramEdge[] | undefined,\n layoutOptions: BaseLayoutOptions | undefined\n): UnifiedGraph {\n const { nodePadding } = {\n nodePadding: 0,\n ...pick(layoutOptions, [\"nodePadding\"]),\n };\n const nodePaddings = extractPartialRectTuple(nodePadding);\n\n const renderedNodes: RenderedNode[] = [];\n for (const node of nodes ?? []) {\n const previousNode = previousGraph?.getNode(node.id);\n if (previousNode?.data === node) {\n renderedNodes.push(previousNode);\n previousNode.x0 = previousNode.x;\n previousNode.y0 = previousNode.y;\n } else {\n renderedNodes.push({\n id: node.id,\n data: node,\n } as RenderedNode);\n }\n }\n\n function getNode(id: string) {\n return renderedNodes.find((node) => node.data.id === id);\n }\n\n let movedNode: RenderedNode | undefined;\n\n return {\n layout: \"manual\",\n getNode,\n applyLayout({\n manualLayoutStatus,\n nodesRefRepository,\n lineLabelsRefRepository,\n normalizedLinesMap,\n nodeMovement,\n }) {\n if (renderedNodes.length === 0) {\n return null;\n }\n\n adjustNodesSize(renderedNodes, nodesRefRepository, nodePaddings);\n\n if (nodeMovement) {\n movedNode = renderedNodes.find((node) => node.id === nodeMovement.id);\n if (movedNode) {\n movedNode.x = (movedNode.x0 ?? 0) + nodeMovement.move[0];\n movedNode.y = (movedNode.y0 ?? 0) + nodeMovement.move[1];\n }\n }\n\n if (manualLayoutStatus === \"finished\" && movedNode) {\n // Set x0/y0 after finished manual layout\n movedNode.x0 = movedNode.x;\n movedNode.y0 = movedNode.y;\n }\n\n adjustNodesPosition(renderedNodes, nodesRefRepository, nodePaddings);\n\n const renderedEdges = getRenderedEdges(edges, {\n normalizedLinesMap,\n lineLabelsRefRepository,\n });\n\n return { nodes: renderedNodes, edges: renderedEdges };\n },\n };\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { handleHttpError } from \"@next-core/runtime\";\nimport {\n InstanceApi_postSearchV3,\n InstanceApi_updateInstanceV2,\n InstanceApi_createInstance,\n} from \"@next-api-sdk/cmdb-sdk\";\nimport { createAsyncQueue } from \"../processors/createAsyncQueue\";\nimport {\n NodeUserView,\n UserView,\n UserViewNodesMap,\n UserViewQuery,\n} from \"../interfaces\";\n\nconst USER_VIEW_MODEL_ID = \"GRAPH_USER_VIEW@EASYOPS\";\n\nexport interface UserViewHook {\n userViewReady: boolean;\n userViewNodesMap: UserViewNodesMap | null;\n saveUserView: (nodes: NodeUserView[]) => void;\n}\n\nexport function useUserView(query: UserViewQuery | undefined): UserViewHook {\n const [userViewReady, setUserViewReady] = useState(!query);\n const userViewIdRef = useRef<string>();\n const [userViewNodesMap, setUserViewNodesMap] =\n useState<UserViewNodesMap | null>(null);\n const queue = useMemo(() => createAsyncQueue(), []);\n\n useEffect(() => {\n async function getUserView(): Promise<void> {\n if (!query) {\n setUserViewReady(true);\n return;\n }\n const { namespace, key } = query;\n if (!(namespace && key)) {\n // eslint-disable-next-line no-console\n console.error(\"Namespace and key are required to save graph user view\");\n setUserViewReady(true);\n return;\n }\n try {\n const list = (\n await InstanceApi_postSearchV3(USER_VIEW_MODEL_ID, {\n fields: [\"nodes\"],\n query: {\n namespace: {\n $eq: namespace,\n },\n key: {\n $eq: key,\n },\n },\n page: 1,\n page_size: 30,\n })\n ).list as UserView[];\n if (list.length > 0) {\n const userView = list[0];\n const userViewNodesMap = new Map(\n userView.nodes?.map((node) => [node.id, node])\n );\n userViewIdRef.current = userView.instanceId;\n setUserViewNodesMap(userViewNodesMap);\n } else {\n setUserViewNodesMap(null);\n }\n } catch (error) {\n handleHttpError(error as Error);\n } finally {\n setUserViewReady(true);\n }\n }\n getUserView();\n }, [query]);\n\n const saveUserView = useCallback(\n (nodes: NodeUserView[]) => {\n const { namespace, key } = query ?? {};\n if (!(namespace && key)) {\n return;\n }\n queue(async () => {\n const userViewData = {\n namespace,\n key,\n nodes,\n };\n try {\n if (userViewIdRef.current) {\n await InstanceApi_updateInstanceV2(\n USER_VIEW_MODEL_ID,\n userViewIdRef.current,\n userViewData,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n } else {\n const userView = await InstanceApi_createInstance(\n USER_VIEW_MODEL_ID,\n userViewData,\n {\n interceptorParams: {\n ignoreLoadingBar: true,\n },\n }\n );\n userViewIdRef.current = userView.instanceId;\n }\n } catch (error) {\n handleHttpError(error);\n }\n });\n },\n [query, queue]\n );\n\n return {\n userViewReady,\n userViewNodesMap,\n saveUserView,\n };\n}\n","type Task = (...args: unknown[]) => unknown;\ntype Queue = (task: Task) => Promise<void>;\n\nexport function createAsyncQueue(): Queue {\n let working = false;\n const waitingTasks: Task[] = [];\n return async function queue(task: Task) {\n waitingTasks.push(task);\n if (!working) {\n working = true;\n let nextTask: Task | undefined;\n while ((nextTask = waitingTasks.shift())) {\n try {\n await nextTask();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n working = false;\n }\n };\n}\n","import type { RefRepository, RenderedLineLabel } from \"../interfaces\";\n\nexport function adjustLineLabels(\n renderedLineLabels: RenderedLineLabel[],\n lineLabelsRefRepository: RefRepository\n) {\n for (const {\n id,\n position,\n placement,\n angle,\n size: _size,\n } of renderedLineLabels) {\n const label = lineLabelsRefRepository.get(id);\n if (label) {\n label.style.left = `${position[0]}px`;\n label.style.top = `${position[1]}px`;\n label.style.visibility = \"visible\";\n // label.classList.add(placement);\n if (placement !== \"center\" && angle !== undefined) {\n const [width, height] = _size ?? [0, 0];\n // Get the numbered direction of the line\n //\n // \\ | /\n // \\ 5 | 6 /\n // 4 \\ | / 7\n // -----x-----\n // 3 / | \\ 0\n // / 2 | 1 \\\n // / | \\\n const tempDirection = Math.floor(\n ((angle < 0 ? Math.PI * 2 + angle : angle) / Math.PI) * 4\n );\n // Swap direction for end labels.\n const direction =\n placement === \"start\" ? tempDirection : (tempDirection + 4) % 8;\n const tangent = Math.tan(angle);\n const offsetAngle =\n angle + ((placement === \"start\" ? 1 : -1) * Math.PI) / 2;\n const offset = 2;\n const offsetSin = Math.sin(offsetAngle) * offset;\n const offsetCos = Math.cos(offsetAngle) * offset;\n let transform: string;\n switch (direction) {\n case 0:\n transform = `translate(0,${width * tangent + offsetSin}px)`;\n break;\n case 1:\n transform = `translate(${height / tangent - offsetCos}px,0)`;\n break;\n case 2:\n transform = `translate(calc(${\n height / tangent + offsetCos\n }px - 100%),0)`;\n break;\n case 3:\n transform = `translate(-100%,${-width * tangent - offsetSin}px)`;\n break;\n case 4:\n transform = `translate(-100%,calc(${\n -width * tangent + offsetSin\n }px - 100%))`;\n break;\n case 5:\n transform = `translate(calc(${\n -height / tangent - offsetCos\n }px - 100%),-100%)`;\n break;\n case 6:\n transform = `translate(${-height / tangent + offsetCos}px,-100%)`;\n break;\n default:\n transform = `translate(0,calc(${\n width * tangent - offsetSin\n }px - 100%))`;\n }\n label.style.transform = transform;\n }\n }\n }\n}\n","import type {\n LineMaskRects,\n RefRepository,\n RenderedLineLabel,\n} from \"../interfaces\";\n\nexport function getLineMaskRects(\n renderedLineLabels: RenderedLineLabel[],\n lineLabelsRefRepository: RefRepository\n) {\n const map: LineMaskRects = new Map();\n\n for (const { id, lineId, placement } of renderedLineLabels) {\n if (!lineLabelsRefRepository || placement !== \"center\") {\n continue;\n }\n const element = lineLabelsRefRepository.get(id);\n if (!element) {\n continue;\n }\n const { offsetWidth, offsetHeight } = element;\n // Do not mask out when the label takes no space.\n // istanbul ignore next\n if (\n process.env.NODE_ENV !== \"test\" &&\n (offsetWidth === 0 || offsetHeight === 0)\n ) {\n continue;\n }\n const padding = 3;\n // Currently no other rects\n map.set(lineId, [\n {\n left: element.offsetLeft - offsetWidth / 2 - padding,\n top: element.offsetTop - offsetHeight / 2 - padding,\n width: offsetWidth + padding * 2,\n height: offsetHeight + padding * 2,\n },\n ]);\n }\n\n return map;\n}\n","import type {\n LineLabelConf,\n RenderedLine,\n RenderedLineLabel,\n TextOptions,\n} from \"../interfaces\";\n\nexport function getRenderedLineLabels(\n previous: RenderedLineLabel[],\n renderedLines: RenderedLine[],\n linePaths: Map<string, SVGPathElement | null>\n) {\n if (previous.length === 0 && renderedLines.length === 0) {\n return previous;\n }\n return renderedLines.flatMap(\n ({ line: { text, label, $id }, edge, labelSize, angle }) => {\n const path = linePaths.get($id);\n if ((!text && !label) || !path || !path.getAttribute(\"d\")) {\n return [] as RenderedLineLabel[];\n }\n\n let key: \"label\" | \"text\";\n let list: LineLabelConf[] | TextOptions[];\n if (label) {\n key = \"label\";\n list = ([] as LineLabelConf[]).concat(label);\n } else {\n key = \"text\";\n list = ([] as TextOptions[]).concat(text!);\n }\n\n // istanbul ignore next\n const {\n x: left,\n y: top,\n width,\n height,\n } = process.env.NODE_ENV === \"test\"\n ? { x: 10, y: 20, width: 300, height: 400 }\n : path.getBBox();\n\n // istanbul ignore next\n const pathLength =\n process.env.NODE_ENV === \"test\" ? 50 : path.getTotalLength();\n\n return list.map<RenderedLineLabel>((item) => {\n const placement = item.placement ?? \"center\";\n const offset = 0;\n // istanbul ignore next\n const point =\n process.env.NODE_ENV === \"test\"\n ? { x: 50, y: 50 }\n : path.getPointAtLength(\n placement === \"start\"\n ? Math.min(offset, pathLength / 2)\n : placement === \"end\"\n ? Math.max(pathLength - offset, pathLength / 2)\n : pathLength / 2\n );\n\n return {\n [key as \"label\"]: item as LineLabelConf,\n edge,\n position: [point.x, point.y],\n lineRect: { left, top, width, height },\n id: `${$id}-${placement}`,\n lineId: $id,\n placement,\n angle,\n size: labelSize?.[placement],\n };\n });\n }\n );\n}\n","import {\n curveLinear,\n line,\n curveBasis,\n curveBumpX,\n curveBumpY,\n type CurveFactory,\n curveMonotoneX,\n curveNatural,\n curveMonotoneY,\n} from \"d3-shape\";\nimport type { CurveType, NodePosition } from \"../interfaces\";\n\n/**\n * Generate Line from points\n */\nexport function curveLine(\n points: Array<NodePosition> | null | undefined,\n curveType: CurveType | undefined,\n startOffset: number,\n endOffset: number\n): string {\n if (!Array.isArray(points)) {\n return \"\";\n }\n let curveFactory: CurveFactory;\n switch (curveType) {\n case \"curveLinear\":\n curveFactory = curveLinear;\n break;\n case \"curveBumpX\":\n curveFactory = curveBumpX;\n break;\n case \"curveBumpY\":\n curveFactory = curveBumpY;\n break;\n case \"curveMonotoneX\":\n curveFactory = curveMonotoneX;\n break;\n case \"curveMonotoneY\":\n curveFactory = curveMonotoneY;\n break;\n case \"curveNatural\":\n curveFactory = curveNatural;\n break;\n default:\n curveFactory = curveBasis;\n }\n const startOffsets = getOffsets(points[1], points[0], startOffset);\n const endOffsets = getOffsets(\n points[points.length - 2],\n points[points.length - 1],\n endOffset\n );\n const lineFunction = line()\n .x(\n (d, index) =>\n (d as unknown as { x: number }).x -\n (index === 0\n ? startOffsets.x\n : index === points.length - 1\n ? endOffsets.x\n : 0)\n )\n .y(\n (d, index) =>\n (d as unknown as { y: number }).y -\n (index === 0\n ? startOffsets.y\n : index === points.length - 1\n ? endOffsets.y\n : 0)\n )\n .curve(curveFactory);\n return lineFunction(points as unknown as Array<[number, number]>)!;\n}\n\nfunction getOffsets(\n start: NodePosition,\n end: NodePosition,\n offset: number\n): NodePosition {\n if (!offset) {\n return { x: 0, y: 0 };\n }\n const { x: x0, y: y0 } = start;\n const { x: x1, y: y1 } = end;\n const distance = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n const ratio = offset / distance;\n return {\n x: (x1 - x0) * ratio,\n y: (y1 - y0) * ratio,\n };\n}\n","import type { Direction, NodePosition, RenderedNode } from \"../interfaces\";\n\nexport function getPolyLinePoints(\n source: RenderedNode,\n target: RenderedNode,\n sourceDirection: Direction,\n targetDirection: Direction,\n sourcePosition: number,\n targetPosition: number\n): NodePosition[] | null {\n const p0 = getCoordinates(source, sourceDirection, sourcePosition);\n const p1 = getCoordinates(target, targetDirection, targetPosition);\n\n let c1: NodePosition;\n let c2: NodePosition;\n switch (sourceDirection) {\n case \"top\":\n case \"bottom\":\n switch (targetDirection) {\n default:\n c1 = { x: p0.x, y: (p0.y + p1.y) / 2 };\n c2 = { x: p1.x, y: c1.y };\n break;\n }\n break;\n default:\n switch (targetDirection) {\n default:\n c1 = { x: (p0.x + p1.x) / 2, y: p0.y };\n c2 = { x: c1.x, y: p1.y };\n break;\n }\n }\n\n return [p0, c1, c2, p1];\n}\n\nfunction getCoordinates(\n node: RenderedNode,\n direction: Direction,\n position: number\n): NodePosition {\n const { x, y, width, height } = node;\n switch (direction) {\n case \"top\":\n return {\n x: x - width / 2 + width * position,\n y: y - height / 2,\n };\n case \"bottom\":\n return {\n x: x - width / 2 + width * position,\n y: y + height / 2,\n };\n case \"left\":\n return {\n x: x - width / 2,\n y: y - height / 2 + height * position,\n };\n case \"right\":\n return {\n x: x + width / 2,\n y: y - height / 2 + height * position,\n };\n }\n}\n","// istanbul ignore file: experimental\nimport type {\n DiagramEdge,\n Direction,\n NormalizedLine,\n RenderedEdge,\n RenderedLine,\n RenderedNode,\n} from \"../interfaces\";\nimport { curveLine } from \"../lines/curveLine\";\nimport { getDirectLinePoints } from \"../lines/getDirectLinePoints\";\nimport { getPolyLinePoints } from \"../lines/getPolyLinePoints\";\nimport { doTwoNodesOverlap } from \"./doTwoNodesOverlap\";\n\nexport function getRenderedLines(\n renderedEdges: RenderedEdge[],\n renderedNodes: RenderedNode[],\n normalizedLines: NormalizedLine[]\n): RenderedLine[] {\n const renderedEdgeMap = new WeakMap<DiagramEdge, RenderedEdge>();\n const renderedNodeMap = new Map<string, RenderedNode>();\n const relatedNodes = new Map<string, Set<RenderedNode>>();\n\n for (const renderedNode of renderedNodes) {\n renderedNodeMap.set(renderedNode.id, renderedNode);\n }\n\n for (const renderedEdge of renderedEdges) {\n const { data: edge } = renderedEdge;\n renderedEdgeMap.set(edge, renderedEdge);\n }\n\n let prepared = false;\n const prepareRelatedNodes = () => {\n if (prepared) {\n return;\n }\n prepared = true;\n\n const addRelatedNodes = (from: string, to: string) => {\n let relates = relatedNodes.get(from);\n if (!relates) {\n relatedNodes.set(from, (relates = new Set()));\n }\n const toNode = renderedNodeMap.get(to);\n if (toNode) {\n relates.add(toNode);\n }\n };\n\n for (const {\n data: { source, target },\n } of renderedEdges) {\n if (source !== target) {\n addRelatedNodes(source, target);\n addRelatedNodes(target, source);\n }\n }\n };\n\n return normalizedLines\n .map<RenderedLine | undefined>(({ line, edge, markers, ...rest }) => {\n const renderedEdge = renderedEdgeMap.get(edge);\n if (!renderedEdge) {\n return;\n }\n const startMarkerOffset =\n markers.find(\n (marker) =>\n marker.variant === \"default\" && marker.placement === \"start\"\n )?.offset ?? 0;\n const endMarkerOffset =\n markers.find(\n (marker) => marker.variant === \"default\" && marker.placement === \"end\"\n )?.offset ?? 0;\n let angle: number | undefined;\n\n let { points } = renderedEdge;\n // Only dagre graph will have pre-calculated line points\n if (!points) {\n const source = renderedNodeMap.get(edge.source);\n const target = renderedNodeMap.get(edge.target);\n\n if (source && target && source !== target) {\n if (line.type === \"polyline\") {\n if (\n !doTwoNodesOverlap(\n source,\n target,\n startMarkerOffset,\n endMarkerOffset\n )\n ) {\n prepareRelatedNodes();\n const sourceDirection = getDirection(\n source,\n target,\n startMarkerOffset\n );\n const targetDirection = getDirection(\n target,\n source,\n endMarkerOffset\n );\n const sourceRelates = getOrderedRelates(\n relatedNodes.get(edge.source) ?? [],\n source,\n sourceDirection,\n startMarkerOffset\n );\n const targetRelates = getOrderedRelates(\n relatedNodes.get(edge.target) ?? [],\n target,\n targetDirection,\n endMarkerOffset\n );\n\n const sourcePosition =\n (sourceRelates.indexOf(target) + 1) /\n (sourceRelates.length + 1);\n const targetPosition =\n (targetRelates.indexOf(source) + 1) /\n (targetRelates.length + 1);\n\n points = getPolyLinePoints(\n source,\n target,\n sourceDirection,\n targetDirection,\n sourcePosition,\n targetPosition\n );\n }\n } else {\n points = getDirectLinePoints(source, target);\n }\n\n if (points) {\n const start = points[0];\n const end = points[points.length - 1];\n angle = Math.atan2(end.y - start.y, end.x - start.x);\n }\n }\n }\n\n const d = curveLine(\n points,\n line.curveType,\n startMarkerOffset,\n endMarkerOffset\n );\n return {\n ...rest,\n markers,\n line,\n edge,\n d,\n angle,\n labelSize: renderedEdge.labelSize,\n };\n })\n .filter(Boolean) as RenderedLine[];\n}\n\nfunction getDirection(\n source: RenderedNode,\n target: RenderedNode,\n padding: number\n): Direction {\n // Add a padding to the source node to avoid the markers being warped.\n const sourceAngle = Math.atan2(\n source.height + padding * 2,\n source.width + padding * 2\n );\n const { x: sx, y: sy } = source;\n const { x: tx, y: ty } = target;\n const angle = Math.atan2(ty - sy, tx - sx);\n const fixedAngle = angle < 0 ? Math.PI * 2 + angle : angle;\n const direction = Math.floor((fixedAngle / Math.PI) * 2);\n switch (direction) {\n case 0:\n return fixedAngle < sourceAngle ? \"right\" : \"bottom\";\n case 1:\n return fixedAngle < Math.PI - sourceAngle ? \"bottom\" : \"left\";\n case 2:\n return fixedAngle < Math.PI + sourceAngle ? \"left\" : \"top\";\n default:\n return fixedAngle < Math.PI * 2 - sourceAngle ? \"top\" : \"right\";\n }\n}\n\nfunction getOrderedRelates(\n relates: Iterable<RenderedNode>,\n from: RenderedNode,\n direction: Direction,\n padding: number\n): RenderedNode[] {\n return [...relates]\n .filter((node) => getDirection(from, node, padding) === direction)\n .sort((a, b) => {\n const { x: ax, y: ay } = a;\n const { x: bx, y: by } = b;\n return direction === \"top\" || direction === \"bottom\" ? ax - bx : ay - by;\n });\n}\n","import { minBy } from \"lodash\";\nimport type {\n ActiveTarget,\n DiagramEdge,\n DiagramNode,\n RenderedNode,\n} from \"../interfaces\";\n\nexport type KeyboardAction =\n | KeyboardActionSwitchActiveNode\n | KeyboardActionDeleteNode\n | KeyboardActionDeleteEdge;\n\nexport interface KeyboardActionSwitchActiveNode {\n action: \"switch-active-node\";\n node?: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteNode {\n action: \"delete-node\";\n node: DiagramNode;\n}\n\nexport interface KeyboardActionDeleteEdge {\n action: \"delete-edge\";\n edge: DiagramEdge;\n}\n\nexport function handleKeyboard(\n event: KeyboardEvent,\n {\n renderedNodes,\n activeTarget,\n }: {\n renderedNodes: RenderedNode[];\n activeTarget: ActiveTarget | null | undefined;\n }\n): KeyboardAction | undefined {\n const activeNode =\n activeTarget?.type === \"node\"\n ? renderedNodes.find((node) => node.id === activeTarget.nodeId)\n : undefined;\n const activeEdge =\n activeTarget?.type === \"edge\" ? activeTarget.edge : undefined;\n\n if (!activeNode && !activeEdge) {\n return;\n }\n\n const key =\n event.key ||\n /* istanbul ignore next: compatibility */ event.keyCode ||\n /* istanbul ignore next: compatibility */ event.which;\n let action: KeyboardAction[\"action\"] | undefined;\n let node: RenderedNode | undefined;\n let edge: DiagramEdge | undefined;\n\n switch (key) {\n case \"Backspace\":\n case 8:\n case \"Delete\":\n case 46: {\n if (activeNode) {\n action = \"delete-node\";\n node = activeNode;\n } else {\n action = \"delete-edge\";\n edge = activeEdge;\n }\n break;\n }\n default:\n if (!activeNode) {\n return;\n }\n switch (key) {\n case \"ArrowLeft\":\n case 37: {\n node = moveOnAxis(\"x\", renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowUp\":\n case 38: {\n node = moveOnAxis(\"y\", renderedNodes, activeNode, -1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowRight\":\n case 39: {\n node = moveOnAxis(\"x\", renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n case \"ArrowDown\":\n case 40: {\n node = moveOnAxis(\"y\", renderedNodes, activeNode, 1);\n action = \"switch-active-node\";\n break;\n }\n }\n }\n if (action) {\n event.preventDefault();\n event.stopPropagation();\n return { action, node: node?.data, edge } as KeyboardAction;\n }\n}\n\nfunction moveOnAxis(\n axis: \"x\" | \"y\",\n renderedNodes: RenderedNode[],\n activeNode: RenderedNode,\n direction: 1 | -1\n) {\n const oppositeAxis = axis === \"x\" ? \"y\" : \"x\";\n let diff: number;\n const candidates = renderedNodes.filter(\n (node) =>\n node !== activeNode &&\n ((diff = (node[axis] - activeNode[axis]) * direction), diff > 0) &&\n diff > Math.abs(activeNode[oppositeAxis] - node[oppositeAxis])\n );\n return minBy(\n candidates,\n (node) =>\n (activeNode[oppositeAxis] - node[oppositeAxis]) ** 2 +\n (activeNode[axis] - node[axis]) ** 2\n );\n}\n","import { checkIfByTransform, __secret_internals } from \"@next-core/runtime\";\nimport type React from \"react\";\nimport {\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\nimport type {\n ConnectLineState,\n DiagramNode,\n ConnectLineDetail,\n ConnectNodesOptions,\n PositionTuple,\n RefRepository,\n ActiveTarget,\n DragNodesOptions,\n NodesFilterOptions,\n NodeMovement,\n ManualLayoutStatus,\n} from \"../interfaces\";\n\nexport function handleNodesMouseDown(\n event: MouseEvent,\n {\n nodes,\n nodesRefRepository,\n connectNodes,\n dragNodes,\n scale,\n setConnectLineState,\n setConnectLineTo,\n setManualLayoutStatus,\n setNodeMovement,\n onSwitchActiveTarget,\n onNodesConnect,\n }: {\n nodes: DiagramNode[] | undefined;\n connectNodes: ConnectNodesOptions | undefined;\n dragNodes: DragNodesOptions | undefined;\n nodesRefRepository: RefRepository | null;\n scale: number;\n setConnectLineState: (\n value: React.SetStateAction<ConnectLineState | null>\n ) => void;\n setConnectLineTo: (value: React.SetStateAction<PositionTuple>) => void;\n setManualLayoutStatus: (\n value: React.SetStateAction<ManualLayoutStatus>\n ) => void;\n setNodeMovement: (value: React.SetStateAction<NodeMovement | null>) => void;\n onSwitchActiveTarget?(target: ActiveTarget | null): void;\n onNodesConnect?(detail: ConnectLineDetail): void;\n }\n) {\n function findNode(match: (element: HTMLElement) => boolean) {\n if (nodesRefRepository) {\n for (const [id, element] of nodesRefRepository) {\n if (match(element)) {\n return nodes?.find((node) => node.id === id);\n }\n }\n }\n }\n\n if (!connectNodes && !dragNodes) {\n return;\n }\n\n const source = findNode((element) =>\n element.contains(event.target as Node | null)\n );\n\n if (!source) {\n return;\n }\n\n if (!nodeMatched(connectNodes || dragNodes!, source)) {\n return;\n }\n\n event.stopPropagation();\n const from: PositionTuple = [event.clientX, event.clientY];\n\n if (connectNodes) {\n setConnectLineState({\n from,\n options: {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n ...(__secret_internals.legacyDoTransform(\n { source },\n connectNodes\n ) as ConnectNodesOptions),\n },\n });\n setConnectLineTo(from);\n\n onSwitchActiveTarget?.({ type: \"node\", nodeId: source.id });\n\n const onMouseMove = (e: MouseEvent) => {\n setConnectLineTo([e.clientX, e.clientY]);\n };\n const onMouseUp = (e: MouseEvent) => {\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n setConnectLineState(null);\n const eventTargets = e.composedPath();\n const target = findNode((element) => eventTargets.includes(element));\n if (target && source !== target) {\n onNodesConnect?.({ source, target });\n }\n };\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n return;\n }\n\n // Drag node\n onSwitchActiveTarget?.({ type: \"node\", nodeId: source.id });\n\n let moved = false;\n const onMouseMove = (e: MouseEvent) => {\n // Respect the scale\n const movement: PositionTuple = [\n (e.clientX - from[0]) / scale,\n (e.clientY - from[1]) / scale,\n ];\n if (!moved) {\n moved = movement[0] ** 2 + movement[1] ** 2 >= 9;\n if (moved) {\n setManualLayoutStatus(\"started\");\n }\n }\n if (moved) {\n setNodeMovement({ id: source.id, move: movement });\n }\n };\n const onMouseUp = () => {\n moved = false;\n document.removeEventListener(\"mousemove\", onMouseMove);\n document.removeEventListener(\"mouseup\", onMouseUp);\n setNodeMovement(null);\n setManualLayoutStatus(\"finished\");\n };\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n}\n\nfunction nodeMatched(\n options: NodesFilterOptions,\n source: DiagramNode\n): boolean {\n return options.sourceType\n ? ([] as unknown[]).concat(options.sourceType).includes(source.type)\n : checkIfByTransform(options, { source });\n}\n","import { checkIfByTransform } from \"@next-core/runtime\";\nimport type { DiagramEdge, LineConf } from \"../interfaces\";\n\nexport function matchEdgeByFilter(\n edge: DiagramEdge,\n filter: LineConf\n): boolean {\n if (!filter) {\n return false;\n }\n if (filter.edgeType) {\n return ([] as string[]).concat(filter.edgeType).includes(edge.type!);\n }\n return checkIfByTransform(filter, { edge });\n}\n","import { findIndex, uniqueId } from \"lodash\";\nimport { __secret_internals } from \"@next-core/runtime\";\nimport type {\n DiagramEdge,\n LineConf,\n LineMarker,\n LineMarkerConf,\n LineMarkerType,\n NormalizedLine,\n NormalizedLineMarker,\n} from \"../interfaces\";\nimport { matchEdgeByFilter } from \"./matchEdgeByFilter\";\nimport {\n DEFAULT_LINE_CURVE_TYPE,\n DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n DEFAULT_LINE_STROKE_COLOR,\n DEFAULT_LINE_STROKE_WIDTH,\n} from \"../constants\";\n\nexport function normalizeLinesAndMarkers(\n edges: DiagramEdge[] | undefined,\n lines: LineConf[] | undefined\n) {\n const normalizedLines: NormalizedLine[] = [];\n const normalizedLinesMap = new WeakMap<DiagramEdge, string>();\n const markers: LineMarker[] = [];\n for (const edge of edges ?? []) {\n const { label, ...restLineConf } =\n lines?.find((line) => matchEdgeByFilter(edge, line)) ?? {};\n\n const computedLineConf = __secret_internals.legacyDoTransform(\n { edge },\n restLineConf\n ) as LineConf | undefined;\n if (computedLineConf?.draw === false) {\n continue;\n }\n const id = uniqueId(\"line-\");\n const line: NormalizedLine[\"line\"] = {\n strokeColor: DEFAULT_LINE_STROKE_COLOR,\n strokeWidth: DEFAULT_LINE_STROKE_WIDTH,\n curveType:\n computedLineConf?.type === \"polyline\"\n ? \"curveLinear\"\n : DEFAULT_LINE_CURVE_TYPE,\n interactStrokeWidth: DEFAULT_LINE_INTERACT_STROKE_WIDTH,\n type: \"auto\",\n ...computedLineConf,\n label,\n $id: id,\n };\n normalizedLinesMap.set(edge, id);\n\n const normalizedMarkers: NormalizedLineMarker[] = [];\n\n const lineMarkers: LineMarkerConf[] =\n line.markers ?? (line.arrow ? [{ placement: \"end\", type: \"arrow\" }] : []);\n for (const marker of lineMarkers) {\n const { placement: _placement, type: _type } = marker;\n const placement = _placement ?? \"end\";\n\n let type: LineMarkerType;\n let offsetUnit: number;\n\n switch (_type) {\n case \"0..1\":\n case \"0..N\":\n offsetUnit = 21;\n type = _type;\n break;\n default:\n offsetUnit = 1;\n type = \"arrow\";\n }\n const offset = offsetUnit * line.strokeWidth;\n\n const index = addMarker({ type, strokeColor: line.strokeColor }, markers);\n normalizedMarkers.push({\n index,\n placement,\n type,\n variant: \"default\",\n offset,\n });\n\n const activeStrokeColor =\n line.overrides?.active?.strokeColor ?? line.strokeColor;\n const activeMarkerIndex = addMarker(\n { type, strokeColor: activeStrokeColor },\n markers\n );\n normalizedMarkers.push({\n index: activeMarkerIndex,\n placement,\n type,\n variant: \"active\",\n offset,\n });\n const activeRelatedStrokeColor =\n line.overrides?.activeRelated?.strokeColor ?? line.strokeColor;\n const activeRelatedMarkerIndex = addMarker(\n { type, strokeColor: activeRelatedStrokeColor },\n markers\n );\n normalizedMarkers.push({\n index: activeRelatedMarkerIndex,\n placement,\n type,\n variant: \"active-related\",\n offset,\n });\n }\n\n normalizedLines.push({\n line,\n markers: normalizedMarkers,\n edge,\n });\n }\n return {\n normalizedLines,\n normalizedLinesMap,\n markers,\n };\n}\n\nfunction addMarker(marker: LineMarker, markers: LineMarker[]): number {\n let markerIndex = findIndex(markers, marker);\n if (markerIndex === -1) {\n markerIndex = markers.push(marker) - 1;\n }\n return markerIndex;\n}\n","import type {\n ActiveTarget,\n ActiveTargetOfEdge,\n ActiveTargetOfNode,\n} from \"../interfaces\";\n\nexport function sameTarget(\n a: ActiveTarget | null | undefined,\n b: ActiveTarget | null | undefined\n): boolean {\n return a\n ? !!b &&\n a.type === b.type &&\n (a.type === \"node\"\n ? a.nodeId === (b as ActiveTargetOfNode).nodeId\n : a.edge.source === (b as ActiveTargetOfEdge).edge.source &&\n a.edge.target === (b as ActiveTargetOfEdge).edge.target)\n : !b;\n}\n","import type { RenderedNode, TransformLiteral } from \"../interfaces\";\n\nexport interface TransformToCenterOptions {\n canvasWidth: number;\n canvasHeight: number;\n scaleRange?: [min: number, max: number];\n}\n\nexport function transformToCenter(\n renderedNodes: RenderedNode[],\n { canvasWidth, canvasHeight, scaleRange }: TransformToCenterOptions\n): TransformLiteral {\n let left = Infinity;\n let top = Infinity;\n let right = -Infinity;\n let bottom = -Infinity;\n for (const node of renderedNodes) {\n const hw = node.width / 2;\n const hh = node.height / 2;\n const l = node.x - hw;\n const r = node.x + hw;\n const t = node.y - hh;\n const b = node.y + hh;\n if (l < left) {\n left = l;\n }\n if (r > right) {\n right = r;\n }\n if (t < top) {\n top = t;\n }\n if (b > bottom) {\n bottom = b;\n }\n }\n\n const width = right - left;\n const height = bottom - top;\n\n const scale =\n scaleRange && (width > canvasWidth || height > canvasHeight)\n ? Math.max(\n Math.min(canvasWidth / width, canvasHeight / height, scaleRange[1]),\n scaleRange[0]\n )\n : 1;\n\n const x = (canvasWidth - width * scale) / 2 - left * scale;\n const y = (canvasHeight - height * scale) / 2 - top * scale;\n\n return { x, y, k: scale };\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;width:100%;height:100%;overflow:hidden}:host([hidden]){display:none}*{box-sizing:border-box}.diagram{width:100%;height:100%;position:relative;opacity:0}.diagram:focus{outline:none}.lines,\n.line-labels,\n.nodes{position:absolute;top:0;left:0}.line-labels{opacity:0}.ready{opacity:1}.diagram.ready.pannable{cursor:grab}.diagram.pannable.grabbing{cursor:grabbing}.nodes,\n.lines{transform-origin:0 0}.node,\n.line-label{position:absolute;visibility:hidden}.line-label{transform:translate(-50%,-50%);white-space:pre-line;width:max-content;text-align:center;line-height:1}.lines{pointer-events:none}.line.interactable{pointer-events:auto;cursor:default}.connect-line{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none}.connect-line:not(.connecting){display:none}.line:not(.active) .active-bg{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n"],"names":["ConnectLineComponent","_ref","connectLineState","connectLineTo","markerPrefix","React","width","height","className","classNames","connecting","from","MarkerComponent","type","id","strokeColor","options","d","join","fill","stroke","strokeWidth","markerEnd","arrow","undefined","LineComponent","_line$overrides","_line$overrides2","line","edge","markers","linePaths","lineMaskRects","maskPrefix","activeLineMarkerPrefix","active","activeRelated","onLineClick","onLineDoubleClick","mask","has","$id","interactStrokeWidth","overrides","expectVariant","markerStart","marker","variant","placement","index","interactable","onClick","onDoubleClick","e","preventDefault","stopPropagation","style","cursor","ref","element","set","LineLabelComponentGroup","labels","onRendered","rendered","setRendered","useState","renderedIds","setRenderedIds","refRepository","useMemo","Map","handleRenderer","useCallback","previous","includes","concat","handleUnmount","indexOf","slice","delete","useEffect","some","label","map","_ref2","text","key","LineLabelComponent","onUnmount","LineTextComponent","_ref3","refCallback","content","_ref4","useBrick","checkIfByTransform","memoizedData","setTimeout","parentElement","ignoredCallback","ReactUseBrick","data","LineMaskComponent","lineId","rects","renderedLineLabels","lineText","find","item","lineRect","bgRect","padding","left","rect","top","x","y","NodeComponentGroup","nodes","nodeBricks","node","NodeComponent","_findNodeBrick","nodeType","findNodeBrick","DEFAULT_LINE_STROKE_COLOR","DEFAULT_LINE_STROKE_WIDTH","DEFAULT_LINE_CURVE_TYPE","DEFAULT_LINE_INTERACT_STROKE_WIDTH","DEFAULT_SCALE_RANGE_MIN","DEFAULT_SCALE_RANGE_MAX","adjustNodesSize","nodesRefRepository","nodePaddings","get","Math","max","offsetWidth","offsetHeight","adjustNodesPosition","_nodesRefRepository$g","nodeContainer","visibility","getRenderedEdges","edges","normalizedLinesMap","lineLabelsRefRepository","labelSize","getDummyNodes","count","Array","v","i","dummy","source","target","getDummyEdges","useRenderedDiagram","layout","originalLayout","manualLayoutStatus","userViewReady","userViewNodesMap","nodeMovement","nodesRenderId","lineLabelsRenderId","layoutOptions","graph","setGraph","renderedDiagram","setRenderedDiagram","previousGraph","dagreLayoutOptions","nodePadding","dagreGraphOptions","rankdir","ranksep","edgesep","nodesep","pick","extractPartialRectTuple","dagre","Graph","setDefaultEdgeLabel","previousNode","getNode","setNode","setEdge","applyLayout","renderedNodes","push","console","error","length","renderedEdges","labelpos","getDagreGraph","forceLayoutOptions","dummyNodesOnEdges","collide","dummyRadius","radiusDiff","strength","iterations","renderedNode","userViewNode","fx","fy","forceNodes","forceLinks","linkSimulation","forceLink","distance","l","simulation","forceSimulation","force","forceX","forceY","forceManyBody","forceCollide","radius","sqrt","stop","tick","ceil","log","alphaMin","alphaDecay","manuallyTickToTheEnd","getForceGraph","x0","y0","movedNode","move","getManualGraph","USER_VIEW_MODEL_ID","useUserView","query","setUserViewReady","userViewIdRef","useRef","setUserViewNodesMap","queue","working","waitingTasks","async","task","nextTask","shift","createAsyncQueue","namespace","list","InstanceApi_postSearchV3","fields","$eq","page","page_size","_userView$nodes","userView","current","instanceId","handleHttpError","getUserView","saveUserView","userViewData","InstanceApi_updateInstanceV2","interceptorParams","ignoreLoadingBar","InstanceApi_createInstance","adjustLineLabels","position","angle","size","_size","tempDirection","floor","PI","direction","tangent","tan","offsetAngle","offset","offsetSin","sin","offsetCos","cos","transform","getLineMaskRects","offsetLeft","offsetTop","getRenderedLineLabels","renderedLines","flatMap","path","getAttribute","getBBox","pathLength","getTotalLength","point","getPointAtLength","min","curveLine","points","curveType","startOffset","endOffset","isArray","curveFactory","curveLinear","curveBumpX","curveBumpY","curveMonotoneX","curveMonotoneY","curveNatural","curveBasis","startOffsets","getOffsets","endOffsets","curve","lineFunction","start","end","x1","y1","ratio","pow","getCoordinates","getRenderedLines","normalizedLines","renderedEdgeMap","WeakMap","renderedNodeMap","relatedNodes","renderedEdge","prepared","_markers$find","_markers$find2","rest","startMarkerOffset","endMarkerOffset","doTwoNodesOverlap","prepareRelatedNodes","addRelatedNodes","to","relates","Set","toNode","add","sourceDirection","getDirection","targetDirection","sourceRelates","getOrderedRelates","targetRelates","sourcePosition","targetPosition","p0","p1","c1","c2","getPolyLinePoints","getDirectLinePoints","atan2","filter","Boolean","sourceAngle","sx","sy","tx","ty","fixedAngle","sort","a","b","ax","ay","bx","by","handleKeyboard","event","activeTarget","activeNode","nodeId","activeEdge","keyCode","which","action","moveOnAxis","_node","axis","oppositeAxis","diff","candidates","abs","minBy","handleNodesMouseDown","connectNodes","dragNodes","scale","setConnectLineState","setConnectLineTo","setManualLayoutStatus","setNodeMovement","onSwitchActiveTarget","onNodesConnect","findNode","match","contains","sourceType","nodeMatched","clientX","clientY","__secret_internals","legacyDoTransform","onMouseMove","onMouseUp","document","removeEventListener","eventTargets","composedPath","addEventListener","moved","movement","matchEdgeByFilter","edgeType","normalizeLinesAndMarkers","lines","restLineConf","computedLineConf","draw","uniqueId","normalizedMarkers","lineMarkers","_placement","_type","offsetUnit","addMarker","activeMarkerIndex","activeRelatedMarkerIndex","markerIndex","findIndex","sameTarget","transformToCenter","canvasWidth","canvasHeight","scaleRange","Infinity","right","bottom","hw","hh","r","t","k","___CSS_LOADER_EXPORT___","module","toString"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 3489.e0ce6106.js.LICENSE.txt */
2
- (globalThis.webpackChunk_next_bricks_diagram=globalThis.webpackChunk_next_bricks_diagram||[]).push([[3489,2052],{7586:(t,e,n)=>{t.exports={graphlib:n(4678),layout:n(8870),debug:n(1665),util:{time:n(6856).time,notime:n(6856).notime},version:n(898)}},8642:(t,e,n)=>{"use strict";let r=n(6635),i=n(6856).uniqueId;t.exports={run:function(t){("greedy"===t.graph().acyclicer?r(t,function(t){return e=>t.edge(e).weight}(t)):function(t){let e=[],n={},r={};return t.nodes().forEach((function i(o){r.hasOwnProperty(o)||(r[o]=!0,n[o]=!0,t.outEdges(o).forEach((t=>{n.hasOwnProperty(t.w)?e.push(t):i(t.w)})),delete n[o])})),e}(t)).forEach((e=>{let n=t.edge(e);t.removeEdge(e),n.forwardName=e.name,n.reversed=!0,t.setEdge(e.w,e.v,n,i("rev"))}))},undo:function(t){t.edges().forEach((e=>{let n=t.edge(e);if(n.reversed){t.removeEdge(e);let r=n.forwardName;delete n.reversed,delete n.forwardName,t.setEdge(e.w,e.v,n,r)}}))}}},6883:(t,e,n)=>{let r=n(6856);function i(t,e,n,i,o,a){let s={width:0,height:0,rank:a,borderType:e},u=o[e][a-1],h=r.addDummyNode(t,"border",s,n);o[e][a]=h,t.setParent(h,i),u&&t.setEdge(u,h,{weight:1})}t.exports=function(t){t.children().forEach((function e(n){let r=t.children(n),o=t.node(n);if(r.length&&r.forEach(e),o.hasOwnProperty("minRank")){o.borderLeft=[],o.borderRight=[];for(let e=o.minRank,r=o.maxRank+1;e<r;++e)i(t,"borderLeft","_bl",n,o,e),i(t,"borderRight","_br",n,o,e)}}))}},5574:t=>{"use strict";function e(t){t.nodes().forEach((e=>n(t.node(e)))),t.edges().forEach((e=>n(t.edge(e))))}function n(t){let e=t.width;t.width=t.height,t.height=e}function r(t){t.y=-t.y}function i(t){let e=t.x;t.x=t.y,t.y=e}t.exports={adjust:function(t){let n=t.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||e(t)},undo:function(t){let n=t.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(t){t.nodes().forEach((e=>r(t.node(e)))),t.edges().forEach((e=>{let n=t.edge(e);n.points.forEach(r),n.hasOwnProperty("y")&&r(n)}))}(t),"lr"!==n&&"rl"!==n||(function(t){t.nodes().forEach((e=>i(t.node(e)))),t.edges().forEach((e=>{let n=t.edge(e);n.points.forEach(i),n.hasOwnProperty("x")&&i(n)}))}(t),e(t))}}},1983:t=>{function e(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function n(t,e){if("_next"!==t&&"_prev"!==t)return e}t.exports=class{constructor(){let t={};t._next=t._prev=t,this._sentinel=t}dequeue(){let t=this._sentinel,n=t._prev;if(n!==t)return e(n),n}enqueue(t){let n=this._sentinel;t._prev&&t._next&&e(t),t._next=n._next,n._next._prev=t,n._next=t,t._prev=n}toString(){let t=[],e=this._sentinel,r=e._prev;for(;r!==e;)t.push(JSON.stringify(r,n)),r=r._prev;return"["+t.join(", ")+"]"}}},1665:(t,e,n)=>{let r=n(6856),i=n(4678).Graph;t.exports={debugOrdering:function(t){let e=r.buildLayerMatrix(t),n=new i({compound:!0,multigraph:!0}).setGraph({});return t.nodes().forEach((e=>{n.setNode(e,{label:e}),n.setParent(e,"layer"+t.node(e).rank)})),t.edges().forEach((t=>n.setEdge(t.v,t.w,{},t.name))),e.forEach(((t,e)=>{let r="layer"+e;n.setNode(r,{rank:"same"}),t.reduce(((t,e)=>(n.setEdge(t,e,{style:"invis"}),e)))})),n}}},6635:(t,e,n)=>{let r=n(4678).Graph,i=n(1983);t.exports=function(t,e){if(t.nodeCount()<=1)return[];let n=function(t,e){let n=new r,o=0,a=0;t.nodes().forEach((t=>{n.setNode(t,{v:t,in:0,out:0})})),t.edges().forEach((t=>{let r=n.edge(t.v,t.w)||0,i=e(t),s=r+i;n.setEdge(t.v,t.w,s),a=Math.max(a,n.node(t.v).out+=i),o=Math.max(o,n.node(t.w).in+=i)}));let u=function(t){const e=[];for(let n=0;n<t;n++)e.push(n);return e}(a+o+3).map((()=>new i)),h=o+1;return n.nodes().forEach((t=>{s(u,h,n.node(t))})),{graph:n,buckets:u,zeroIdx:h}}(t,e||o);return function(t,e,n){let r,i=[],o=e[e.length-1],s=e[0];for(;t.nodeCount();){for(;r=s.dequeue();)a(t,e,n,r);for(;r=o.dequeue();)a(t,e,n,r);if(t.nodeCount())for(let o=e.length-2;o>0;--o)if(r=e[o].dequeue(),r){i=i.concat(a(t,e,n,r,!0));break}}return i}(n.graph,n.buckets,n.zeroIdx).flatMap((e=>t.outEdges(e.v,e.w)))};let o=()=>1;function a(t,e,n,r,i){let o=i?[]:void 0;return t.inEdges(r.v).forEach((r=>{let a=t.edge(r),u=t.node(r.v);i&&o.push({v:r.v,w:r.w}),u.out-=a,s(e,n,u)})),t.outEdges(r.v).forEach((r=>{let i=t.edge(r),o=r.w,a=t.node(o);a.in-=i,s(e,n,a)})),t.removeNode(r.v),o}function s(t,e,n){n.out?n.in?t[n.out-n.in+e].enqueue(n):t[t.length-1].enqueue(n):t[0].enqueue(n)}},8870:(t,e,n)=>{"use strict";let r=n(8642),i=n(1293),o=n(3045),a=n(6856).normalizeRanks,s=n(2488),u=n(6856).removeEmptyRanks,h=n(9885),c=n(6883),l=n(5574),f=n(5577),d=n(8924),p=n(6856),g=n(4678).Graph;t.exports=function(t,e){let n=e&&e.debugTiming?p.time:p.notime;n("layout",(()=>{let A=n(" buildLayoutGraph",(()=>function(t){let e=new g({multigraph:!0,compound:!0}),n=N(t.graph());return e.setGraph(Object.assign({},y,k(n,v),p.pick(n,m))),t.nodes().forEach((n=>{const r=k(N(t.node(n)),_);Object.keys(w).forEach((t=>{void 0===r[t]&&(r[t]=w[t])})),e.setNode(n,r),e.setParent(n,t.parent(n))})),t.edges().forEach((n=>{let r=N(t.edge(n));e.setEdge(n,Object.assign({},x,k(r,b),p.pick(r,E)))})),e}(t)));n(" runLayout",(()=>function(t,e,n){e(" makeSpaceForEdgeLabels",(()=>function(t){let e=t.graph();e.ranksep/=2,t.edges().forEach((n=>{let r=t.edge(n);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===e.rankdir||"BT"===e.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(t))),e(" removeSelfEdges",(()=>function(t){t.edges().forEach((e=>{if(e.v===e.w){var n=t.node(e.v);n.selfEdges||(n.selfEdges=[]),n.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}}))}(t))),e(" acyclic",(()=>r.run(t))),e(" nestingGraph.run",(()=>h.run(t))),e(" rank",(()=>o(p.asNonCompoundGraph(t)))),e(" injectEdgeLabelProxies",(()=>function(t){t.edges().forEach((e=>{let n=t.edge(e);if(n.width&&n.height){let n=t.node(e.v),r={rank:(t.node(e.w).rank-n.rank)/2+n.rank,e};p.addDummyNode(t,"edge-proxy",r,"_ep")}}))}(t))),e(" removeEmptyRanks",(()=>u(t))),e(" nestingGraph.cleanup",(()=>h.cleanup(t))),e(" normalizeRanks",(()=>a(t))),e(" assignRankMinMax",(()=>function(t){let e=0;t.nodes().forEach((n=>{let r=t.node(n);r.borderTop&&(r.minRank=t.node(r.borderTop).rank,r.maxRank=t.node(r.borderBottom).rank,e=Math.max(e,r.maxRank))})),t.graph().maxRank=e}(t))),e(" removeEdgeLabelProxies",(()=>function(t){t.nodes().forEach((e=>{let n=t.node(e);"edge-proxy"===n.dummy&&(t.edge(n.e).labelRank=n.rank,t.removeNode(e))}))}(t))),e(" normalize.run",(()=>i.run(t))),e(" parentDummyChains",(()=>s(t))),e(" addBorderSegments",(()=>c(t))),e(" order",(()=>f(t,n))),e(" insertSelfEdges",(()=>function(t){p.buildLayerMatrix(t).forEach((e=>{var n=0;e.forEach(((e,r)=>{var i=t.node(e);i.order=r+n,(i.selfEdges||[]).forEach((e=>{p.addDummyNode(t,"selfedge",{width:e.label.width,height:e.label.height,rank:i.rank,order:r+ ++n,e:e.e,label:e.label},"_se")})),delete i.selfEdges}))}))}(t))),e(" adjustCoordinateSystem",(()=>l.adjust(t))),e(" position",(()=>d(t))),e(" positionSelfEdges",(()=>function(t){t.nodes().forEach((e=>{var n=t.node(e);if("selfedge"===n.dummy){var r=t.node(n.e.v),i=r.x+r.width/2,o=r.y,a=n.x-i,s=r.height/2;t.setEdge(n.e,n.label),t.removeNode(e),n.label.points=[{x:i+2*a/3,y:o-s},{x:i+5*a/6,y:o-s},{x:i+a,y:o},{x:i+5*a/6,y:o+s},{x:i+2*a/3,y:o+s}],n.label.x=n.x,n.label.y=n.y}}))}(t))),e(" removeBorderNodes",(()=>function(t){t.nodes().forEach((e=>{if(t.children(e).length){let n=t.node(e),r=t.node(n.borderTop),i=t.node(n.borderBottom),o=t.node(n.borderLeft[n.borderLeft.length-1]),a=t.node(n.borderRight[n.borderRight.length-1]);n.width=Math.abs(a.x-o.x),n.height=Math.abs(i.y-r.y),n.x=o.x+n.width/2,n.y=r.y+n.height/2}})),t.nodes().forEach((e=>{"border"===t.node(e).dummy&&t.removeNode(e)}))}(t))),e(" normalize.undo",(()=>i.undo(t))),e(" fixupEdgeLabelCoords",(()=>function(t){t.edges().forEach((e=>{let n=t.edge(e);if(n.hasOwnProperty("x"))switch("l"!==n.labelpos&&"r"!==n.labelpos||(n.width-=n.labeloffset),n.labelpos){case"l":n.x-=n.width/2+n.labeloffset;break;case"r":n.x+=n.width/2+n.labeloffset}}))}(t))),e(" undoCoordinateSystem",(()=>l.undo(t))),e(" translateGraph",(()=>function(t){let e=Number.POSITIVE_INFINITY,n=0,r=Number.POSITIVE_INFINITY,i=0,o=t.graph(),a=o.marginx||0,s=o.marginy||0;function u(t){let o=t.x,a=t.y,s=t.width,u=t.height;e=Math.min(e,o-s/2),n=Math.max(n,o+s/2),r=Math.min(r,a-u/2),i=Math.max(i,a+u/2)}t.nodes().forEach((e=>u(t.node(e)))),t.edges().forEach((e=>{let n=t.edge(e);n.hasOwnProperty("x")&&u(n)})),e-=a,r-=s,t.nodes().forEach((n=>{let i=t.node(n);i.x-=e,i.y-=r})),t.edges().forEach((n=>{let i=t.edge(n);i.points.forEach((t=>{t.x-=e,t.y-=r})),i.hasOwnProperty("x")&&(i.x-=e),i.hasOwnProperty("y")&&(i.y-=r)})),o.width=n-e+a,o.height=i-r+s}(t))),e(" assignNodeIntersects",(()=>function(t){t.edges().forEach((e=>{let n,r,i=t.edge(e),o=t.node(e.v),a=t.node(e.w);i.points?(n=i.points[0],r=i.points[i.points.length-1]):(i.points=[],n=a,r=o),i.points.unshift(p.intersectRect(o,n)),i.points.push(p.intersectRect(a,r))}))}(t))),e(" reversePoints",(()=>function(t){t.edges().forEach((e=>{let n=t.edge(e);n.reversed&&n.points.reverse()}))}(t))),e(" acyclic.undo",(()=>r.undo(t)))}(A,n,e))),n(" updateInputGraph",(()=>function(t,e){t.nodes().forEach((n=>{let r=t.node(n),i=e.node(n);r&&(r.x=i.x,r.y=i.y,r.rank=i.rank,e.children(n).length&&(r.width=i.width,r.height=i.height))})),t.edges().forEach((n=>{let r=t.edge(n),i=e.edge(n);r.points=i.points,i.hasOwnProperty("x")&&(r.x=i.x,r.y=i.y)})),t.graph().width=e.graph().width,t.graph().height=e.graph().height}(t,A)))}))};let v=["nodesep","edgesep","ranksep","marginx","marginy"],y={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},m=["acyclicer","ranker","rankdir","align"],_=["width","height"],w={width:0,height:0},b=["minlen","weight","width","height","labeloffset"],x={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},E=["labelpos"];function k(t,e){return p.mapValues(p.pick(t,e),Number)}function N(t){var e={};return t&&Object.entries(t).forEach((([t,n])=>{"string"==typeof t&&(t=t.toLowerCase()),e[t]=n})),e}},9885:(t,e,n)=>{let r=n(6856);function i(t,e,n,o,a,s,u){let h=t.children(u);if(!h.length)return void(u!==e&&t.setEdge(e,u,{weight:0,minlen:n}));let c=r.addBorderNode(t,"_bt"),l=r.addBorderNode(t,"_bb"),f=t.node(u);t.setParent(c,u),f.borderTop=c,t.setParent(l,u),f.borderBottom=l,h.forEach((r=>{i(t,e,n,o,a,s,r);let h=t.node(r),f=h.borderTop?h.borderTop:r,d=h.borderBottom?h.borderBottom:r,p=h.borderTop?o:2*o,g=f!==d?1:a-s[u]+1;t.setEdge(c,f,{weight:p,minlen:g,nestingEdge:!0}),t.setEdge(d,l,{weight:p,minlen:g,nestingEdge:!0})})),t.parent(u)||t.setEdge(e,c,{weight:0,minlen:a+s[u]})}t.exports={run:function(t){let e=r.addDummyNode(t,"root",{},"_root"),n=function(t){var e={};function n(r,i){var o=t.children(r);o&&o.length&&o.forEach((t=>n(t,i+1))),e[r]=i}return t.children().forEach((t=>n(t,1))),e}(t),o=Math.max(...Object.values(n))-1,a=2*o+1;t.graph().nestingRoot=e,t.edges().forEach((e=>t.edge(e).minlen*=a));let s=function(t){return t.edges().reduce(((e,n)=>e+t.edge(n).weight),0)}(t)+1;t.children().forEach((r=>i(t,e,a,s,o,n,r))),t.graph().nodeRankFactor=a},cleanup:function(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,t.edges().forEach((e=>{t.edge(e).nestingEdge&&t.removeEdge(e)}))}}},1293:(t,e,n)=>{"use strict";let r=n(6856);t.exports={run:function(t){t.graph().dummyChains=[],t.edges().forEach((e=>function(t,e){let n,i,o,a=e.v,s=t.node(a).rank,u=e.w,h=t.node(u).rank,c=e.name,l=t.edge(e),f=l.labelRank;if(h!==s+1){for(t.removeEdge(e),o=0,++s;s<h;++o,++s)l.points=[],i={width:0,height:0,edgeLabel:l,edgeObj:e,rank:s},n=r.addDummyNode(t,"edge",i,"_d"),s===f&&(i.width=l.width,i.height=l.height,i.dummy="edge-label",i.labelpos=l.labelpos),t.setEdge(a,n,{weight:l.weight},c),0===o&&t.graph().dummyChains.push(n),a=n;t.setEdge(a,u,{weight:l.weight},c)}}(t,e)))},undo:function(t){t.graph().dummyChains.forEach((e=>{let n,r=t.node(e),i=r.edgeLabel;for(t.setEdge(r.edgeObj,i);r.dummy;)n=t.successors(e)[0],t.removeNode(e),i.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(i.x=r.x,i.y=r.y,i.width=r.width,i.height=r.height),e=n,r=t.node(e)}))}}},7508:t=>{t.exports=function(t,e,n){let r,i={};n.forEach((n=>{let o,a,s=t.parent(n);for(;s;){if(o=t.parent(s),o?(a=i[o],i[o]=s):(a=r,r=s),a&&a!==s)return void e.setEdge(a,s);s=o}}))}},4592:t=>{t.exports=function(t,e=[]){return e.map((e=>{let n=t.inEdges(e);if(n.length){let r=n.reduce(((e,n)=>{let r=t.edge(n),i=t.node(n.v);return{sum:e.sum+r.weight*i.order,weight:e.weight+r.weight}}),{sum:0,weight:0});return{v:e,barycenter:r.sum/r.weight,weight:r.weight}}return{v:e}}))}},4600:(t,e,n)=>{let r=n(4678).Graph,i=n(6856);t.exports=function(t,e,n){let o=function(t){for(var e;t.hasNode(e=i.uniqueId("_root")););return e}(t),a=new r({compound:!0}).setGraph({root:o}).setDefaultNodeLabel((e=>t.node(e)));return t.nodes().forEach((r=>{let i=t.node(r),s=t.parent(r);(i.rank===e||i.minRank<=e&&e<=i.maxRank)&&(a.setNode(r),a.setParent(r,s||o),t[n](r).forEach((e=>{let n=e.v===r?e.w:e.v,i=a.edge(n,r),o=void 0!==i?i.weight:0;a.setEdge(n,r,{weight:t.edge(e).weight+o})})),i.hasOwnProperty("minRank")&&a.setNode(r,{borderLeft:i.borderLeft[e],borderRight:i.borderRight[e]}))})),a}},835:(t,e,n)=>{"use strict";let r=n(6856).zipObject;function i(t,e,n){let i=r(n,n.map(((t,e)=>e))),o=e.flatMap((e=>t.outEdges(e).map((e=>({pos:i[e.w],weight:t.edge(e).weight}))).sort(((t,e)=>t.pos-e.pos)))),a=1;for(;a<n.length;)a<<=1;let s=2*a-1;a-=1;let u=new Array(s).fill(0),h=0;return o.forEach((t=>{let e=t.pos+a;u[e]+=t.weight;let n=0;for(;e>0;)e%2&&(n+=u[e+1]),e=e-1>>1,u[e]+=t.weight;h+=t.weight*n})),h}t.exports=function(t,e){let n=0;for(let r=1;r<e.length;++r)n+=i(t,e[r-1],e[r]);return n}},5577:(t,e,n)=>{"use strict";let r=n(6498),i=n(835),o=n(2804),a=n(4600),s=n(7508),u=n(4678).Graph,h=n(6856);function c(t,e,n){return e.map((function(e){return a(t,e,n)}))}function l(t,e){let n=new u;t.forEach((function(t){let r=t.graph().root,i=o(t,r,n,e);i.vs.forEach(((e,n)=>t.node(e).order=n)),s(t,n,i.vs)}))}function f(t,e){Object.values(e).forEach((e=>e.forEach(((e,n)=>t.node(e).order=n))))}t.exports=function t(e,n){if(n&&"function"==typeof n.customOrder)return void n.customOrder(e,t);let o=h.maxRank(e),a=c(e,h.range(1,o+1),"inEdges"),s=c(e,h.range(o-1,-1,-1),"outEdges"),u=r(e);if(f(e,u),n&&n.disableOptimalOrderHeuristic)return;let d,p=Number.POSITIVE_INFINITY;for(let t=0,n=0;n<4;++t,++n){l(t%2?a:s,t%4>=2),u=h.buildLayerMatrix(e);let r=i(e,u);r<p&&(n=0,d=Object.assign({},u),p=r)}f(e,d)}},6498:(t,e,n)=>{"use strict";let r=n(6856);t.exports=function(t){let e={},n=t.nodes().filter((e=>!t.children(e).length)),i=Math.max(...n.map((e=>t.node(e).rank))),o=r.range(i+1).map((()=>[]));return n.sort(((e,n)=>t.node(e).rank-t.node(n).rank)).forEach((function n(r){if(e[r])return;e[r]=!0;let i=t.node(r);o[i.rank].push(r),t.successors(r).forEach(n)})),o}},2635:(t,e,n)=>{"use strict";let r=n(6856);t.exports=function(t,e){let n={};return t.forEach(((t,e)=>{let r=n[t.v]={indegree:0,in:[],out:[],vs:[t.v],i:e};void 0!==t.barycenter&&(r.barycenter=t.barycenter,r.weight=t.weight)})),e.edges().forEach((t=>{let e=n[t.v],r=n[t.w];void 0!==e&&void 0!==r&&(r.indegree++,e.out.push(n[t.w]))})),function(t){let e=[];function n(t){return e=>{e.merged||(void 0===e.barycenter||void 0===t.barycenter||e.barycenter>=t.barycenter)&&function(t,e){let n=0,r=0;t.weight&&(n+=t.barycenter*t.weight,r+=t.weight),e.weight&&(n+=e.barycenter*e.weight,r+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=n/r,t.weight=r,t.i=Math.min(e.i,t.i),e.merged=!0}(t,e)}}function i(e){return n=>{n.in.push(e),0==--n.indegree&&t.push(n)}}for(;t.length;){let r=t.pop();e.push(r),r.in.reverse().forEach(n(r)),r.out.forEach(i(r))}return e.filter((t=>!t.merged)).map((t=>r.pick(t,["vs","i","barycenter","weight"])))}(Object.values(n).filter((t=>!t.indegree)))}},2804:(t,e,n)=>{let r=n(4592),i=n(2635),o=n(5437);t.exports=function t(e,n,a,s){let u=e.children(n),h=e.node(n),c=h?h.borderLeft:void 0,l=h?h.borderRight:void 0,f={};c&&(u=u.filter((t=>t!==c&&t!==l)));let d=r(e,u);d.forEach((n=>{if(e.children(n.v).length){let o=t(e,n.v,a,s);f[n.v]=o,o.hasOwnProperty("barycenter")&&(i=o,void 0!==(r=n).barycenter?(r.barycenter=(r.barycenter*r.weight+i.barycenter*i.weight)/(r.weight+i.weight),r.weight+=i.weight):(r.barycenter=i.barycenter,r.weight=i.weight))}var r,i}));let p=i(d,a);!function(t,e){t.forEach((t=>{t.vs=t.vs.flatMap((t=>e[t]?e[t].vs:t))}))}(p,f);let g=o(p,s);if(c&&(g.vs=[c,g.vs,l].flat(!0),e.predecessors(c).length)){let t=e.node(e.predecessors(c)[0]),n=e.node(e.predecessors(l)[0]);g.hasOwnProperty("barycenter")||(g.barycenter=0,g.weight=0),g.barycenter=(g.barycenter*g.weight+t.order+n.order)/(g.weight+2),g.weight+=2}return g}},5437:(t,e,n)=>{let r=n(6856);function i(t,e,n){let r;for(;e.length&&(r=e[e.length-1]).i<=n;)e.pop(),t.push(r.vs),n++;return n}t.exports=function(t,e){let n=r.partition(t,(t=>t.hasOwnProperty("barycenter"))),o=n.lhs,a=n.rhs.sort(((t,e)=>e.i-t.i)),s=[],u=0,h=0,c=0;var l;o.sort((l=!!e,(t,e)=>t.barycenter<e.barycenter?-1:t.barycenter>e.barycenter?1:l?e.i-t.i:t.i-e.i)),c=i(s,a,c),o.forEach((t=>{c+=t.vs.length,s.push(t.vs),u+=t.barycenter*t.weight,h+=t.weight,c=i(s,a,c)}));let f={vs:s.flat(!0)};return h&&(f.barycenter=u/h,f.weight=h),f}},2488:t=>{t.exports=function(t){let e=function(t){let e={},n=0;return t.children().forEach((function r(i){let o=n;t.children(i).forEach(r),e[i]={low:o,lim:n++}})),e}(t);t.graph().dummyChains.forEach((n=>{let r=t.node(n),i=r.edgeObj,o=function(t,e,n,r){let i,o,a=[],s=[],u=Math.min(e[n].low,e[r].low),h=Math.max(e[n].lim,e[r].lim);i=n;do{i=t.parent(i),a.push(i)}while(i&&(e[i].low>u||h>e[i].lim));for(o=i,i=r;(i=t.parent(i))!==o;)s.push(i);return{path:a.concat(s.reverse()),lca:o}}(t,e,i.v,i.w),a=o.path,s=o.lca,u=0,h=a[u],c=!0;for(;n!==i.w;){if(r=t.node(n),c){for(;(h=a[u])!==s&&t.node(h).maxRank<r.rank;)u++;h===s&&(c=!1)}if(!c){for(;u<a.length-1&&t.node(h=a[u+1]).minRank<=r.rank;)u++;h=a[u]}t.setParent(n,h),n=t.successors(n)[0]}}))}},8121:(t,e,n)=>{"use strict";let r=n(4678).Graph,i=n(6856);function o(t,e){let n={};return e.length&&e.reduce((function(e,r){let i=0,o=0,a=e.length,u=r[r.length-1];return r.forEach(((e,h)=>{let c=function(t,e){if(t.node(e).dummy)return t.predecessors(e).find((e=>t.node(e).dummy))}(t,e),l=c?t.node(c).order:a;(c||e===u)&&(r.slice(o,h+1).forEach((e=>{t.predecessors(e).forEach((r=>{let o=t.node(r),a=o.order;!(a<i||l<a)||o.dummy&&t.node(e).dummy||s(n,r,e)}))})),o=h+1,i=l)})),r})),n}function a(t,e){let n={};function r(e,r,o,a,u){let h;i.range(r,o).forEach((r=>{h=e[r],t.node(h).dummy&&t.predecessors(h).forEach((e=>{let r=t.node(e);r.dummy&&(r.order<a||r.order>u)&&s(n,e,h)}))}))}return e.length&&e.reduce((function(e,n){let i,o=-1,a=0;return n.forEach(((s,u)=>{if("border"===t.node(s).dummy){let e=t.predecessors(s);e.length&&(i=t.node(e[0]).order,r(n,a,u,o,i),a=u,o=i)}r(n,a,n.length,i,e.length)})),n})),n}function s(t,e,n){if(e>n){let t=e;e=n,n=t}let r=t[e];r||(t[e]=r={}),r[n]=!0}function u(t,e,n){if(e>n){let t=e;e=n,n=t}return!!t[e]&&t[e].hasOwnProperty(n)}function h(t,e,n,r){let i={},o={},a={};return e.forEach((t=>{t.forEach(((t,e)=>{i[t]=t,o[t]=t,a[t]=e}))})),e.forEach((t=>{let e=-1;t.forEach((t=>{let s=r(t);if(s.length){s=s.sort(((t,e)=>a[t]-a[e]));let r=(s.length-1)/2;for(let h=Math.floor(r),c=Math.ceil(r);h<=c;++h){let r=s[h];o[t]===t&&e<a[r]&&!u(n,t,r)&&(o[r]=t,o[t]=i[t]=i[r],e=a[r])}}}))})),{root:i,align:o}}function c(t,e,n,i,o){let a={},s=function(t,e,n,i){let o=new r,a=t.graph(),s=function(t,e,n){return(r,i,o)=>{let a,s=r.node(i),u=r.node(o),h=0;if(h+=s.width/2,s.hasOwnProperty("labelpos"))switch(s.labelpos.toLowerCase()){case"l":a=-s.width/2;break;case"r":a=s.width/2}if(a&&(h+=n?a:-a),a=0,h+=(s.dummy?e:t)/2,h+=(u.dummy?e:t)/2,h+=u.width/2,u.hasOwnProperty("labelpos"))switch(u.labelpos.toLowerCase()){case"l":a=u.width/2;break;case"r":a=-u.width/2}return a&&(h+=n?a:-a),a=0,h}}(a.nodesep,a.edgesep,i);return e.forEach((e=>{let r;e.forEach((e=>{let i=n[e];if(o.setNode(i),r){var a=n[r],u=o.edge(a,i);o.setEdge(a,i,Math.max(s(t,e,r),u||0))}r=e}))})),o}(t,e,n,o),u=o?"borderLeft":"borderRight";function h(t,e){let n=s.nodes(),r=n.pop(),i={};for(;r;)i[r]?t(r):(i[r]=!0,n.push(r),n=n.concat(e(r))),r=n.pop()}return h((function(t){a[t]=s.inEdges(t).reduce(((t,e)=>Math.max(t,a[e.v]+s.edge(e))),0)}),s.predecessors.bind(s)),h((function(e){let n=s.outEdges(e).reduce(((t,e)=>Math.min(t,a[e.w]-s.edge(e))),Number.POSITIVE_INFINITY),r=t.node(e);n!==Number.POSITIVE_INFINITY&&r.borderType!==u&&(a[e]=Math.max(a[e],n))}),s.successors.bind(s)),Object.keys(i).forEach((t=>a[t]=a[n[t]])),a}function l(t,e){return Object.values(e).reduce(((e,n)=>{let r=Number.NEGATIVE_INFINITY,i=Number.POSITIVE_INFINITY;Object.entries(n).forEach((([e,n])=>{let o=function(t,e){return t.node(e).width}(t,e)/2;r=Math.max(n+o,r),i=Math.min(n-o,i)}));const o=r-i;return o<e[0]&&(e=[o,n]),e}),[Number.POSITIVE_INFINITY,null])[1]}function f(t,e){let n=Object.values(e),r=Math.min(...n),o=Math.max(...n);["u","d"].forEach((n=>{["l","r"].forEach((a=>{let s=n+a,u=t[s];if(u===e)return;let h=Object.values(u),c=r-Math.min(...h);"l"!==a&&(c=o-Math.max(...h)),c&&(t[s]=i.mapValues(u,(t=>t+c)))}))}))}function d(t,e){return i.mapValues(t.ul,((n,r)=>{if(e)return t[e.toLowerCase()][r];{let e=Object.values(t).map((t=>t[r])).sort(((t,e)=>t-e));return(e[1]+e[2])/2}}))}t.exports={positionX:function(t){let e,n=i.buildLayerMatrix(t),r=Object.assign(o(t,n),a(t,n)),s={};["u","d"].forEach((o=>{e="u"===o?n:Object.values(n).reverse(),["l","r"].forEach((n=>{"r"===n&&(e=e.map((t=>Object.values(t).reverse())));let a=("u"===o?t.predecessors:t.successors).bind(t),u=h(0,e,r,a),l=c(t,e,u.root,u.align,"r"===n);"r"===n&&(l=i.mapValues(l,(t=>-t))),s[o+n]=l}))}));let u=l(t,s);return f(s,u),d(s,t.graph().align)},findType1Conflicts:o,findType2Conflicts:a,addConflict:s,hasConflict:u,verticalAlignment:h,horizontalCompaction:c,alignCoordinates:f,findSmallestWidthAlignment:l,balance:d}},8924:(t,e,n)=>{"use strict";let r=n(6856),i=n(8121).positionX;t.exports=function(t){(function(t){let e=r.buildLayerMatrix(t),n=t.graph().ranksep,i=0;e.forEach((e=>{const r=e.reduce(((e,n)=>{const r=t.node(n).height;return e>r?e:r}),0);e.forEach((e=>t.node(e).y=i+r/2)),i+=r+n}))})(t=r.asNonCompoundGraph(t)),Object.entries(i(t)).forEach((([e,n])=>t.node(e).x=n))}},7885:(t,e,n)=>{"use strict";var r=n(4678).Graph,i=n(4389).slack;function o(t,e){return t.nodes().forEach((function n(r){e.nodeEdges(r).forEach((o=>{var a=o.v,s=r===a?o.w:a;t.hasNode(s)||i(e,o)||(t.setNode(s,{}),t.setEdge(r,s,{}),n(s))}))})),t.nodeCount()}function a(t,e){return e.edges().reduce(((n,r)=>{let o=Number.POSITIVE_INFINITY;return t.hasNode(r.v)!==t.hasNode(r.w)&&(o=i(e,r)),o<n[0]?[o,r]:n}),[Number.POSITIVE_INFINITY,null])[1]}function s(t,e,n){t.nodes().forEach((t=>e.node(t).rank+=n))}t.exports=function(t){var e,n,u=new r({directed:!1}),h=t.nodes()[0],c=t.nodeCount();for(u.setNode(h,{});o(u,t)<c;)e=a(u,t),n=u.hasNode(e.v)?i(t,e):-i(t,e),s(u,t,n);return u}},3045:(t,e,n)=>{"use strict";var r=n(4389).longestPath,i=n(7885),o=n(7520);t.exports=function(t){switch(t.graph().ranker){case"network-simplex":default:!function(t){o(t)}(t);break;case"tight-tree":!function(t){r(t),i(t)}(t);break;case"longest-path":a(t)}};var a=r},7520:(t,e,n)=>{"use strict";var r=n(7885),i=n(4389).slack,o=n(4389).longestPath,a=n(4678).alg.preorder,s=n(4678).alg.postorder,u=n(6856).simplify;function h(t){t=u(t),o(t);var e,n=r(t);for(f(n),c(n,t);e=p(n);)v(n,t,e,g(n,t,e))}function c(t,e){var n=s(t,t.nodes());(n=n.slice(0,n.length-1)).forEach((n=>function(t,e,n){var r=t.node(n).parent;t.edge(n,r).cutvalue=l(t,e,n)}(t,e,n)))}function l(t,e,n){var r=t.node(n).parent,i=!0,o=e.edge(n,r),a=0;return o||(i=!1,o=e.edge(r,n)),a=o.weight,e.nodeEdges(n).forEach((o=>{var s,u,h=o.v===n,c=h?o.w:o.v;if(c!==r){var l=h===i,f=e.edge(o).weight;if(a+=l?f:-f,s=n,u=c,t.hasEdge(s,u)){var d=t.edge(n,c).cutvalue;a+=l?-d:d}}})),a}function f(t,e){arguments.length<2&&(e=t.nodes()[0]),d(t,{},1,e)}function d(t,e,n,r,i){var o=n,a=t.node(r);return e[r]=!0,t.neighbors(r).forEach((i=>{e.hasOwnProperty(i)||(n=d(t,e,n,i,r))})),a.low=o,a.lim=n++,i?a.parent=i:delete a.parent,n}function p(t){return t.edges().find((e=>t.edge(e).cutvalue<0))}function g(t,e,n){var r=n.v,o=n.w;e.hasEdge(r,o)||(r=n.w,o=n.v);var a=t.node(r),s=t.node(o),u=a,h=!1;a.lim>s.lim&&(u=s,h=!0);var c=e.edges().filter((e=>h===y(0,t.node(e.v),u)&&h!==y(0,t.node(e.w),u)));return c.reduce(((t,n)=>i(e,n)<i(e,t)?n:t))}function v(t,e,n,r){var i=n.v,o=n.w;t.removeEdge(i,o),t.setEdge(r.v,r.w,{}),f(t),c(t,e),function(t,e){var n=t.nodes().find((t=>!e.node(t).parent)),r=a(t,n);(r=r.slice(1)).forEach((n=>{var r=t.node(n).parent,i=e.edge(n,r),o=!1;i||(i=e.edge(r,n),o=!0),e.node(n).rank=e.node(r).rank+(o?i.minlen:-i.minlen)}))}(t,e)}function y(t,e,n){return n.low<=e.lim&&e.lim<=n.lim}t.exports=h,h.initLowLimValues=f,h.initCutValues=c,h.calcCutValue=l,h.leaveEdge=p,h.enterEdge=g,h.exchangeEdges=v},4389:t=>{"use strict";t.exports={longestPath:function(t){var e={};t.sources().forEach((function n(r){var i=t.node(r);if(e.hasOwnProperty(r))return i.rank;e[r]=!0;var o=Math.min(...t.outEdges(r).map((e=>null==e?Number.POSITIVE_INFINITY:n(e.w)-t.edge(e).minlen)));return o===Number.POSITIVE_INFINITY&&(o=0),i.rank=o}))},slack:function(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}}},6856:(t,e,n)=>{"use strict";let r=n(4678).Graph;function i(t,e,n,r){let i;do{i=s(r)}while(t.hasNode(i));return n.dummy=e,t.setNode(i,n),i}function o(t){return Math.max(...t.nodes().map((e=>{let n=t.node(e).rank;return void 0===n?Number.MIN_VALUE:n})))}t.exports={addBorderNode:function(t,e,n,r){let o={width:0,height:0};return arguments.length>=4&&(o.rank=n,o.order=r),i(t,"border",o,e)},addDummyNode:i,asNonCompoundGraph:function(t){let e=new r({multigraph:t.isMultigraph()}).setGraph(t.graph());return t.nodes().forEach((n=>{t.children(n).length||e.setNode(n,t.node(n))})),t.edges().forEach((n=>{e.setEdge(n,t.edge(n))})),e},buildLayerMatrix:function(t){let e=u(o(t)+1).map((()=>[]));return t.nodes().forEach((n=>{let r=t.node(n),i=r.rank;void 0!==i&&(e[i][r.order]=n)})),e},intersectRect:function(t,e){let n,r,i=t.x,o=t.y,a=e.x-i,s=e.y-o,u=t.width/2,h=t.height/2;if(!a&&!s)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(s)*u>Math.abs(a)*h?(s<0&&(h=-h),n=h*a/s,r=h):(a<0&&(u=-u),n=u,r=u*s/a),{x:i+n,y:o+r}},mapValues:function(t,e){let n=e;return"string"==typeof e&&(n=t=>t[e]),Object.entries(t).reduce(((t,[e,r])=>(t[e]=n(r,e),t)),{})},maxRank:o,normalizeRanks:function(t){let e=Math.min(...t.nodes().map((e=>{let n=t.node(e).rank;return void 0===n?Number.MAX_VALUE:n})));t.nodes().forEach((n=>{let r=t.node(n);r.hasOwnProperty("rank")&&(r.rank-=e)}))},notime:function(t,e){return e()},partition:function(t,e){let n={lhs:[],rhs:[]};return t.forEach((t=>{e(t)?n.lhs.push(t):n.rhs.push(t)})),n},pick:function(t,e){const n={};for(const r of e)void 0!==t[r]&&(n[r]=t[r]);return n},predecessorWeights:function(t){let e=t.nodes().map((e=>{let n={};return t.inEdges(e).forEach((e=>{n[e.v]=(n[e.v]||0)+t.edge(e).weight})),n}));return h(t.nodes(),e)},range:u,removeEmptyRanks:function(t){let e=Math.min(...t.nodes().map((e=>t.node(e).rank))),n=[];t.nodes().forEach((r=>{let i=t.node(r).rank-e;n[i]||(n[i]=[]),n[i].push(r)}));let r=0,i=t.graph().nodeRankFactor;Array.from(n).forEach(((e,n)=>{void 0===e&&n%i!=0?--r:void 0!==e&&r&&e.forEach((e=>t.node(e).rank+=r))}))},simplify:function(t){let e=(new r).setGraph(t.graph());return t.nodes().forEach((n=>e.setNode(n,t.node(n)))),t.edges().forEach((n=>{let r=e.edge(n.v,n.w)||{weight:0,minlen:1},i=t.edge(n);e.setEdge(n.v,n.w,{weight:r.weight+i.weight,minlen:Math.max(r.minlen,i.minlen)})})),e},successorWeights:function(t){let e=t.nodes().map((e=>{let n={};return t.outEdges(e).forEach((e=>{n[e.w]=(n[e.w]||0)+t.edge(e).weight})),n}));return h(t.nodes(),e)},time:function(t,e){let n=Date.now();try{return e()}finally{console.log(t+" time: "+(Date.now()-n)+"ms")}},uniqueId:s,zipObject:h};let a=0;function s(t){var e=++a;return toString(t)+e}function u(t,e,n=1){null==e&&(e=t,t=0);let r=t=>t<e;n<0&&(r=t=>e<t);const i=[];for(let e=t;r(e);e+=n)i.push(e);return i}function h(t,e){return t.reduce(((t,n,r)=>(t[n]=e[r],t)),{})}},898:t=>{t.exports="1.1.3"},4678:(t,e,n)=>{var r=n(2314);t.exports={Graph:r.Graph,json:n(2258),alg:n(6311),version:r.version}},2335:t=>{t.exports=function(t){var e,n={},r=[];function i(r){n.hasOwnProperty(r)||(n[r]=!0,e.push(r),t.successors(r).forEach(i),t.predecessors(r).forEach(i))}return t.nodes().forEach((function(t){e=[],i(t),e.length&&r.push(e)})),r}},6248:t=>{function e(t,e,n,i){for(var o=[[t,!1]];o.length>0;){var a=o.pop();a[1]?i.push(a[0]):n.hasOwnProperty(a[0])||(n[a[0]]=!0,o.push([a[0],!0]),r(e(a[0]),(t=>o.push([t,!1]))))}}function n(t,e,n,i){for(var o=[t];o.length>0;){var a=o.pop();n.hasOwnProperty(a)||(n[a]=!0,i.push(a),r(e(a),(t=>o.push(t))))}}function r(t,e){for(var n=t.length;n--;)e(t[n],n,t);return t}t.exports=function(t,r,i){Array.isArray(r)||(r=[r]);var o=t.isDirected()?e=>t.successors(e):e=>t.neighbors(e),a="post"===i?e:n,s=[],u={};return r.forEach((e=>{if(!t.hasNode(e))throw new Error("Graph does not have node: "+e);a(e,o,u,s)})),s}},3651:(t,e,n)=>{var r=n(4237);t.exports=function(t,e,n){return t.nodes().reduce((function(i,o){return i[o]=r(t,o,e,n),i}),{})}},4237:(t,e,n)=>{var r=n(1997);t.exports=function(t,e,n,o){return function(t,e,n,i){var o,a,s={},u=new r,h=function(t){var e=t.v!==o?t.v:t.w,r=s[e],i=n(t),h=a.distance+i;if(i<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+t+" Weight: "+i);h<r.distance&&(r.distance=h,r.predecessor=o,u.decrease(e,h))};for(t.nodes().forEach((function(t){var n=t===e?0:Number.POSITIVE_INFINITY;s[t]={distance:n},u.add(t,n)}));u.size()>0&&(o=u.removeMin(),(a=s[o]).distance!==Number.POSITIVE_INFINITY);)i(o).forEach(h);return s}(t,String(e),n||i,o||function(e){return t.outEdges(e)})};var i=()=>1},402:(t,e,n)=>{var r=n(3911);t.exports=function(t){return r(t).filter((function(e){return e.length>1||1===e.length&&t.hasEdge(e[0],e[0])}))}},3242:t=>{t.exports=function(t,n,r){return function(t,e,n){var r={},i=t.nodes();return i.forEach((function(t){r[t]={},r[t][t]={distance:0},i.forEach((function(e){t!==e&&(r[t][e]={distance:Number.POSITIVE_INFINITY})})),n(t).forEach((function(n){var i=n.v===t?n.w:n.v,o=e(n);r[t][i]={distance:o,predecessor:t}}))})),i.forEach((function(t){var e=r[t];i.forEach((function(n){var o=r[n];i.forEach((function(n){var r=o[t],i=e[n],a=o[n],s=r.distance+i.distance;s<a.distance&&(a.distance=s,a.predecessor=i.predecessor)}))}))})),r}(t,n||e,r||function(e){return t.outEdges(e)})};var e=()=>1},6311:(t,e,n)=>{t.exports={components:n(2335),dijkstra:n(4237),dijkstraAll:n(3651),findCycles:n(402),floydWarshall:n(3242),isAcyclic:n(1158),postorder:n(9289),preorder:n(1924),prim:n(9763),tarjan:n(3911),topsort:n(1964)}},1158:(t,e,n)=>{var r=n(1964);t.exports=function(t){try{r(t)}catch(t){if(t instanceof r.CycleException)return!1;throw t}return!0}},9289:(t,e,n)=>{var r=n(6248);t.exports=function(t,e){return r(t,e,"post")}},1924:(t,e,n)=>{var r=n(6248);t.exports=function(t,e){return r(t,e,"pre")}},9763:(t,e,n)=>{var r=n(8114),i=n(1997);t.exports=function(t,e){var n,o=new r,a={},s=new i;function u(t){var r=t.v===n?t.w:t.v,i=s.priority(r);if(void 0!==i){var o=e(t);o<i&&(a[r]=n,s.decrease(r,o))}}if(0===t.nodeCount())return o;t.nodes().forEach((function(t){s.add(t,Number.POSITIVE_INFINITY),o.setNode(t)})),s.decrease(t.nodes()[0],0);for(var h=!1;s.size()>0;){if(n=s.removeMin(),a.hasOwnProperty(n))o.setEdge(n,a[n]);else{if(h)throw new Error("Input graph is not connected: "+t);h=!0}t.nodeEdges(n).forEach(u)}return o}},3911:t=>{t.exports=function(t){var e=0,n=[],r={},i=[];function o(a){var s=r[a]={onStack:!0,lowlink:e,index:e++};if(n.push(a),t.successors(a).forEach((function(t){r.hasOwnProperty(t)?r[t].onStack&&(s.lowlink=Math.min(s.lowlink,r[t].index)):(o(t),s.lowlink=Math.min(s.lowlink,r[t].lowlink))})),s.lowlink===s.index){var u,h=[];do{u=n.pop(),r[u].onStack=!1,h.push(u)}while(a!==u);i.push(h)}}return t.nodes().forEach((function(t){r.hasOwnProperty(t)||o(t)})),i}},1964:t=>{function e(t){var e={},r={},i=[];if(t.sinks().forEach((function o(a){if(r.hasOwnProperty(a))throw new n;e.hasOwnProperty(a)||(r[a]=!0,e[a]=!0,t.predecessors(a).forEach(o),delete r[a],i.push(a))})),Object.keys(e).length!==t.nodeCount())throw new n;return i}class n extends Error{constructor(){super(...arguments)}}t.exports=e,e.CycleException=n},1997:t=>{t.exports=class{_arr=[];_keyIndices={};size(){return this._arr.length}keys(){return this._arr.map((function(t){return t.key}))}has(t){return this._keyIndices.hasOwnProperty(t)}priority(t){var e=this._keyIndices[t];if(void 0!==e)return this._arr[e].priority}min(){if(0===this.size())throw new Error("Queue underflow");return this._arr[0].key}add(t,e){var n=this._keyIndices;if(t=String(t),!n.hasOwnProperty(t)){var r=this._arr,i=r.length;return n[t]=i,r.push({key:t,priority:e}),this._decrease(i),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var t=this._arr.pop();return delete this._keyIndices[t.key],this._heapify(0),t.key}decrease(t,e){var n=this._keyIndices[t];if(e>this._arr[n].priority)throw new Error("New priority is greater than current priority. Key: "+t+" Old: "+this._arr[n].priority+" New: "+e);this._arr[n].priority=e,this._decrease(n)}_heapify(t){var e=this._arr,n=2*t,r=n+1,i=t;n<e.length&&(i=e[n].priority<e[i].priority?n:i,r<e.length&&(i=e[r].priority<e[i].priority?r:i),i!==t&&(this._swap(t,i),this._heapify(i)))}_decrease(t){for(var e,n=this._arr,r=n[t].priority;0!==t&&!(n[e=t>>1].priority<r);)this._swap(t,e),t=e}_swap(t,e){var n=this._arr,r=this._keyIndices,i=n[t],o=n[e];n[t]=o,n[e]=i,r[o.key]=t,r[i.key]=e}}},8114:t=>{"use strict";var e="\0",n="\0",r="";function i(t,e){t[e]?t[e]++:t[e]=1}function o(t,e){--t[e]||delete t[e]}function a(t,n,i,o){var a=""+n,s=""+i;if(!t&&a>s){var u=a;a=s,s=u}return a+r+s+r+(void 0===o?e:o)}function s(t,e){return a(t,e.v,e.w,e.name)}t.exports=class{_isDirected=!0;_isMultigraph=!1;_isCompound=!1;_label;_defaultNodeLabelFn=()=>{};_defaultEdgeLabelFn=()=>{};_nodes={};_in={};_preds={};_out={};_sucs={};_edgeObjs={};_edgeLabels={};_nodeCount=0;_edgeCount=0;_parent;_children;constructor(t){t&&(this._isDirected=!t.hasOwnProperty("directed")||t.directed,this._isMultigraph=!!t.hasOwnProperty("multigraph")&&t.multigraph,this._isCompound=!!t.hasOwnProperty("compound")&&t.compound),this._isCompound&&(this._parent={},this._children={},this._children[n]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return this._defaultNodeLabelFn=t,"function"!=typeof t&&(this._defaultNodeLabelFn=()=>t),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var t=this;return this.nodes().filter((e=>0===Object.keys(t._in[e]).length))}sinks(){var t=this;return this.nodes().filter((e=>0===Object.keys(t._out[e]).length))}setNodes(t,e){var n=arguments,r=this;return t.forEach((function(t){n.length>1?r.setNode(t,e):r.setNode(t)})),this}setNode(t,e){return this._nodes.hasOwnProperty(t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=n,this._children[t]={},this._children[n][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return this._nodes.hasOwnProperty(t)}removeNode(t){var e=this;if(this._nodes.hasOwnProperty(t)){var n=t=>e.removeEdge(e._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],this.children(t).forEach((function(t){e.setParent(t)})),delete this._children[t]),Object.keys(this._in[t]).forEach(n),delete this._in[t],delete this._preds[t],Object.keys(this._out[t]).forEach(n),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(void 0===e)e=n;else{for(var r=e+="";void 0!==r;r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==n)return e}}children(t=n){if(this._isCompound){var e=this._children[t];if(e)return Object.keys(e)}else{if(t===n)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return Object.keys(e)}successors(t){var e=this._sucs[t];if(e)return Object.keys(e)}neighbors(t){var e=this.predecessors(t);if(e){const r=new Set(e);for(var n of this.successors(t))r.add(n);return Array.from(r.values())}}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var n=this;Object.entries(this._nodes).forEach((function([n,r]){t(n)&&e.setNode(n,r)})),Object.values(this._edgeObjs).forEach((function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,n.edge(t))}));var r={};function i(t){var o=n.parent(t);return void 0===o||e.hasNode(o)?(r[t]=o,o):o in r?r[o]:i(o)}return this._isCompound&&e.nodes().forEach((t=>e.setParent(t,i(t)))),e}setDefaultEdgeLabel(t){return this._defaultEdgeLabelFn=t,"function"!=typeof t&&(this._defaultEdgeLabelFn=()=>t),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(t,e){var n=this,r=arguments;return t.reduce((function(t,i){return r.length>1?n.setEdge(t,i,e):n.setEdge(t,i),i})),this}setEdge(){var t,e,n,r,o=!1,s=arguments[0];"object"==typeof s&&null!==s&&"v"in s?(t=s.v,e=s.w,n=s.name,2===arguments.length&&(r=arguments[1],o=!0)):(t=s,e=arguments[1],n=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),t=""+t,e=""+e,void 0!==n&&(n=""+n);var u=a(this._isDirected,t,e,n);if(this._edgeLabels.hasOwnProperty(u))return o&&(this._edgeLabels[u]=r),this;if(void 0!==n&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[u]=o?r:this._defaultEdgeLabelFn(t,e,n);var h=function(t,e,n,r){var i=""+e,o=""+n;if(!t&&i>o){var a=i;i=o,o=a}var s={v:i,w:o};return r&&(s.name=r),s}(this._isDirected,t,e,n);return t=h.v,e=h.w,Object.freeze(h),this._edgeObjs[u]=h,i(this._preds[e],t),i(this._sucs[t],e),this._in[e][u]=h,this._out[t][u]=h,this._edgeCount++,this}edge(t,e,n){var r=1===arguments.length?s(this._isDirected,arguments[0]):a(this._isDirected,t,e,n);return this._edgeLabels[r]}edgeAsObj(){const t=this.edge(...arguments);return"object"!=typeof t?{label:t}:t}hasEdge(t,e,n){var r=1===arguments.length?s(this._isDirected,arguments[0]):a(this._isDirected,t,e,n);return this._edgeLabels.hasOwnProperty(r)}removeEdge(t,e,n){var r=1===arguments.length?s(this._isDirected,arguments[0]):a(this._isDirected,t,e,n),i=this._edgeObjs[r];return i&&(t=i.v,e=i.w,delete this._edgeLabels[r],delete this._edgeObjs[r],o(this._preds[e],t),o(this._sucs[t],e),delete this._in[e][r],delete this._out[t][r],this._edgeCount--),this}inEdges(t,e){var n=this._in[t];if(n){var r=Object.values(n);return e?r.filter((t=>t.v===e)):r}}outEdges(t,e){var n=this._out[t];if(n){var r=Object.values(n);return e?r.filter((t=>t.w===e)):r}}nodeEdges(t,e){var n=this.inEdges(t,e);if(n)return n.concat(this.outEdges(t,e))}}},2314:(t,e,n)=>{t.exports={Graph:n(8114),version:n(1166)}},2258:(t,e,n)=>{var r=n(8114);function i(t){return t.nodes().map((function(e){var n=t.node(e),r=t.parent(e),i={v:e};return void 0!==n&&(i.value=n),void 0!==r&&(i.parent=r),i}))}function o(t){return t.edges().map((function(e){var n=t.edge(e),r={v:e.v,w:e.w};return void 0!==e.name&&(r.name=e.name),void 0!==n&&(r.value=n),r}))}t.exports={write:function(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:i(t),edges:o(t)};return void 0!==t.graph()&&(e.value=structuredClone(t.graph())),e},read:function(t){var e=new r(t.options).setGraph(t.value);return t.nodes.forEach((function(t){e.setNode(t.v,t.value),t.parent&&e.setParent(t.v,t.parent)})),t.edges.forEach((function(t){e.setEdge({v:t.v,w:t.w,name:t.name},t.value)})),e}}},1166:t=>{t.exports="2.2.2"},935:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var n="",r=void 0!==e[5];return e[4]&&(n+="@supports (".concat(e[4],") {")),e[2]&&(n+="@media ".concat(e[2]," {")),r&&(n+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),n+=t(e),r&&(n+="}"),e[2]&&(n+="}"),e[4]&&(n+="}"),n})).join("")},e.i=function(t,n,r,i,o){"string"==typeof t&&(t=[[null,t,void 0]]);var a={};if(r)for(var s=0;s<this.length;s++){var u=this[s][0];null!=u&&(a[u]=!0)}for(var h=0;h<t.length;h++){var c=[].concat(t[h]);r&&a[c[0]]||(void 0!==o&&(void 0===c[5]||(c[1]="@layer".concat(c[5].length>0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=o),n&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=n):c[2]=n),i&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=i):c[4]="".concat(i)),e.push(c))}},e}},6758:t=>{"use strict";t.exports=function(t){return t[1]}},9126:(t,e,n)=>{"use strict";n.d(e,{A:()=>E});var r=function(){if("undefined"!=typeof Map)return Map;function t(t,e){var n=-1;return t.some((function(t,r){return t[0]===e&&(n=r,!0)})),n}return function(){function e(){this.__entries__=[]}return Object.defineProperty(e.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),e.prototype.get=function(e){var n=t(this.__entries__,e),r=this.__entries__[n];return r&&r[1]},e.prototype.set=function(e,n){var r=t(this.__entries__,e);~r?this.__entries__[r][1]=n:this.__entries__.push([e,n])},e.prototype.delete=function(e){var n=this.__entries__,r=t(n,e);~r&&n.splice(r,1)},e.prototype.has=function(e){return!!~t(this.__entries__,e)},e.prototype.clear=function(){this.__entries__.splice(0)},e.prototype.forEach=function(t,e){void 0===e&&(e=null);for(var n=0,r=this.__entries__;n<r.length;n++){var i=r[n];t.call(e,i[1],i[0])}},e}()}(),i="undefined"!=typeof window&&"undefined"!=typeof document&&window.document===document,o=void 0!==n.g&&n.g.Math===Math?n.g:"undefined"!=typeof self&&self.Math===Math?self:"undefined"!=typeof window&&window.Math===Math?window:Function("return this")(),a="function"==typeof requestAnimationFrame?requestAnimationFrame.bind(o):function(t){return setTimeout((function(){return t(Date.now())}),1e3/60)},s=["top","right","bottom","left","width","height","size","weight"],u="undefined"!=typeof MutationObserver,h=function(){function t(){this.connected_=!1,this.mutationEventsAdded_=!1,this.mutationsObserver_=null,this.observers_=[],this.onTransitionEnd_=this.onTransitionEnd_.bind(this),this.refresh=function(t,e){var n=!1,r=!1,i=0;function o(){n&&(n=!1,t()),r&&u()}function s(){a(o)}function u(){var t=Date.now();if(n){if(t-i<2)return;r=!0}else n=!0,r=!1,setTimeout(s,e);i=t}return u}(this.refresh.bind(this),20)}return t.prototype.addObserver=function(t){~this.observers_.indexOf(t)||this.observers_.push(t),this.connected_||this.connect_()},t.prototype.removeObserver=function(t){var e=this.observers_,n=e.indexOf(t);~n&&e.splice(n,1),!e.length&&this.connected_&&this.disconnect_()},t.prototype.refresh=function(){this.updateObservers_()&&this.refresh()},t.prototype.updateObservers_=function(){var t=this.observers_.filter((function(t){return t.gatherActive(),t.hasActive()}));return t.forEach((function(t){return t.broadcastActive()})),t.length>0},t.prototype.connect_=function(){i&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),u?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},t.prototype.disconnect_=function(){i&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},t.prototype.onTransitionEnd_=function(t){var e=t.propertyName,n=void 0===e?"":e;s.some((function(t){return!!~n.indexOf(t)}))&&this.refresh()},t.getInstance=function(){return this.instance_||(this.instance_=new t),this.instance_},t.instance_=null,t}(),c=function(t,e){for(var n=0,r=Object.keys(e);n<r.length;n++){var i=r[n];Object.defineProperty(t,i,{value:e[i],enumerable:!1,writable:!1,configurable:!0})}return t},l=function(t){return t&&t.ownerDocument&&t.ownerDocument.defaultView||o},f=y(0,0,0,0);function d(t){return parseFloat(t)||0}function p(t){for(var e=[],n=1;n<arguments.length;n++)e[n-1]=arguments[n];return e.reduce((function(e,n){return e+d(t["border-"+n+"-width"])}),0)}var g="undefined"!=typeof SVGGraphicsElement?function(t){return t instanceof l(t).SVGGraphicsElement}:function(t){return t instanceof l(t).SVGElement&&"function"==typeof t.getBBox};function v(t){return i?g(t)?function(t){var e=t.getBBox();return y(0,0,e.width,e.height)}(t):function(t){var e=t.clientWidth,n=t.clientHeight;if(!e&&!n)return f;var r=l(t).getComputedStyle(t),i=function(t){for(var e={},n=0,r=["top","right","bottom","left"];n<r.length;n++){var i=r[n],o=t["padding-"+i];e[i]=d(o)}return e}(r),o=i.left+i.right,a=i.top+i.bottom,s=d(r.width),u=d(r.height);if("border-box"===r.boxSizing&&(Math.round(s+o)!==e&&(s-=p(r,"left","right")+o),Math.round(u+a)!==n&&(u-=p(r,"top","bottom")+a)),!function(t){return t===l(t).document.documentElement}(t)){var h=Math.round(s+o)-e,c=Math.round(u+a)-n;1!==Math.abs(h)&&(s-=h),1!==Math.abs(c)&&(u-=c)}return y(i.left,i.top,s,u)}(t):f}function y(t,e,n,r){return{x:t,y:e,width:n,height:r}}var m=function(){function t(t){this.broadcastWidth=0,this.broadcastHeight=0,this.contentRect_=y(0,0,0,0),this.target=t}return t.prototype.isActive=function(){var t=v(this.target);return this.contentRect_=t,t.width!==this.broadcastWidth||t.height!==this.broadcastHeight},t.prototype.broadcastRect=function(){var t=this.contentRect_;return this.broadcastWidth=t.width,this.broadcastHeight=t.height,t},t}(),_=function(t,e){var n,r,i,o,a,s,u,h=(r=(n=e).x,i=n.y,o=n.width,a=n.height,s="undefined"!=typeof DOMRectReadOnly?DOMRectReadOnly:Object,u=Object.create(s.prototype),c(u,{x:r,y:i,width:o,height:a,top:i,right:r+o,bottom:a+i,left:r}),u);c(this,{target:t,contentRect:h})},w=function(){function t(t,e,n){if(this.activeObservations_=[],this.observations_=new r,"function"!=typeof t)throw new TypeError("The callback provided as parameter 1 is not a function.");this.callback_=t,this.controller_=e,this.callbackCtx_=n}return t.prototype.observe=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof l(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)||(e.set(t,new m(t)),this.controller_.addObserver(this),this.controller_.refresh())}},t.prototype.unobserve=function(t){if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");if("undefined"!=typeof Element&&Element instanceof Object){if(!(t instanceof l(t).Element))throw new TypeError('parameter 1 is not of type "Element".');var e=this.observations_;e.has(t)&&(e.delete(t),e.size||this.controller_.removeObserver(this))}},t.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},t.prototype.gatherActive=function(){var t=this;this.clearActive(),this.observations_.forEach((function(e){e.isActive()&&t.activeObservations_.push(e)}))},t.prototype.broadcastActive=function(){if(this.hasActive()){var t=this.callbackCtx_,e=this.activeObservations_.map((function(t){return new _(t.target,t.broadcastRect())}));this.callback_.call(t,e,t),this.clearActive()}},t.prototype.clearActive=function(){this.activeObservations_.splice(0)},t.prototype.hasActive=function(){return this.activeObservations_.length>0},t}(),b="undefined"!=typeof WeakMap?new WeakMap:new r,x=function t(e){if(!(this instanceof t))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=h.getInstance(),r=new w(e,n,this);b.set(this,r)};["observe","unobserve","disconnect"].forEach((function(t){x.prototype[t]=function(){var e;return(e=b.get(this))[t].apply(e,arguments)}}));const E=void 0!==o.ResizeObserver?o.ResizeObserver:x},3373:(t,e)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var t="",e=0;e<arguments.length;e++){var n=arguments[e];n&&(t=a(t,o(n)))}return t}function o(t){if("string"==typeof t||"number"==typeof t)return t;if("object"!=typeof t)return"";if(Array.isArray(t))return i.apply(null,t);if(t.toString!==Object.prototype.toString&&!t.toString.toString().includes("[native code]"))return t.toString();var e="";for(var n in t)r.call(t,n)&&t[n]&&(e=a(e,n));return e}function a(t,e){return e?t?t+" "+e:t+e:t}t.exports?(i.default=i,t.exports=i):void 0===(n=function(){return i}.apply(e,[]))||(t.exports=n)}()},2740:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(7545),i=n(6902);function o(t,e,n){"symbol"==(0,r.A)(e)&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(t,"name",{configurable:!0,value:n?n+" "+e:e})}catch(t){}return t}var a=n(1369);function s(t,e,n,s,u,h){var c,l,f,d,p,g,v,y=Symbol.metadata||Symbol.for("Symbol.metadata"),m=Object.defineProperty,_=Object.create,w=[_(null),_(null)],b=e.length;function x(e,n,r){return function(i,o){n&&(o=i,i=t);for(var a=0;a<e.length;a++)o=e[a].apply(i,r?[o]:[]);return r?o:i}}function E(t,e,n,r){if("function"!=typeof t&&(r||void 0!==t))throw new TypeError(e+" must "+(n||"be")+" a function"+(r?"":" or undefined"));return t}function k(t,e,n,i,a,s,u,h,f,d,p){function g(t){if(!p(t))throw new TypeError("Attempted to access private element on non-instance")}var v=[].concat(e[0]),y=e[3],_=!u,b=1===a,k=3===a,N=4===a,A=2===a;function M(e,n,r){return function(i,o){return n&&(o=i,i=t),r&&r(i),O[e].call(i,o)}}if(!_){var O={},I=[],P=k?"get":N||b?"set":"value";if(f?(d||b?O={get:o((function(){return y(this)}),i,"get"),set:function(t){e[4](this,t)}}:O[P]=y,d||o(O[P],i,A?"":P)):d||(O=Object.getOwnPropertyDescriptor(t,i)),!d&&!f){if((l=w[+h][i])&&7!=(l^a))throw Error("Decorating two elements with the same name ("+O[P].name+") is not supported yet");w[+h][i]=a<3?1:a}}for(var T=t,j=v.length-1;j>=0;j-=n?2:1){var C=E(v[j],"A decorator","be",!0),S=n?v[j-1]:void 0,$={},z={kind:["field","accessor","method","getter","setter","class"][a],name:i,metadata:c,addInitializer:function(t,e){if(t.v)throw Error("attempted to call addInitializer after decoration was finished");E(e,"An initializer","be",!0),s.push(e)}.bind(null,$)};if(_)l=C.call(S,T,z),$.v=1,E(l,"class decorators","return")&&(T=l);else if(z.static=h,z.private=f,l=z.access={has:f?p.bind():function(t){return i in t}},N||(l.get=f?A?function(t){return g(t),O.value}:M("get",0,g):function(t){return t[i]}),A||k||(l.set=f?M("set",0,g):function(t,e){t[i]=e}),T=C.call(S,b?{get:O.get,set:O.set}:O[P],z),$.v=1,b){if("object"==(0,r.A)(T)&&T)(l=E(T.get,"accessor.get"))&&(O.get=l),(l=E(T.set,"accessor.set"))&&(O.set=l),(l=E(T.init,"accessor.init"))&&I.unshift(l);else if(void 0!==T)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else E(T,(d?"field":"method")+" decorators","return")&&(d?I.unshift(T):O[P]=T)}return a<2&&u.push(x(I,h,1),x(s,h,0)),d||_||(f?b?u.splice(-1,0,M("get",h),M("set",h)):u.push(A?O[P]:E.call.bind(O[P])):m(t,i,O)),T}function N(t){return m(t,y,{configurable:!0,enumerable:!0,value:c})}return void 0!==h&&(c=h[y]),c=_(null==c?null:c),p=[],g=function(t){t&&p.push(x(t))},v=function(e,r){for(var o=0;o<n.length;o++){var s=n[o],h=s[1],c=7&h;if((8&h)==e&&!c==r){var l=s[2],g=!!s[3],v=16&h;k(e?t:t.prototype,s,v,g?"#"+l:(0,a.A)(l),c,c<2?[]:e?d=d||[]:f=f||[],p,!!e,g,r,e&&g?function(e){return(0,i.A)(e)===t}:u)}}},v(8,0),v(0,0),v(8,1),v(0,1),g(f),g(d),l=p,b||N(t),{e:l,get c(){var n=[];return b&&[N(t=k(t,[e],s,t.name,5,n)),x(n,1)]}}}},6330:(t,e,n)=>{"use strict";function r(t,e,n,r,i,o,a){try{var s=t[o](a),u=s.value}catch(t){return void n(t)}s.done?e(u):Promise.resolve(u).then(r,i)}function i(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var a=t.apply(e,n);function s(t){r(a,i,o,s,u,"next",t)}function u(t){r(a,i,o,s,u,"throw",t)}s(void 0)}))}}n.d(e,{A:()=>i})},6902:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(7545);function i(t){if(Object(t)!==t)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==t?(0,r.A)(t):"null"));return t}},5536:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(2559);function i(t,e,n){return n((0,r.A)(t,e))}},6514:(t,e,n)=>{"use strict";n.d(e,{A:()=>u});var r={value:()=>{}};function i(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new o(r)}function o(t){this._=t}function a(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function s(t,e,n){for(var i=0,o=t.length;i<o;++i)if(t[i].name===e){t[i]=r,t=t.slice(0,i).concat(t.slice(i+1));break}return null!=n&&t.push({name:e,value:n}),t}o.prototype=i.prototype={constructor:o,on:function(t,e){var n,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),u=-1,h=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++u<h;)if(n=(t=o[u]).type)i[n]=s(i[n],t.name,e);else if(null==e)for(n in i)i[n]=s(i[n],t.name,null);return this}for(;++u<h;)if((n=(t=o[u]).type)&&(n=a(i[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new o(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),o=0;o<n;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,n=(r=this._[t]).length;o<n;++o)r[o].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};const u=i},7931:(t,e,n)=>{"use strict";n.d(e,{A:()=>u});var r=n(3968),i=n(1621),o=n(3993);function a(t){return t.x+t.vx}function s(t){return t.y+t.vy}function u(t){var e,n,u,h=1,c=1;function l(){for(var t,i,l,d,p,g,v,y=e.length,m=0;m<c;++m)for(i=(0,r.A)(e,a,s).visitAfter(f),t=0;t<y;++t)l=e[t],g=n[l.index],v=g*g,d=l.x+l.vx,p=l.y+l.vy,i.visit(_);function _(t,e,n,r,i){var a=t.data,s=t.r,c=g+s;if(!a)return e>d+c||r<d-c||n>p+c||i<p-c;if(a.index>l.index){var f=d-a.x-a.vx,y=p-a.y-a.vy,m=f*f+y*y;m<c*c&&(0===f&&(m+=(f=(0,o.A)(u))*f),0===y&&(m+=(y=(0,o.A)(u))*y),m=(c-(m=Math.sqrt(m)))/m*h,l.vx+=(f*=m)*(c=(s*=s)/(v+s)),l.vy+=(y*=m)*c,a.vx-=f*(c=1-c),a.vy-=y*c)}}}function f(t){if(t.data)return t.r=n[t.data.index];for(var e=t.r=0;e<4;++e)t[e]&&t[e].r>t.r&&(t.r=t[e].r)}function d(){if(e){var r,i,o=e.length;for(n=new Array(o),r=0;r<o;++r)i=e[r],n[i.index]=+t(i,r,e)}}return"function"!=typeof t&&(t=(0,i.A)(null==t?1:+t)),l.initialize=function(t,n){e=t,u=n,d()},l.iterations=function(t){return arguments.length?(c=+t,l):c},l.strength=function(t){return arguments.length?(h=+t,l):h},l.radius=function(e){return arguments.length?(t="function"==typeof e?e:(0,i.A)(+e),d(),l):t},l}},1621:(t,e,n)=>{"use strict";function r(t){return function(){return t}}n.d(e,{A:()=>r})},3993:(t,e,n)=>{"use strict";function r(t){return 1e-6*(t()-.5)}n.d(e,{A:()=>r})},6149:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(1621),i=n(3993);function o(t){return t.index}function a(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function s(t){var e,n,s,u,h,c,l=o,f=function(t){return 1/Math.min(u[t.source.index],u[t.target.index])},d=(0,r.A)(30),p=1;function g(r){for(var o=0,a=t.length;o<p;++o)for(var s,u,l,f,d,g,v,y=0;y<a;++y)u=(s=t[y]).source,f=(l=s.target).x+l.vx-u.x-u.vx||(0,i.A)(c),d=l.y+l.vy-u.y-u.vy||(0,i.A)(c),f*=g=((g=Math.sqrt(f*f+d*d))-n[y])/g*r*e[y],d*=g,l.vx-=f*(v=h[y]),l.vy-=d*v,u.vx+=f*(v=1-v),u.vy+=d*v}function v(){if(s){var r,i,o=s.length,c=t.length,f=new Map(s.map(((t,e)=>[l(t,e,s),t])));for(r=0,u=new Array(o);r<c;++r)(i=t[r]).index=r,"object"!=typeof i.source&&(i.source=a(f,i.source)),"object"!=typeof i.target&&(i.target=a(f,i.target)),u[i.source.index]=(u[i.source.index]||0)+1,u[i.target.index]=(u[i.target.index]||0)+1;for(r=0,h=new Array(c);r<c;++r)i=t[r],h[r]=u[i.source.index]/(u[i.source.index]+u[i.target.index]);e=new Array(c),y(),n=new Array(c),m()}}function y(){if(s)for(var n=0,r=t.length;n<r;++n)e[n]=+f(t[n],n,t)}function m(){if(s)for(var e=0,r=t.length;e<r;++e)n[e]=+d(t[e],e,t)}return null==t&&(t=[]),g.initialize=function(t,e){s=t,c=e,v()},g.links=function(e){return arguments.length?(t=e,v(),g):t},g.id=function(t){return arguments.length?(l=t,g):l},g.iterations=function(t){return arguments.length?(p=+t,g):p},g.strength=function(t){return arguments.length?(f="function"==typeof t?t:(0,r.A)(+t),y(),g):f},g.distance=function(t){return arguments.length?(d="function"==typeof t?t:(0,r.A)(+t),m(),g):d},g}},3854:(t,e,n)=>{"use strict";n.d(e,{A:()=>s});var r=n(3968),i=n(1621),o=n(3993),a=n(4842);function s(){var t,e,n,s,u,h=(0,i.A)(-30),c=1,l=1/0,f=.81;function d(n){var i,o=t.length,u=(0,r.A)(t,a.x,a.y).visitAfter(g);for(s=n,i=0;i<o;++i)e=t[i],u.visit(v)}function p(){if(t){var e,n,r=t.length;for(u=new Array(r),e=0;e<r;++e)n=t[e],u[n.index]=+h(n,e,t)}}function g(t){var e,n,r,i,o,a=0,s=0;if(t.length){for(r=i=o=0;o<4;++o)(e=t[o])&&(n=Math.abs(e.value))&&(a+=e.value,s+=n,r+=n*e.x,i+=n*e.y);t.x=r/s,t.y=i/s}else{(e=t).x=e.data.x,e.y=e.data.y;do{a+=u[e.data.index]}while(e=e.next)}t.value=a}function v(t,r,i,a){if(!t.value)return!0;var h=t.x-e.x,d=t.y-e.y,p=a-r,g=h*h+d*d;if(p*p/f<g)return g<l&&(0===h&&(g+=(h=(0,o.A)(n))*h),0===d&&(g+=(d=(0,o.A)(n))*d),g<c&&(g=Math.sqrt(c*g)),e.vx+=h*t.value*s/g,e.vy+=d*t.value*s/g),!0;if(!(t.length||g>=l)){(t.data!==e||t.next)&&(0===h&&(g+=(h=(0,o.A)(n))*h),0===d&&(g+=(d=(0,o.A)(n))*d),g<c&&(g=Math.sqrt(c*g)));do{t.data!==e&&(p=u[t.data.index]*s/g,e.vx+=h*p,e.vy+=d*p)}while(t=t.next)}}return d.initialize=function(e,r){t=e,n=r,p()},d.strength=function(t){return arguments.length?(h="function"==typeof t?t:(0,i.A)(+t),p(),d):h},d.distanceMin=function(t){return arguments.length?(c=t*t,d):Math.sqrt(c)},d.distanceMax=function(t){return arguments.length?(l=t*t,d):Math.sqrt(l)},d.theta=function(t){return arguments.length?(f=t*t,d):Math.sqrt(f)},d}},4842:(t,e,n)=>{"use strict";n.d(e,{A:()=>f,x:()=>u,y:()=>h});var r=n(6514),i=n(4234);const o=1664525,a=1013904223,s=4294967296;function u(t){return t.x}function h(t){return t.y}var c=10,l=Math.PI*(3-Math.sqrt(5));function f(t){var e,n=1,u=.001,h=1-Math.pow(u,1/300),f=0,d=.6,p=new Map,g=(0,i.O1)(m),v=(0,r.A)("tick","end"),y=function(){let t=1;return()=>(t=(o*t+a)%s)/s}();function m(){_(),v.call("tick",e),n<u&&(g.stop(),v.call("end",e))}function _(r){var i,o,a=t.length;void 0===r&&(r=1);for(var s=0;s<r;++s)for(n+=(f-n)*h,p.forEach((function(t){t(n)})),i=0;i<a;++i)null==(o=t[i]).fx?o.x+=o.vx*=d:(o.x=o.fx,o.vx=0),null==o.fy?o.y+=o.vy*=d:(o.y=o.fy,o.vy=0);return e}function w(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=c*Math.sqrt(.5+n),o=n*l;e.x=i*Math.cos(o),e.y=i*Math.sin(o)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function b(e){return e.initialize&&e.initialize(t,y),e}return null==t&&(t=[]),w(),e={tick:_,restart:function(){return g.restart(m),e},stop:function(){return g.stop(),e},nodes:function(n){return arguments.length?(t=n,w(),p.forEach(b),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(u=+t,e):u},alphaDecay:function(t){return arguments.length?(h=+t,e):+h},alphaTarget:function(t){return arguments.length?(f=+t,e):f},velocityDecay:function(t){return arguments.length?(d=1-t,e):1-d},randomSource:function(t){return arguments.length?(y=t,p.forEach(b),e):y},force:function(t,n){return arguments.length>1?(null==n?p.delete(t):p.set(t,b(n)),e):p.get(t)},find:function(e,n,r){var i,o,a,s,u,h=0,c=t.length;for(null==r?r=1/0:r*=r,h=0;h<c;++h)(a=(i=e-(s=t[h]).x)*i+(o=n-s.y)*o)<r&&(u=s,r=a);return u},on:function(t,n){return arguments.length>1?(v.on(t,n),e):v.on(t)}}}},1945:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(1621);function i(t){var e,n,i,o=(0,r.A)(.1);function a(t){for(var r,o=0,a=e.length;o<a;++o)(r=e[o]).vx+=(i[o]-r.x)*n[o]*t}function s(){if(e){var r,a=e.length;for(n=new Array(a),i=new Array(a),r=0;r<a;++r)n[r]=isNaN(i[r]=+t(e[r],r,e))?0:+o(e[r],r,e)}}return"function"!=typeof t&&(t=(0,r.A)(null==t?0:+t)),a.initialize=function(t){e=t,s()},a.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,r.A)(+t),s(),a):o},a.x=function(e){return arguments.length?(t="function"==typeof e?e:(0,r.A)(+e),s(),a):t},a}},9418:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(1621);function i(t){var e,n,i,o=(0,r.A)(.1);function a(t){for(var r,o=0,a=e.length;o<a;++o)(r=e[o]).vy+=(i[o]-r.y)*n[o]*t}function s(){if(e){var r,a=e.length;for(n=new Array(a),i=new Array(a),r=0;r<a;++r)n[r]=isNaN(i[r]=+t(e[r],r,e))?0:+o(e[r],r,e)}}return"function"!=typeof t&&(t=(0,r.A)(null==t?0:+t)),a.initialize=function(t){e=t,s()},a.strength=function(t){return arguments.length?(o="function"==typeof t?t:(0,r.A)(+t),s(),a):o},a.y=function(e){return arguments.length?(t="function"==typeof e?e:(0,r.A)(+e),s(),a):t},a}},3968:(t,e,n)=>{"use strict";function r(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,s,u,h,c,l,f,d=t._root,p={data:r},g=t._x0,v=t._y0,y=t._x1,m=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((h=e>=(o=(g+y)/2))?g=o:y=o,(c=n>=(a=(v+m)/2))?v=a:m=a,i=d,!(d=d[l=c<<1|h]))return i[l]=p,t;if(s=+t._x.call(null,d.data),u=+t._y.call(null,d.data),e===s&&n===u)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(h=e>=(o=(g+y)/2))?g=o:y=o,(c=n>=(a=(v+m)/2))?v=a:m=a}while((l=c<<1|h)==(f=(u>=a)<<1|s>=o));return i[f]=d,i[l]=p,t}function i(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function o(t){return t[0]}function a(t){return t[1]}function s(t,e,n){var r=new u(null==e?o:e,null==n?a:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function u(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function h(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}n.d(e,{A:()=>s});var c=s.prototype=u.prototype;c.copy=function(){var t,e,n=new u(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=h(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=h(e));return n},c.add=function(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return r(this.cover(e,n),e,n,t)},c.addAll=function(t){var e,n,i,o,a=t.length,s=new Array(a),u=new Array(a),h=1/0,c=1/0,l=-1/0,f=-1/0;for(n=0;n<a;++n)isNaN(i=+this._x.call(null,e=t[n]))||isNaN(o=+this._y.call(null,e))||(s[n]=i,u[n]=o,i<h&&(h=i),i>l&&(l=i),o<c&&(c=o),o>f&&(f=o));if(h>l||c>f)return this;for(this.cover(h,c).cover(l,f),n=0;n<a;++n)r(this,s[n],u[n],t[n]);return this},c.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,o=(r=Math.floor(e))+1;else{for(var a,s,u=i-n||1,h=this._root;n>t||t>=i||r>e||e>=o;)switch(s=(e<r)<<1|t<n,(a=new Array(4))[s]=h,h=a,u*=2,s){case 0:i=n+u,o=r+u;break;case 1:n=i-u,o=r+u;break;case 2:i=n+u,r=o-u;break;case 3:n=i-u,r=o-u}this._root&&this._root.length&&(this._root=h)}return this._x0=n,this._y0=r,this._x1=i,this._y1=o,this},c.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},c.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},c.find=function(t,e,n){var r,o,a,s,u,h,c,l=this._x0,f=this._y0,d=this._x1,p=this._y1,g=[],v=this._root;for(v&&g.push(new i(v,l,f,d,p)),null==n?n=1/0:(l=t-n,f=e-n,d=t+n,p=e+n,n*=n);h=g.pop();)if(!(!(v=h.node)||(o=h.x0)>d||(a=h.y0)>p||(s=h.x1)<l||(u=h.y1)<f))if(v.length){var y=(o+s)/2,m=(a+u)/2;g.push(new i(v[3],y,m,s,u),new i(v[2],o,m,y,u),new i(v[1],y,a,s,m),new i(v[0],o,a,y,m)),(c=(e>=m)<<1|t>=y)&&(h=g[g.length-1],g[g.length-1]=g[g.length-1-c],g[g.length-1-c]=h)}else{var _=t-+this._x.call(null,v.data),w=e-+this._y.call(null,v.data),b=_*_+w*w;if(b<n){var x=Math.sqrt(n=b);l=t-x,f=e-x,d=t+x,p=e+x,r=v.data}}return r},c.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var e,n,r,i,o,a,s,u,h,c,l,f,d=this._root,p=this._x0,g=this._y0,v=this._x1,y=this._y1;if(!d)return this;if(d.length)for(;;){if((h=o>=(s=(p+v)/2))?p=s:v=s,(c=a>=(u=(g+y)/2))?g=u:y=u,e=d,!(d=d[l=c<<1|h]))return this;if(!d.length)break;(e[l+1&3]||e[l+2&3]||e[l+3&3])&&(n=e,f=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):e?(i?e[l]=i:delete e[l],(d=e[0]||e[1]||e[2]||e[3])&&d===(e[3]||e[2]||e[1]||e[0])&&!d.length&&(n?n[f]=d:this._root=d),this):(this._root=i,this)},c.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},c.root=function(){return this._root},c.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},c.visit=function(t){var e,n,r,o,a,s,u=[],h=this._root;for(h&&u.push(new i(h,this._x0,this._y0,this._x1,this._y1));e=u.pop();)if(!t(h=e.node,r=e.x0,o=e.y0,a=e.x1,s=e.y1)&&h.length){var c=(r+a)/2,l=(o+s)/2;(n=h[3])&&u.push(new i(n,c,l,a,s)),(n=h[2])&&u.push(new i(n,r,l,c,s)),(n=h[1])&&u.push(new i(n,c,o,a,l)),(n=h[0])&&u.push(new i(n,r,o,c,l))}return this},c.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new i(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var o=e.node;if(o.length){var a,s=e.x0,u=e.y0,h=e.x1,c=e.y1,l=(s+h)/2,f=(u+c)/2;(a=o[0])&&n.push(new i(a,s,u,l,f)),(a=o[1])&&n.push(new i(a,l,u,h,f)),(a=o[2])&&n.push(new i(a,s,f,l,c)),(a=o[3])&&n.push(new i(a,l,f,h,c))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},c.x=function(t){return arguments.length?(this._x=t,this):this._x},c.y=function(t){return arguments.length?(this._y=t,this):this._y}},2474:(t,e,n)=>{"use strict";function r(t){return function(){return this.matches(t)}}function i(t){return function(e){return e.matches(t)}}n.d(e,{A:()=>r,j:()=>i})},5399:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(9538);function i(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),r.A.hasOwnProperty(e)?{space:r.A[e],local:t}:t}},9538:(t,e,n)=>{"use strict";n.d(e,{A:()=>i,g:()=>r});var r="http://www.w3.org/1999/xhtml";const i={svg:"http://www.w3.org/2000/svg",xhtml:r,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}},7566:(t,e,n)=>{"use strict";n.d(e,{A:()=>i});var r=n(7810);function i(t){return"string"==typeof t?new r.LN([[document.querySelector(t)]],[document.documentElement]):new r.LN([[t]],r.zr)}},7810:(t,e,n)=>{"use strict";n.d(e,{LN:()=>ot,Ay:()=>st,zr:()=>it});var r=n(4715),i=n(3972);var o=n(2474),a=Array.prototype.find;function s(){return this.firstElementChild}var u=Array.prototype.filter;function h(){return Array.from(this.children)}function c(t){return new Array(t.length)}function l(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function f(t,e,n,r,i,o){for(var a,s=0,u=e.length,h=o.length;s<h;++s)(a=e[s])?(a.__data__=o[s],r[s]=a):n[s]=new l(t,o[s]);for(;s<u;++s)(a=e[s])&&(i[s]=a)}function d(t,e,n,r,i,o,a){var s,u,h,c=new Map,f=e.length,d=o.length,p=new Array(f);for(s=0;s<f;++s)(u=e[s])&&(p[s]=h=a.call(u,u.__data__,s,e)+"",c.has(h)?i[s]=u:c.set(h,u));for(s=0;s<d;++s)h=a.call(t,o[s],s,o)+"",(u=c.get(h))?(r[s]=u,u.__data__=o[s],c.delete(h)):n[s]=new l(t,o[s]);for(s=0;s<f;++s)(u=e[s])&&c.get(p[s])===u&&(i[s]=u)}function p(t){return t.__data__}function g(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function v(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}l.prototype={constructor:l,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var y=n(5399);function m(t){return function(){this.removeAttribute(t)}}function _(t){return function(){this.removeAttributeNS(t.space,t.local)}}function w(t,e){return function(){this.setAttribute(t,e)}}function b(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function x(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function E(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}var k=n(5632);function N(t){return function(){delete this[t]}}function A(t,e){return function(){this[t]=e}}function M(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function O(t){return t.trim().split(/^|\s+/)}function I(t){return t.classList||new P(t)}function P(t){this._node=t,this._names=O(t.getAttribute("class")||"")}function T(t,e){for(var n=I(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function j(t,e){for(var n=I(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function C(t){return function(){T(this,t)}}function S(t){return function(){j(this,t)}}function $(t,e){return function(){(e.apply(this,arguments)?T:j)(this,t)}}function z(){this.textContent=""}function L(t){return function(){this.textContent=t}}function R(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function q(){this.innerHTML=""}function D(t){return function(){this.innerHTML=t}}function V(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function G(){this.nextSibling&&this.parentNode.appendChild(this)}function F(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}P.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Y=n(9538);function B(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===Y.g&&e.documentElement.namespaceURI===Y.g?e.createElement(t):e.createElementNS(n,t)}}function X(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function H(t){var e=(0,y.A)(t);return(e.local?X:B)(e)}function W(){return null}function U(){var t=this.parentNode;t&&t.removeChild(this)}function K(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function Q(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function J(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function Z(t,e,n){return function(){var r,i=this.__on,o=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var a=0,s=i.length;a<s;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=n),void(r.value=e);this.addEventListener(t.type,o,n),r={type:t.type,name:t.name,value:e,listener:o,options:n},i?i.push(r):this.__on=[r]}}var tt=n(1382);function et(t,e,n){var r=(0,tt.A)(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function nt(t,e){return function(){return et(this,t,e)}}function rt(t,e){return function(){return et(this,t,e.apply(this,arguments))}}var it=[null];function ot(t,e){this._groups=t,this._parents=e}function at(){return new ot([[document.documentElement]],it)}ot.prototype=at.prototype={constructor:ot,select:function(t){"function"!=typeof t&&(t=(0,r.A)(t));for(var e=this._groups,n=e.length,i=new Array(n),o=0;o<n;++o)for(var a,s,u=e[o],h=u.length,c=i[o]=new Array(h),l=0;l<h;++l)(a=u[l])&&(s=t.call(a,a.__data__,l,u))&&("__data__"in a&&(s.__data__=a.__data__),c[l]=s);return new ot(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}(t):(0,i.A)(t);for(var e=this._groups,n=e.length,r=[],o=[],a=0;a<n;++a)for(var s,u=e[a],h=u.length,c=0;c<h;++c)(s=u[c])&&(r.push(t.call(s,s.__data__,c,u)),o.push(s));return new ot(r,o)},selectChild:function(t){return this.select(null==t?s:function(t){return function(){return a.call(this.children,t)}}("function"==typeof t?t:(0,o.j)(t)))},selectChildren:function(t){return this.selectAll(null==t?h:function(t){return function(){return u.call(this.children,t)}}("function"==typeof t?t:(0,o.j)(t)))},filter:function(t){"function"!=typeof t&&(t=(0,o.A)(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,s=e[i],u=s.length,h=r[i]=[],c=0;c<u;++c)(a=s[c])&&t.call(a,a.__data__,c,s)&&h.push(a);return new ot(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,p);var n,r=e?d:f,i=this._parents,o=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var a=o.length,s=new Array(a),u=new Array(a),h=new Array(a),c=0;c<a;++c){var l=i[c],v=o[c],y=v.length,m=g(t.call(l,l&&l.__data__,c,i)),_=m.length,w=u[c]=new Array(_),b=s[c]=new Array(_);r(l,v,w,b,h[c]=new Array(y),m,e);for(var x,E,k=0,N=0;k<_;++k)if(x=w[k]){for(k>=N&&(N=k+1);!(E=b[N])&&++N<_;);x._next=E||null}}return(s=new ot(s,i))._enter=u,s._exit=h,s},enter:function(){return new ot(this._enter||this._groups.map(c),this._parents)},exit:function(){return new ot(this._exit||this._groups.map(c),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?o.remove():n(o),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,a=Math.min(i,o),s=new Array(i),u=0;u<a;++u)for(var h,c=n[u],l=r[u],f=c.length,d=s[u]=new Array(f),p=0;p<f;++p)(h=c[p]||l[p])&&(d[p]=h);for(;u<i;++u)s[u]=n[u];return new ot(s,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=v);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a,s=n[o],u=s.length,h=i[o]=new Array(u),c=0;c<u;++c)(a=s[c])&&(h[c]=a);h.sort(e)}return new ot(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,s=o.length;a<s;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,e){var n=(0,y.A)(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?_:m:"function"==typeof e?n.local?E:x:n.local?b:w)(n,e))},style:k.A,property:function(t,e){return arguments.length>1?this.each((null==e?N:"function"==typeof e?M:A)(t,e)):this.node()[t]},classed:function(t,e){var n=O(t+"");if(arguments.length<2){for(var r=I(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?$:e?C:S)(n,e))},text:function(t){return arguments.length?this.each(null==t?z:("function"==typeof t?R:L)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?q:("function"==typeof t?V:D)(t)):this.node().innerHTML},raise:function(){return this.each(G)},lower:function(){return this.each(F)},append:function(t){var e="function"==typeof t?t:H(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:H(t),i=null==e?W:"function"==typeof e?e:(0,r.A)(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(U)},clone:function(t){return this.select(t?Q:K)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,o=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(s=e?Z:J,r=0;r<a;++r)this.each(s(o[r],e,n));return this}var s=this.node().__on;if(s)for(var u,h=0,c=s.length;h<c;++h)for(r=0,u=s[h];r<a;++r)if((i=o[r]).type===u.type&&i.name===u.name)return u.value},dispatch:function(t,e){return this.each(("function"==typeof e?rt:nt)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};const st=at},5632:(t,e,n)=>{"use strict";n.d(e,{A:()=>s,j:()=>u});var r=n(1382);function i(t){return function(){this.style.removeProperty(t)}}function o(t,e,n){return function(){this.style.setProperty(t,e,n)}}function a(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function s(t,e,n){return arguments.length>1?this.each((null==e?i:"function"==typeof e?a:o)(t,e,null==n?"":n)):u(this.node(),t)}function u(t,e){return t.style.getPropertyValue(e)||(0,r.A)(t).getComputedStyle(t,null).getPropertyValue(e)}},4715:(t,e,n)=>{"use strict";function r(){}function i(t){return null==t?r:function(){return this.querySelector(t)}}n.d(e,{A:()=>i})},3972:(t,e,n)=>{"use strict";function r(){return[]}function i(t){return null==t?r:function(){return this.querySelectorAll(t)}}n.d(e,{A:()=>i})},1382:(t,e,n)=>{"use strict";function r(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}n.d(e,{A:()=>r})},4234:(t,e,n)=>{"use strict";n.d(e,{M4:()=>v,O1:()=>y,tB:()=>p});var r,i,o=0,a=0,s=0,u=1e3,h=0,c=0,l=0,f="object"==typeof performance&&performance.now?performance:Date,d="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function p(){return c||(d(g),c=f.now()+l)}function g(){c=0}function v(){this._call=this._time=this._next=null}function y(t,e,n){var r=new v;return r.restart(t,e,n),r}function m(){c=(h=f.now())+l,o=a=0;try{!function(){p(),++o;for(var t,e=r;e;)(t=c-e._time)>=0&&e._call.call(void 0,t),e=e._next;--o}()}finally{o=0,function(){for(var t,e,n=r,o=1/0;n;)n._call?(o>n._time&&(o=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:r=e);i=t,w(o)}(),c=0}}function _(){var t=f.now(),e=t-h;e>u&&(l-=e,h=t)}function w(t){o||(a&&(a=clearTimeout(a)),t-c>24?(t<1/0&&(a=setTimeout(m,t-f.now()-l)),s&&(s=clearInterval(s))):(s||(h=f.now(),s=setInterval(_,u)),o=1,d(m)))}v.prototype=y.prototype={constructor:v,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?p():+n)+(null==e?0:+e),this._next||i===this||(i?i._next=this:r=this,i=this),this._call=t,this._time=n,w()},stop:function(){this._call&&(this._call=null,this._time=1/0,w())}}},9047:(t,e,n)=>{"use strict";n.d(e,{uV:()=>Te,s_:()=>Ve});var r=n(6514),i=n(7566);const o={capture:!0,passive:!1};function a(t){t.preventDefault(),t.stopImmediatePropagation()}function s(t){return((t=Math.exp(t))+1/t)/2}const u=function t(e,n,r){function i(t,i){var o,a,u=t[0],h=t[1],c=t[2],l=i[0],f=i[1],d=i[2],p=l-u,g=f-h,v=p*p+g*g;if(v<1e-12)a=Math.log(d/c)/e,o=function(t){return[u+t*p,h+t*g,c*Math.exp(e*t*a)]};else{var y=Math.sqrt(v),m=(d*d-c*c+r*v)/(2*c*n*y),_=(d*d-c*c-r*v)/(2*d*n*y),w=Math.log(Math.sqrt(m*m+1)-m),b=Math.log(Math.sqrt(_*_+1)-_);a=(b-w)/e,o=function(t){var r,i=t*a,o=s(w),l=c/(n*y)*(o*(r=e*i+w,((r=Math.exp(2*r))-1)/(r+1))-function(t){return((t=Math.exp(t))-1/t)/2}(w));return[u+l*p,h+l*g,c*o/s(e*i+w)]}}return o.duration=1e3*a*e/Math.SQRT2,o}return i.rho=function(e){var n=Math.max(.001,+e),r=n*n;return t(n,r,r*r)},i}(Math.SQRT2,2,4);function h(t,e){if(t=function(t){let e;for(;e=t.sourceEvent;)t=e;return t}(t),void 0===e&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(e.getScreenCTM().inverse())).x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}var c=n(7810),l=n(4234);function f(t,e,n){var r=new l.M4;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}var d=(0,r.A)("start","end","cancel","interrupt"),p=[],g=0,v=2,y=3,m=5,_=6;function w(t,e,n,r,i,o){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function o(u){var h,c,l,d;if(1!==n.state)return s();for(h in i)if((d=i[h]).name===n.name){if(d.state===y)return f(o);4===d.state?(d.state=_,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete i[h]):+h<e&&(d.state=_,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete i[h])}if(f((function(){n.state===y&&(n.state=4,n.timer.restart(a,n.delay,n.time),a(u))})),n.state=v,n.on.call("start",t,t.__data__,n.index,n.group),n.state===v){for(n.state=y,r=new Array(l=n.tween.length),h=0,c=-1;h<l;++h)(d=n.tween[h].value.call(t,t.__data__,n.index,n.group))&&(r[++c]=d);r.length=c+1}}function a(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(s),n.state=m,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);n.state===m&&(n.on.call("end",t,t.__data__,n.index,n.group),s())}function s(){for(var r in n.state=_,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=(0,l.O1)((function(t){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=t&&o(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:d,tween:p,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:g})}function b(t,e){var n=E(t,e);if(n.state>g)throw new Error("too late; already scheduled");return n}function x(t,e){var n=E(t,e);if(n.state>y)throw new Error("too late; already running");return n}function E(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function k(t,e){var n,r,i,o=t.__transition,a=!0;if(o){for(i in e=null==e?null:e+"",o)(n=o[i]).name===e?(r=n.state>v&&n.state<m,n.state=_,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete o[i]):a=!1;a&&delete t.__transition}}function N(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var A,M=180/Math.PI,O={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function I(t,e,n,r,i,o){var a,s,u;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(u=t*n+e*r)&&(n-=t*u,r-=e*u),(s=Math.sqrt(n*n+r*r))&&(n/=s,r/=s,u/=s),t*r<e*n&&(t=-t,e=-e,u=-u,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*M,skewX:Math.atan(u)*M,scaleX:a,scaleY:s}}function P(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var s=[],u=[];return o=t(o),a=t(a),function(t,r,i,o,a,s){if(t!==i||r!==o){var u=a.push("translate(",null,e,null,n);s.push({i:u-4,x:N(t,i)},{i:u-2,x:N(r,o)})}else(i||o)&&a.push("translate("+i+e+o+n)}(o.translateX,o.translateY,a.translateX,a.translateY,s,u),function(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:N(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,s,u),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:N(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,s,u),function(t,e,n,r,o,a){if(t!==n||e!==r){var s=o.push(i(o)+"scale(",null,",",null,")");a.push({i:s-4,x:N(t,n)},{i:s-2,x:N(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,s,u),o=a=null,function(t){for(var e,n=-1,r=u.length;++n<r;)s[(e=u[n]).i]=e.x(t);return s.join("")}}}var T=P((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?O:I(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),j=P((function(t){return null==t?O:(A||(A=document.createElementNS("http://www.w3.org/2000/svg","g")),A.setAttribute("transform",t),(t=A.transform.baseVal.consolidate())?I((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):O)}),", ",")",")"),C=n(5399);function S(t,e){var n,r;return function(){var i=x(this,t),o=i.tween;if(o!==n)for(var a=0,s=(r=n=o).length;a<s;++a)if(r[a].name===e){(r=r.slice()).splice(a,1);break}i.tween=r}}function $(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var o=x(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var s={name:e,value:n},u=0,h=i.length;u<h;++u)if(i[u].name===e){i[u]=s;break}u===h&&i.push(s)}o.tween=i}}function z(t,e,n){var r=t._id;return t.each((function(){var t=x(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return E(t,r).value[e]}}function L(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function R(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function q(){}var D=.7,V=1/D,G="\\s*([+-]?\\d+)\\s*",F="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Y="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",B=/^#([0-9a-f]{3,8})$/,X=new RegExp(`^rgb\\(${G},${G},${G}\\)$`),H=new RegExp(`^rgb\\(${Y},${Y},${Y}\\)$`),W=new RegExp(`^rgba\\(${G},${G},${G},${F}\\)$`),U=new RegExp(`^rgba\\(${Y},${Y},${Y},${F}\\)$`),K=new RegExp(`^hsl\\(${F},${Y},${Y}\\)$`),Q=new RegExp(`^hsla\\(${F},${Y},${Y},${F}\\)$`),J={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Z(){return this.rgb().formatHex()}function tt(){return this.rgb().formatRgb()}function et(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=B.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?nt(e):3===n?new it(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?rt(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?rt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=X.exec(t))?new it(e[1],e[2],e[3],1):(e=H.exec(t))?new it(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=W.exec(t))?rt(e[1],e[2],e[3],e[4]):(e=U.exec(t))?rt(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=K.exec(t))?ct(e[1],e[2]/100,e[3]/100,1):(e=Q.exec(t))?ct(e[1],e[2]/100,e[3]/100,e[4]):J.hasOwnProperty(t)?nt(J[t]):"transparent"===t?new it(NaN,NaN,NaN,0):null}function nt(t){return new it(t>>16&255,t>>8&255,255&t,1)}function rt(t,e,n,r){return r<=0&&(t=e=n=NaN),new it(t,e,n,r)}function it(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function ot(){return`#${ht(this.r)}${ht(this.g)}${ht(this.b)}`}function at(){const t=st(this.opacity);return`${1===t?"rgb(":"rgba("}${ut(this.r)}, ${ut(this.g)}, ${ut(this.b)}${1===t?")":`, ${t})`}`}function st(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function ut(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function ht(t){return((t=ut(t))<16?"0":"")+t.toString(16)}function ct(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new ft(t,e,n,r)}function lt(t){if(t instanceof ft)return new ft(t.h,t.s,t.l,t.opacity);if(t instanceof q||(t=et(t)),!t)return new ft;if(t instanceof ft)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=e===o?(n-r)/s+6*(n<r):n===o?(r-e)/s+2:(e-n)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new ft(a,s,u,t.opacity)}function ft(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function dt(t){return(t=(t||0)%360)<0?t+360:t}function pt(t){return Math.max(0,Math.min(1,t||0))}function gt(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function vt(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function yt(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function mt(){}L(q,et,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Z,formatHex:Z,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return lt(this).formatHsl()},formatRgb:tt,toString:tt}),L(it,(function(t,e,n,r){return 1===arguments.length?((i=t)instanceof q||(i=et(i)),i?new it((i=i.rgb()).r,i.g,i.b,i.opacity):new it):new it(t,e,n,null==r?1:r);var i}),R(q,{brighter(t){return t=null==t?V:Math.pow(V,t),new it(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?D:Math.pow(D,t),new it(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new it(ut(this.r),ut(this.g),ut(this.b),st(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:ot,formatHex:ot,formatHex8:function(){return`#${ht(this.r)}${ht(this.g)}${ht(this.b)}${ht(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:at,toString:at})),L(ft,(function(t,e,n,r){return 1===arguments.length?lt(t):new ft(t,e,n,null==r?1:r)}),R(q,{brighter(t){return t=null==t?V:Math.pow(V,t),new ft(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?D:Math.pow(D,t),new ft(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new it(gt(t>=240?t-240:t+120,i,r),gt(t,i,r),gt(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new ft(dt(this.h),pt(this.s),pt(this.l),st(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=st(this.opacity);return`${1===t?"hsl(":"hsla("}${dt(this.h)}, ${100*pt(this.s)}%, ${100*pt(this.l)}%${1===t?")":`, ${t})`}`}}));var _t=.7,wt=1/_t,bt="\\s*([+-]?\\d+)\\s*",xt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Et="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",kt=/^#([0-9a-f]{3,8})$/,Nt=new RegExp(`^rgb\\(${bt},${bt},${bt}\\)$`),At=new RegExp(`^rgb\\(${Et},${Et},${Et}\\)$`),Mt=new RegExp(`^rgba\\(${bt},${bt},${bt},${xt}\\)$`),Ot=new RegExp(`^rgba\\(${Et},${Et},${Et},${xt}\\)$`),It=new RegExp(`^hsl\\(${xt},${Et},${Et}\\)$`),Pt=new RegExp(`^hsla\\(${xt},${Et},${Et},${xt}\\)$`),Tt={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function jt(){return this.rgb().formatHex()}function Ct(){return this.rgb().formatRgb()}function St(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=kt.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?$t(e):3===n?new Rt(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?zt(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?zt(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Nt.exec(t))?new Rt(e[1],e[2],e[3],1):(e=At.exec(t))?new Rt(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Mt.exec(t))?zt(e[1],e[2],e[3],e[4]):(e=Ot.exec(t))?zt(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=It.exec(t))?Yt(e[1],e[2]/100,e[3]/100,1):(e=Pt.exec(t))?Yt(e[1],e[2]/100,e[3]/100,e[4]):Tt.hasOwnProperty(t)?$t(Tt[t]):"transparent"===t?new Rt(NaN,NaN,NaN,0):null}function $t(t){return new Rt(t>>16&255,t>>8&255,255&t,1)}function zt(t,e,n,r){return r<=0&&(t=e=n=NaN),new Rt(t,e,n,r)}function Lt(t,e,n,r){return 1===arguments.length?((i=t)instanceof mt||(i=St(i)),i?new Rt((i=i.rgb()).r,i.g,i.b,i.opacity):new Rt):new Rt(t,e,n,null==r?1:r);var i}function Rt(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function qt(){return`#${Ft(this.r)}${Ft(this.g)}${Ft(this.b)}`}function Dt(){const t=Vt(this.opacity);return`${1===t?"rgb(":"rgba("}${Gt(this.r)}, ${Gt(this.g)}, ${Gt(this.b)}${1===t?")":`, ${t})`}`}function Vt(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Gt(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ft(t){return((t=Gt(t))<16?"0":"")+t.toString(16)}function Yt(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new Xt(t,e,n,r)}function Bt(t){if(t instanceof Xt)return new Xt(t.h,t.s,t.l,t.opacity);if(t instanceof mt||(t=St(t)),!t)return new Xt;if(t instanceof Xt)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,s=o-i,u=(o+i)/2;return s?(a=e===o?(n-r)/s+6*(n<r):n===o?(r-e)/s+2:(e-n)/s+4,s/=u<.5?o+i:2-o-i,a*=60):s=u>0&&u<1?0:a,new Xt(a,s,u,t.opacity)}function Xt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Ht(t){return(t=(t||0)%360)<0?t+360:t}function Wt(t){return Math.max(0,Math.min(1,t||0))}function Ut(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Kt(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}vt(mt,St,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:jt,formatHex:jt,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Bt(this).formatHsl()},formatRgb:Ct,toString:Ct}),vt(Rt,Lt,yt(mt,{brighter(t){return t=null==t?wt:Math.pow(wt,t),new Rt(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?_t:Math.pow(_t,t),new Rt(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Rt(Gt(this.r),Gt(this.g),Gt(this.b),Vt(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:qt,formatHex:qt,formatHex8:function(){return`#${Ft(this.r)}${Ft(this.g)}${Ft(this.b)}${Ft(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Dt,toString:Dt})),vt(Xt,(function(t,e,n,r){return 1===arguments.length?Bt(t):new Xt(t,e,n,null==r?1:r)}),yt(mt,{brighter(t){return t=null==t?wt:Math.pow(wt,t),new Xt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?_t:Math.pow(_t,t),new Xt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Rt(Ut(t>=240?t-240:t+120,i,r),Ut(t,i,r),Ut(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xt(Ht(this.h),Wt(this.s),Wt(this.l),Vt(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Vt(this.opacity);return`${1===t?"hsl(":"hsla("}${Ht(this.h)}, ${100*Wt(this.s)}%, ${100*Wt(this.l)}%${1===t?")":`, ${t})`}`}}));const Qt=t=>()=>t;function Jt(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):Qt(isNaN(t)?e:t)}const Zt=function t(e){var n=function(t){return 1==(t=+t)?Jt:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Qt(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Lt(t)).r,(e=Lt(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),a=Jt(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function te(t){return function(e){var n,r,i=e.length,o=new Array(i),a=new Array(i),s=new Array(i);for(n=0;n<i;++n)r=Lt(e[n]),o[n]=r.r||0,a[n]=r.g||0,s[n]=r.b||0;return o=t(o),a=t(a),s=t(s),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=s(t),r+""}}}te((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,s=r<e-1?t[r+2]:2*o-i;return Kt((n-r/e)*e,a,i,o,s)}})),te((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],s=t[(r+2)%e];return Kt((n-r/e)*e,i,o,a,s)}}));var ee=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,ne=new RegExp(ee.source,"g");function re(t,e){var n,r,i,o=ee.lastIndex=ne.lastIndex=0,a=-1,s=[],u=[];for(t+="",e+="";(n=ee.exec(t))&&(r=ne.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),s[a]?s[a]+=i:s[++a]=i),(n=n[0])===(r=r[0])?s[a]?s[a]+=r:s[++a]=r:(s[++a]=null,u.push({i:a,x:N(n,r)})),o=ne.lastIndex;return o<e.length&&(i=e.slice(o),s[a]?s[a]+=i:s[++a]=i),s.length<2?u[0]?function(t){return function(e){return t(e)+""}}(u[0].x):function(t){return function(){return t}}(e):(e=u.length,function(t){for(var n,r=0;r<e;++r)s[(n=u[r]).i]=n.x(t);return s.join("")})}function ie(t,e){var n;return("number"==typeof e?N:e instanceof et?Zt:(n=et(e))?(e=n,Zt):re)(t,e)}function oe(t){return function(){this.removeAttribute(t)}}function ae(t){return function(){this.removeAttributeNS(t.space,t.local)}}function se(t,e,n){var r,i,o=n+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=e(r=a,n)}}function ue(t,e,n){var r,i,o=n+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=e(r=a,n)}}function he(t,e,n){var r,i,o;return function(){var a,s,u=n(this);if(null!=u)return(a=this.getAttribute(t))===(s=u+"")?null:a===r&&s===i?o:(i=s,o=e(r=a,u));this.removeAttribute(t)}}function ce(t,e,n){var r,i,o;return function(){var a,s,u=n(this);if(null!=u)return(a=this.getAttributeNS(t.space,t.local))===(s=u+"")?null:a===r&&s===i?o:(i=s,o=e(r=a,u));this.removeAttributeNS(t.space,t.local)}}function le(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,i)),n}return i._value=e,i}function fe(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,i)),n}return i._value=e,i}function de(t,e){return function(){b(this,t).delay=+e.apply(this,arguments)}}function pe(t,e){return e=+e,function(){b(this,t).delay=e}}function ge(t,e){return function(){x(this,t).duration=+e.apply(this,arguments)}}function ve(t,e){return e=+e,function(){x(this,t).duration=e}}var ye=n(2474),me=n(4715),_e=n(3972),we=c.Ay.prototype.constructor,be=n(5632);function xe(t){return function(){this.style.removeProperty(t)}}var Ee=0;function ke(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function Ne(){return++Ee}var Ae=c.Ay.prototype;ke.prototype=function(t){return(0,c.Ay)().transition(t)}.prototype={constructor:ke,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=(0,me.A)(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var s,u,h=r[a],c=h.length,l=o[a]=new Array(c),f=0;f<c;++f)(s=h[f])&&(u=t.call(s,s.__data__,f,h))&&("__data__"in s&&(u.__data__=s.__data__),l[f]=u,w(l[f],e,n,f,l,E(s,n)));return new ke(o,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=(0,_e.A)(t));for(var r=this._groups,i=r.length,o=[],a=[],s=0;s<i;++s)for(var u,h=r[s],c=h.length,l=0;l<c;++l)if(u=h[l]){for(var f,d=t.call(u,u.__data__,l,h),p=E(u,n),g=0,v=d.length;g<v;++g)(f=d[g])&&w(f,e,n,g,d,p);o.push(d),a.push(u)}return new ke(o,a,e,n)},selectChild:Ae.selectChild,selectChildren:Ae.selectChildren,filter:function(t){"function"!=typeof t&&(t=(0,ye.A)(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o,a=e[i],s=a.length,u=r[i]=[],h=0;h<s;++h)(o=a[h])&&t.call(o,o.__data__,h,a)&&u.push(o);return new ke(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),a=new Array(r),s=0;s<o;++s)for(var u,h=e[s],c=n[s],l=h.length,f=a[s]=new Array(l),d=0;d<l;++d)(u=h[d]||c[d])&&(f[d]=u);for(;s<r;++s)a[s]=e[s];return new ke(a,this._parents,this._name,this._id)},selection:function(){return new we(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=Ne(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,s=r[o],u=s.length,h=0;h<u;++h)if(a=s[h]){var c=E(a,e);w(a,t,n,h,s,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new ke(r,this._parents,t,n)},call:Ae.call,nodes:Ae.nodes,node:Ae.node,size:Ae.size,empty:Ae.empty,each:Ae.each,on:function(t,e){var n=this._id;return arguments.length<2?E(this.node(),n).on.on(t):this.each(function(t,e,n){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?b:x;return function(){var a=o(this,t),s=a.on;s!==r&&(i=(r=s).copy()).on(e,n),a.on=i}}(n,t,e))},attr:function(t,e){var n=(0,C.A)(t),r="transform"===n?j:ie;return this.attrTween(t,"function"==typeof e?(n.local?ce:he)(n,r,z(this,"attr."+t,e)):null==e?(n.local?ae:oe)(n):(n.local?ue:se)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=(0,C.A)(t);return this.tween(n,(r.local?le:fe)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?T:ie;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var o=(0,be.j)(this,t),a=(this.style.removeProperty(t),(0,be.j)(this,t));return o===a?null:o===n&&a===r?i:i=e(n=o,r=a)}}(t,r)).on("end.style."+t,xe(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,o;return function(){var a=(0,be.j)(this,t),s=n(this),u=s+"";return null==s&&(this.style.removeProperty(t),u=s=(0,be.j)(this,t)),a===u?null:a===r&&u===i?o:(i=u,o=e(r=a,s))}}(t,r,z(this,"style."+t,e))).each(function(t,e){var n,r,i,o,a="style."+e,s="end."+a;return function(){var u=x(this,t),h=u.on,c=null==u.value[a]?o||(o=xe(e)):void 0;h===n&&i===c||(r=(n=h).copy()).on(s,i=c),u.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,o=n+"";return function(){var a=(0,be.j)(this,t);return a===o?null:a===r?i:i=e(r=a,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function o(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}(t,o,n)),r}return o._value=e,o}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(z(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&function(t){return function(e){this.textContent=t.call(this,e)}}(r)),e}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=E(this.node(),n).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==e?S:$)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?de:pe)(e,t)):E(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?ge:ve)(e,t)):E(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){x(this,t).ease=e}}(e,t)):E(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;x(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(o,a){var s={value:a},u={value:function(){0==--i&&o()}};n.each((function(){var n=x(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(s),e._.interrupt.push(s),e._.end.push(u)),n.on=e})),0===i&&o()}))},[Symbol.iterator]:Ae[Symbol.iterator]};var Me={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function Oe(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}c.Ay.prototype.interrupt=function(t){return this.each((function(){k(this,t)}))},c.Ay.prototype.transition=function(t){var e,n;t instanceof ke?(e=t._id,t=t._name):(e=Ne(),(n=Me).time=(0,l.tB)(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,s=r[o],u=s.length,h=0;h<u;++h)(a=s[h])&&w(a,t,e,h,s,n||Oe(a,e));return new ke(r,this._parents,t,e)};const Ie=t=>()=>t;function Pe(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Te(t,e,n){this.k=t,this.x=e,this.y=n}Te.prototype={constructor:Te,scale:function(t){return 1===t?this:new Te(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new Te(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var je=new Te(1,0,0);function Ce(t){t.stopImmediatePropagation()}function Se(t){t.preventDefault(),t.stopImmediatePropagation()}function $e(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function ze(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Le(){return this.__zoom||je}function Re(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function qe(){return navigator.maxTouchPoints||"ontouchstart"in this}function De(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}function Ve(){var t,e,n,s=$e,c=ze,l=De,f=Re,d=qe,p=[0,1/0],g=[[-1/0,-1/0],[1/0,1/0]],v=250,y=u,m=(0,r.A)("start","zoom","end"),_=500,w=150,b=0,x=10;function E(t){t.property("__zoom",Le).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",j).on("dblclick.zoom",C).filter(d).on("touchstart.zoom",S).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",z).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function N(t,e){return(e=Math.max(p[0],Math.min(p[1],e)))===t.k?t:new Te(e,t.x,t.y)}function A(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new Te(t.k,r,i)}function M(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function O(t,e,n,r){t.on("start.zoom",(function(){I(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){I(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,i=arguments,o=I(t,i).event(r),a=c.apply(t,i),s=null==n?M(a):"function"==typeof n?n.apply(t,i):n,u=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),h=t.__zoom,l="function"==typeof e?e.apply(t,i):e,f=y(h.invert(s).concat(u/h.k),l.invert(s).concat(u/l.k));return function(t){if(1===t)t=l;else{var e=f(t),n=u/e[2];t=new Te(n,s[0]-e[0]*n,s[1]-e[1]*n)}o.zoom(null,t)}}))}function I(t,e,n){return!n&&t.__zooming||new P(t,e)}function P(t,e){this.that=t,this.args=e,this.active=0,this.sourceEvent=null,this.extent=c.apply(t,e),this.taps=0}function T(t,...e){if(s.apply(this,arguments)){var n=I(this,e).event(t),r=this.__zoom,i=Math.max(p[0],Math.min(p[1],r.k*Math.pow(2,f.apply(this,arguments)))),o=h(t);if(n.wheel)n.mouse[0][0]===o[0]&&n.mouse[0][1]===o[1]||(n.mouse[1]=r.invert(n.mouse[0]=o)),clearTimeout(n.wheel);else{if(r.k===i)return;n.mouse=[o,r.invert(o)],k(this),n.start()}Se(t),n.wheel=setTimeout((function(){n.wheel=null,n.end()}),w),n.zoom("mouse",l(A(N(r,i),n.mouse[0],n.mouse[1]),n.extent,g))}}function j(t,...e){if(!n&&s.apply(this,arguments)){var r=t.currentTarget,u=I(this,e,!0).event(t),c=(0,i.A)(t.view).on("mousemove.zoom",(function(t){if(Se(t),!u.moved){var e=t.clientX-d,n=t.clientY-p;u.moved=e*e+n*n>b}u.event(t).zoom("mouse",l(A(u.that.__zoom,u.mouse[0]=h(t,r),u.mouse[1]),u.extent,g))}),!0).on("mouseup.zoom",(function(t){c.on("mousemove.zoom mouseup.zoom",null),function(t,e){var n=t.document.documentElement,r=(0,i.A)(t).on("dragstart.drag",null);e&&(r.on("click.drag",a,o),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}(t.view,u.moved),Se(t),u.event(t).end()}),!0),f=h(t,r),d=t.clientX,p=t.clientY;!function(t){var e=t.document.documentElement,n=(0,i.A)(t).on("dragstart.drag",a,o);"onselectstart"in e?n.on("selectstart.drag",a,o):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}(t.view),Ce(t),u.mouse=[f,this.__zoom.invert(f)],k(this),u.start()}}function C(t,...e){if(s.apply(this,arguments)){var n=this.__zoom,r=h(t.changedTouches?t.changedTouches[0]:t,this),o=n.invert(r),a=n.k*(t.shiftKey?.5:2),u=l(A(N(n,a),r,o),c.apply(this,e),g);Se(t),v>0?(0,i.A)(this).transition().duration(v).call(O,u,r,t):(0,i.A)(this).call(E.transform,u,r,t)}}function S(n,...r){if(s.apply(this,arguments)){var i,o,a,u,c=n.touches,l=c.length,f=I(this,r,n.changedTouches.length===l).event(n);for(Ce(n),o=0;o<l;++o)u=[u=h(a=c[o],this),this.__zoom.invert(u),a.identifier],f.touch0?f.touch1||f.touch0[2]===u[2]||(f.touch1=u,f.taps=0):(f.touch0=u,i=!0,f.taps=1+!!t);t&&(t=clearTimeout(t)),i&&(f.taps<2&&(e=u[0],t=setTimeout((function(){t=null}),_)),k(this),f.start())}}function $(t,...e){if(this.__zooming){var n,r,i,o,a=I(this,e).event(t),s=t.changedTouches,u=s.length;for(Se(t),n=0;n<u;++n)i=h(r=s[n],this),a.touch0&&a.touch0[2]===r.identifier?a.touch0[0]=i:a.touch1&&a.touch1[2]===r.identifier&&(a.touch1[0]=i);if(r=a.that.__zoom,a.touch1){var c=a.touch0[0],f=a.touch0[1],d=a.touch1[0],p=a.touch1[1],v=(v=d[0]-c[0])*v+(v=d[1]-c[1])*v,y=(y=p[0]-f[0])*y+(y=p[1]-f[1])*y;r=N(r,Math.sqrt(v/y)),i=[(c[0]+d[0])/2,(c[1]+d[1])/2],o=[(f[0]+p[0])/2,(f[1]+p[1])/2]}else{if(!a.touch0)return;i=a.touch0[0],o=a.touch0[1]}a.zoom("touch",l(A(r,i,o),a.extent,g))}}function z(t,...r){if(this.__zooming){var o,a,s=I(this,r).event(t),u=t.changedTouches,c=u.length;for(Ce(t),n&&clearTimeout(n),n=setTimeout((function(){n=null}),_),o=0;o<c;++o)a=u[o],s.touch0&&s.touch0[2]===a.identifier?delete s.touch0:s.touch1&&s.touch1[2]===a.identifier&&delete s.touch1;if(s.touch1&&!s.touch0&&(s.touch0=s.touch1,delete s.touch1),s.touch0)s.touch0[1]=this.__zoom.invert(s.touch0[0]);else if(s.end(),2===s.taps&&(a=h(a,this),Math.hypot(e[0]-a[0],e[1]-a[1])<x)){var l=(0,i.A)(this).on("dblclick.zoom");l&&l.apply(this,arguments)}}}return E.transform=function(t,e,n,r){var i=t.selection?t.selection():t;i.property("__zoom",Le),t!==i?O(t,e,n,r):i.interrupt().each((function(){I(this,arguments).event(r).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()}))},E.scaleBy=function(t,e,n,r){E.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)}),n,r)},E.scaleTo=function(t,e,n,r){E.transform(t,(function(){var t=c.apply(this,arguments),r=this.__zoom,i=null==n?M(t):"function"==typeof n?n.apply(this,arguments):n,o=r.invert(i),a="function"==typeof e?e.apply(this,arguments):e;return l(A(N(r,a),i,o),t,g)}),n,r)},E.translateBy=function(t,e,n,r){E.transform(t,(function(){return l(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),c.apply(this,arguments),g)}),null,r)},E.translateTo=function(t,e,n,r,i){E.transform(t,(function(){var t=c.apply(this,arguments),i=this.__zoom,o=null==r?M(t):"function"==typeof r?r.apply(this,arguments):r;return l(je.translate(o[0],o[1]).scale(i.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,g)}),r,i)},P.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var e=(0,i.A)(this.that).datum();m.call(t,this.that,new Pe(t,{sourceEvent:this.sourceEvent,target:E,type:t,transform:this.that.__zoom,dispatch:m}),e)}},E.wheelDelta=function(t){return arguments.length?(f="function"==typeof t?t:Ie(+t),E):f},E.filter=function(t){return arguments.length?(s="function"==typeof t?t:Ie(!!t),E):s},E.touchable=function(t){return arguments.length?(d="function"==typeof t?t:Ie(!!t),E):d},E.extent=function(t){return arguments.length?(c="function"==typeof t?t:Ie([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),E):c},E.scaleExtent=function(t){return arguments.length?(p[0]=+t[0],p[1]=+t[1],E):[p[0],p[1]]},E.translateExtent=function(t){return arguments.length?(g[0][0]=+t[0][0],g[1][0]=+t[1][0],g[0][1]=+t[0][1],g[1][1]=+t[1][1],E):[[g[0][0],g[0][1]],[g[1][0],g[1][1]]]},E.constrain=function(t){return arguments.length?(l=t,E):l},E.duration=function(t){return arguments.length?(v=+t,E):v},E.interpolate=function(t){return arguments.length?(y=t,E):y},E.on=function(){var t=m.on.apply(m,arguments);return t===m?E:t},E.clickDistance=function(t){return arguments.length?(b=(t=+t)*t,E):Math.sqrt(b)},E.tapDistance=function(t){return arguments.length?(x=+t,E):x},E}Te.prototype}}]);
3
- //# sourceMappingURL=3489.e0ce6106.js.map