swh.web 0.14.2__py3-none-any.whl → 0.15.0__py3-none-any.whl

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 (99) hide show
  1. swh/web/alter/forms.py +16 -16
  2. swh/web/alter/templates/admin_alteration.html +5 -5
  3. swh/web/alter/templates/alteration_details.html +2 -2
  4. swh/web/alter/templates/assistant_category.html +21 -19
  5. swh/web/alter/templates/assistant_email.html +3 -4
  6. swh/web/alter/templates/assistant_origins.html +1 -2
  7. swh/web/alter/templates/assistant_reasons.html +1 -2
  8. swh/web/alter/templates/assistant_summary.html +3 -4
  9. swh/web/alter/templates/content_policies.html +8 -15
  10. swh/web/alter/templates/includes/swh_legal.html +1 -1
  11. swh/web/alter/tests/test_views.py +2 -2
  12. swh/web/alter/urls.py +1 -1
  13. swh/web/alter/views.py +2 -2
  14. swh/web/browse/assets/browse/browse.css +10 -0
  15. swh/web/browse/assets/browse/sidetabs.js +22 -2
  16. swh/web/browse/templates/includes/sidetabs.html +20 -16
  17. swh/web/browse/templates/includes/snapshot-context.html +3 -1
  18. swh/web/save_code_now/templates/includes/take-new-snapshot.html +1 -1
  19. swh/web/static/css/browse.0a250d3b07ce628588a5.css +2 -0
  20. swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +1 -0
  21. swh/web/static/js/add_forge_now.f8fa8235350a7875b4b2.js.map +1 -1
  22. swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js +3 -0
  23. swh/web/static/js/{archive_coverage.b37e2158e800bc69180b.js.LICENSE.txt → archive_coverage.71f6961fbdc0d76c313b.js.LICENSE.txt} +1 -1
  24. swh/web/static/js/archive_coverage.71f6961fbdc0d76c313b.js.map +1 -0
  25. swh/web/static/js/auth.971392ebe3f22c222189.js.map +1 -1
  26. swh/web/static/js/{browse.b150f8992236375f2e9b.js → browse.d5014e5cae44a2cd3e6e.js} +3 -3
  27. swh/web/static/js/browse.d5014e5cae44a2cd3e6e.js.map +1 -0
  28. swh/web/static/js/deposit.060ba94288f399dfe89e.js.map +1 -1
  29. swh/web/static/js/guided_tour.3a7a41181c43663f866b.js.map +1 -1
  30. swh/web/static/js/highlightjs.19cb5fa8879fdc8357d7.js.map +1 -1
  31. swh/web/static/js/mailmap.5dc62b52b8eb18e2e8b0.js.map +1 -1
  32. swh/web/static/js/origin_visits.679992a2a951f67a08bc.js.map +1 -1
  33. swh/web/static/js/pdf.worker.min.js +1 -1
  34. swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js +3 -0
  35. swh/web/static/js/pdfjs.97ecbde9d93314dba75a.js.map +1 -0
  36. swh/web/static/js/revision.c5f4750ef7caee355fd9.js.map +1 -1
  37. swh/web/static/js/save_code_now.3db9c75765eb44fe774a.js.map +1 -1
  38. swh/web/static/js/showdown.8be01722fe56f5a7c2db.js.map +1 -1
  39. swh/web/static/js/vault.8c6e8e445d128eb30488.js.map +1 -1
  40. swh/web/static/js/{vendors.076b42bbe0326fc632ae.js → vendors.532425b092b95d43a1d6.js} +3 -3
  41. swh/web/static/js/vendors.532425b092b95d43a1d6.js.map +1 -0
  42. swh/web/static/js/webapp.5427bd8b32cec7de0951.js +3 -0
  43. swh/web/static/js/{webapp.ec7025df24c9f358f1cc.js.LICENSE.txt → webapp.5427bd8b32cec7de0951.js.LICENSE.txt} +1 -1
  44. swh/web/static/js/webapp.5427bd8b32cec7de0951.js.map +1 -0
  45. swh/web/static/jssources/@iframe-resizer/child/index.umd.js +2 -2
  46. swh/web/static/jssources/@iframe-resizer/parent/index.umd.js +2 -2
  47. swh/web/static/jssources/core-js/internals/array-to-reversed.js +2 -2
  48. swh/web/static/jssources/core-js/internals/array-with.js +2 -2
  49. swh/web/static/jssources/core-js/internals/async-iterator-iteration.js +6 -1
  50. swh/web/static/jssources/core-js/internals/flatten-into-array.js +1 -1
  51. swh/web/static/jssources/core-js/internals/get-iterator-direct.js +1 -1
  52. swh/web/static/jssources/core-js/internals/install-error-cause.js +1 -1
  53. swh/web/static/jssources/core-js/internals/iterator-create-proxy.js +1 -1
  54. swh/web/static/jssources/core-js/internals/set-difference.js +1 -1
  55. swh/web/static/jssources/core-js/internals/set-intersection.js +1 -1
  56. swh/web/static/jssources/core-js/internals/set-is-disjoint-from.js +1 -1
  57. swh/web/static/jssources/core-js/internals/set-is-subset-of.js +1 -1
  58. swh/web/static/jssources/core-js/internals/set-is-superset-of.js +1 -1
  59. swh/web/static/jssources/core-js/internals/set-method-get-keys-before-cloning-detection.js +1 -1
  60. swh/web/static/jssources/core-js/internals/set-symmetric-difference.js +1 -1
  61. swh/web/static/jssources/core-js/internals/set-union.js +1 -1
  62. swh/web/static/jssources/core-js/internals/shared-store.js +2 -2
  63. swh/web/static/jssources/core-js/internals/string-pad.js +0 -1
  64. swh/web/static/jssources/core-js/modules/es.array-buffer.transfer-to-fixed-length.js +1 -1
  65. swh/web/static/jssources/core-js/modules/es.array-buffer.transfer.js +1 -1
  66. swh/web/static/jssources/core-js/modules/es.error.is-error.js +1 -1
  67. swh/web/static/jssources/core-js/modules/es.symbol.constructor.js +1 -1
  68. swh/web/static/jssources/jslicenses.json +1 -1
  69. swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +299 -13
  70. swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +492 -113
  71. swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +22 -2
  72. swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
  73. swh/web/static/webpack-stats.json +73 -73
  74. swh/web/utils/archive.py +12 -0
  75. swh/web/utils/tests/test_archive.py +32 -15
  76. swh/web/vault/templates/includes/vault-common.html +1 -1
  77. swh/web/vault/templates/includes/vault-create-tasks.html +5 -5
  78. swh/web/webapp/assets/webapp/webapp-utils.js +10 -0
  79. swh/web/webapp/templates/includes/footer.html +1 -1
  80. swh/web/webapp/templates/includes/global-modals.html +3 -3
  81. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/METADATA +1 -1
  82. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/RECORD +89 -89
  83. swh/web/static/css/browse.5775e0a313f4ccb8aef5.css +0 -2
  84. swh/web/static/css/browse.5775e0a313f4ccb8aef5.css.map +0 -1
  85. swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js +0 -3
  86. swh/web/static/js/archive_coverage.b37e2158e800bc69180b.js.map +0 -1
  87. swh/web/static/js/browse.b150f8992236375f2e9b.js.map +0 -1
  88. swh/web/static/js/pdfjs.ca88359f90430972e38c.js +0 -3
  89. swh/web/static/js/pdfjs.ca88359f90430972e38c.js.map +0 -1
  90. swh/web/static/js/vendors.076b42bbe0326fc632ae.js.map +0 -1
  91. swh/web/static/js/webapp.ec7025df24c9f358f1cc.js +0 -3
  92. swh/web/static/js/webapp.ec7025df24c9f358f1cc.js.map +0 -1
  93. /swh/web/static/js/{browse.b150f8992236375f2e9b.js.LICENSE.txt → browse.d5014e5cae44a2cd3e6e.js.LICENSE.txt} +0 -0
  94. /swh/web/static/js/{pdfjs.ca88359f90430972e38c.js.LICENSE.txt → pdfjs.97ecbde9d93314dba75a.js.LICENSE.txt} +0 -0
  95. /swh/web/static/js/{vendors.076b42bbe0326fc632ae.js.LICENSE.txt → vendors.532425b092b95d43a1d6.js.LICENSE.txt} +0 -0
  96. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/WHEEL +0 -0
  97. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/AUTHORS +0 -0
  98. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/licenses/LICENSE +0 -0
  99. {swh_web-0.14.2.dist-info → swh_web-0.15.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/pdfjs.97ecbde9d93314dba75a.js","mappings":";o8DA0BS,IAAIA,EAAsB,CAE7B,GACA,CAAEC,EAAQC,EAA0B,KAG1C,IAAIC,EAAa,EAAoB,MAErCF,EAAOG,QAAU,SAAUC,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcF,EAAWE,EAC1D,CAGO,EAED,GACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BC,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BC,EAAc,EAAoB,MAClCC,EAAoB,EAAoB,KAExCC,EAAaC,UAEjBX,EAAOG,QAAU,SAAUS,EAAUC,GACnC,IAAIC,EAAiBC,UAAUC,OAAS,EAAIP,EAAkBG,GAAYC,EAC1E,GAAIP,EAAUQ,GAAiB,OAAOP,EAASF,EAAKS,EAAgBF,IACpE,MAAM,IAAIF,EAAWF,EAAYI,GAAY,mBAC/C,CAGO,EAED,IACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCC,EAAQ,EAAoB,MAC5BhB,EAAa,EAAoB,MACjCiB,EAAS,EAAoB,MAC7BC,EAAc,EAAoB,MAClCC,EAA8B,EAAoB,KAAiB,aACnEC,EAAgB,EAAoB,MACpCC,EAAsB,EAAoB,MAE1CC,EAAuBD,EAAoBE,QAC3CC,EAAmBH,EAAoBI,IACvCC,EAAUC,OAEVC,EAAiBC,OAAOD,eACxBE,EAAcf,EAAY,GAAGgB,OAC7BC,EAAUjB,EAAY,GAAGiB,SACzBC,EAAOlB,EAAY,GAAGkB,MAEtBC,EAAsBhB,IAAgBF,GAAM,WAC9C,OAAsF,IAA/EY,GAAe,WAA0B,GAAG,SAAU,CAAEO,MAAO,IAAKrB,MAC7E,IAEIsB,EAAWT,OAAOA,QAAQU,MAAM,UAEhCC,EAAcxC,EAAOG,QAAU,SAAUkC,EAAOI,EAAMC,GACf,YAArCV,EAAYJ,EAAQa,GAAO,EAAG,KAChCA,EAAO,IAAMP,EAAQN,EAAQa,GAAO,wBAAyB,MAAQ,KAEnEC,GAAWA,EAAQC,SAAQF,EAAO,OAASA,GAC3CC,GAAWA,EAAQE,SAAQH,EAAO,OAASA,KAC1CtB,EAAOkB,EAAO,SAAYhB,GAA8BgB,EAAMI,OAASA,KACtErB,EAAaU,EAAeO,EAAO,OAAQ,CAAEA,MAAOI,EAAMI,cAAc,IACvER,EAAMI,KAAOA,GAEhBL,GAAuBM,GAAWvB,EAAOuB,EAAS,UAAYL,EAAMrB,SAAW0B,EAAQI,OACzFhB,EAAeO,EAAO,SAAU,CAAEA,MAAOK,EAAQI,QAEnD,IACMJ,GAAWvB,EAAOuB,EAAS,gBAAkBA,EAAQK,YACnD3B,GAAaU,EAAeO,EAAO,YAAa,CAAEW,UAAU,IAEvDX,EAAMY,YAAWZ,EAAMY,eAAYC,EAChD,CAAE,MAAOC,GAAqB,CAC9B,IAAIC,EAAQ5B,EAAqBa,GAG/B,OAFGlB,EAAOiC,EAAO,YACjBA,EAAMC,OAASlB,EAAKG,EAAyB,iBAARG,EAAmBA,EAAO,KACxDJ,CACX,EAIAiB,SAASL,UAAUM,SAAWf,GAAY,WACxC,OAAOtC,EAAWsD,OAAS9B,EAAiB8B,MAAMH,QAAU/B,EAAckC,KAC5E,GAAG,WAGI,EAED,IACA,CAAExD,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClCD,EAAS,EAAoB,MAE7BsC,EAAoBH,SAASL,UAE7BS,EAAgBtC,GAAeW,OAAO4B,yBAEtCC,EAASzC,EAAOsC,EAAmB,QAEnCI,EAASD,GAA0D,cAAhD,WAAqC,EAAEnB,KAC1DqB,EAAeF,KAAYxC,GAAgBA,GAAesC,EAAcD,EAAmB,QAAQZ,cAEvG7C,EAAOG,QAAU,CACfyD,OAAQA,EACRC,OAAQA,EACRC,aAAcA,EAIT,EAED,IACA,CAAE9D,EAAQC,EAA0B,KAG1C,IAAI8D,EAAa,EAAoB,MAErC/D,EAAOG,QAAU4D,EAAW,WAAY,kBAGjC,EAED,IACE/D,IAGRA,EAAOG,QAAU,CAAC,CAGX,EAED,IACA,CAAEH,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAE/BL,EAAOG,QAAU,SAAU6D,EAAQC,EAAIC,GAIrC,IAHA,IAEIC,EAAMC,EAFNC,EAAWH,EAA6BF,EAASA,EAAOK,SACxDC,EAAON,EAAOM,OAETH,EAAO9D,EAAKiE,EAAMD,IAAWE,MAEpC,QAAerB,KADfkB,EAASH,EAAGE,EAAK9B,QACS,OAAO+B,CAErC,CAGO,EAED,IACA,CAAEI,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BC,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCC,EAAyB,EAAoB,MAC7CC,EAAsB,EAAoB,MAC1CC,EAAgB,EAAoB,MACpCC,EAAU,EAAoB,MAC9BC,EAAwC,EAAoB,KAC5DC,EAA2C,EAAoB,MAE/DC,GAAiDH,IAC/CC,EAAsC,WAAW,WAA0B,IAC7EG,GAAqCJ,IAAYG,GAChDD,EAAyC,UAAWrE,WAErDwE,EAASL,GAAWG,GAAiDC,EAErEE,EAAgBR,GAAoB,WAKtC,IAJA,IAEIR,EAAQiB,EAFRhB,EAAWb,KAAKa,SAChBiB,EAAS9B,KAAK8B,SAGL,CACX,GAAID,EAAQ7B,KAAK6B,MAAO,IAEtB,KADAjB,EAAS7D,EAASF,EAAKgF,EAAMf,KAAMe,EAAMhB,YAC7BE,KAAM,OAAOH,EAAO/B,MAChCmB,KAAK6B,MAAQ,IACf,CAAE,MAAOlC,GAAS0B,EAAcR,EAAU,QAASlB,EAAQ,CAI3D,GAFAiB,EAAS7D,EAASF,EAAKmD,KAAKc,KAAMD,IAE9Bb,KAAKe,OAASH,EAAOG,KAAM,OAE/B,IACEf,KAAK6B,MAAQV,EAAuBW,EAAOlB,EAAO/B,MAAOmB,KAAK+B,YAAY,EAC5E,CAAE,MAAOpC,GAAS0B,EAAcR,EAAU,QAASlB,EAAQ,CAC7D,CACF,IAIAsB,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQR,GAAU,CACjES,QAAS,SAAiBN,GACxB/E,EAASiD,MACT,IACElD,EAAUgF,EACZ,CAAE,MAAOnC,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,OAAI+B,EAA0C7E,EAAK6E,EAAmC1B,KAAM8B,GAErF,IAAIF,EAAcV,EAAkBlB,MAAO,CAChD8B,OAAQA,EACRD,MAAO,MAEX,GAIK,EAED,IACA,CAAErF,EAAQC,EAA0B,KAG1C,IAAIiB,EAAQ,EAAoB,MAEhClB,EAAOG,SAAWe,GAAM,WAEtB,IAAI2E,EAAO,WAA4B,EAAEC,OAEzC,MAAsB,mBAARD,GAAsBA,EAAKE,eAAe,YAC1D,GAGO,EAED,IACA,CAAE/F,EAAQC,EAA0B,KAG1C,IAAI+F,EAAU,EAAoB,MAE9BpE,EAAUC,OAEd7B,EAAOG,QAAU,SAAUS,GACzB,GAA0B,WAAtBoF,EAAQpF,GAAwB,MAAM,IAAID,UAAU,6CACxD,OAAOiB,EAAQhB,EACjB,CAGO,EAED,IACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIgG,EAAgB,EAAoB,MAEpCvF,EAAaC,UAEjBX,EAAOG,QAAU,SAAUC,EAAI8F,GAC7B,GAAID,EAAcC,EAAW9F,GAAK,OAAOA,EACzC,MAAM,IAAIM,EAAW,uBACvB,CAGO,EAED,IACEV,IAKRA,EAAOG,QAAU,SAAUgG,EAAYvF,GAErC,IAAIwF,EAA4B,mBAAZC,UAA0BA,SAASpD,UAAUkD,GACjE,GAAIC,EAAQ,IACVA,EAAO/F,KAAK,CAAEiE,KAAM,MAAQ1D,GAAU0D,MACxC,CAAE,MAAOnB,GACP,OAAO,CACT,CACF,CAGO,EAED,IACEnD,IAGR,IAAIsG,EAAOC,KAAKD,KACZE,EAAQD,KAAKC,MAKjBxG,EAAOG,QAAUoG,KAAKE,OAAS,SAAeC,GAC5C,IAAIC,GAAKD,EACT,OAAQC,EAAI,EAAIH,EAAQF,GAAMK,EAChC,CAGO,EAED,IACA,CAAE3G,EAAQC,EAA0B,KAG1C,IAAI8D,EAAa,EAAoB,MACjC7D,EAAa,EAAoB,MACjC+F,EAAgB,EAAoB,MACpCW,EAAoB,EAAoB,MAExCC,EAAU9E,OAEd/B,EAAOG,QAAUyG,EAAoB,SAAUxG,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAI0G,EAAU/C,EAAW,UACzB,OAAO7D,EAAW4G,IAAYb,EAAca,EAAQ7D,UAAW4D,EAAQzG,GACzE,CAGO,EAED,IACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAI+F,EAAU,EAAoB,MAC9Be,EAAY,EAAoB,MAChCC,EAAoB,EAAoB,MACxCC,EAAY,EAAoB,MAGhCC,EAFkB,EAAoB,KAE3BC,CAAgB,YAE/BnH,EAAOG,QAAU,SAAUC,GACzB,IAAK4G,EAAkB5G,GAAK,OAAO2G,EAAU3G,EAAI8G,IAC5CH,EAAU3G,EAAI,eACd6G,EAAUjB,EAAQ5F,GACzB,CAGO,EAED,IACEJ,IAGR,IAAIU,EAAaC,UAEjBX,EAAOG,QAAU,SAAUuC,GACzB,IAAI0E,EAAW1E,GAAWA,EAAQ0E,SAClC,QAAiBlE,IAAbkE,GAAuC,WAAbA,GAAsC,cAAbA,EAA0B,OAAOA,GAAY,SACpG,MAAM,IAAI1G,EAAW,8BACvB,CAGO,EAED,KACA,CAAEV,EAAQC,EAA0B,KAG1C,IAAIoH,EAAqB,EAAoB,MACzCC,EAAc,EAAoB,MAKtCtH,EAAOG,QAAU4B,OAAOwF,MAAQ,SAAcC,GAC5C,OAAOH,EAAmBG,EAAGF,EAC/B,CAGO,EAED,KACEtH,IAGRA,EAAOG,QAAU,SAAUsH,GACzB,IACE,MAAO,CAAEtE,OAAO,EAAOd,MAAOoF,IAChC,CAAE,MAAOtE,GACP,MAAO,CAAEA,OAAO,EAAMd,MAAOc,EAC/B,CACF,CAGO,EAED,KACA,CAAEqB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BqH,EAAU,EAAoB,MAC9BpH,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCG,EAAgB,EAAoB,MAGpC8C,EAF2C,EAAoB,KAE7B3C,CAAyC,QAASrE,WAIxF8D,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQgC,GAAmC,CAC1FC,MAAO,SAAeC,GACpBtH,EAASiD,MACT,IACElD,EAAUuH,EACZ,CAAE,MAAO1E,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,GAAIwE,EAAiC,OAAOtH,EAAKsH,EAAiCnE,KAAMqE,GAExF,IAAI7D,EAASU,EAAkBlB,MAC3B+B,EAAU,EACd,OAAQmC,EAAQ1D,GAAQ,SAAU3B,EAAOyF,GACvC,IAAKD,EAAUxF,EAAOkD,KAAY,OAAOuC,GAC3C,GAAG,CAAEC,WAAW,EAAMC,aAAa,IAAQC,OAC7C,GAIK,EAED,KACA,CAAEjI,EAAQC,EAA0B,KAG1C,IAYIiI,EAAKvG,EAAKwG,EAZVC,EAAkB,EAAoB,MACtCC,EAAa,EAAoB,MACjCC,EAAW,EAAoB,IAC/BC,EAA8B,EAAoB,MAClDpH,EAAS,EAAoB,MAC7BqH,EAAS,EAAoB,MAC7BC,EAAY,EAAoB,MAChCC,EAAa,EAAoB,KAEjCC,EAA6B,6BAC7BhI,EAAY0H,EAAW1H,UACvBiI,EAAUP,EAAWO,QAgBzB,GAAIR,GAAmBI,EAAOpF,MAAO,CACnC,IAAIyF,EAAQL,EAAOpF,QAAUoF,EAAOpF,MAAQ,IAAIwF,GAEhDC,EAAMlH,IAAMkH,EAAMlH,IAClBkH,EAAMV,IAAMU,EAAMV,IAClBU,EAAMX,IAAMW,EAAMX,IAElBA,EAAM,SAAU9H,EAAI0I,GAClB,GAAID,EAAMV,IAAI/H,GAAK,MAAM,IAAIO,EAAUgI,GAGvC,OAFAG,EAASC,OAAS3I,EAClByI,EAAMX,IAAI9H,EAAI0I,GACPA,CACT,EACAnH,EAAM,SAAUvB,GACd,OAAOyI,EAAMlH,IAAIvB,IAAO,CAAC,CAC3B,EACA+H,EAAM,SAAU/H,GACd,OAAOyI,EAAMV,IAAI/H,EACnB,CACF,KAAO,CACL,IAAI4I,EAAQP,EAAU,SACtBC,EAAWM,IAAS,EACpBd,EAAM,SAAU9H,EAAI0I,GAClB,GAAI3H,EAAOf,EAAI4I,GAAQ,MAAM,IAAIrI,EAAUgI,GAG3C,OAFAG,EAASC,OAAS3I,EAClBmI,EAA4BnI,EAAI4I,EAAOF,GAChCA,CACT,EACAnH,EAAM,SAAUvB,GACd,OAAOe,EAAOf,EAAI4I,GAAS5I,EAAG4I,GAAS,CAAC,CAC1C,EACAb,EAAM,SAAU/H,GACd,OAAOe,EAAOf,EAAI4I,EACpB,CACF,CAEAhJ,EAAOG,QAAU,CACf+H,IAAKA,EACLvG,IAAKA,EACLwG,IAAKA,EACL1G,QArDY,SAAUrB,GACtB,OAAO+H,EAAI/H,GAAMuB,EAAIvB,GAAM8H,EAAI9H,EAAI,CAAC,EACtC,EAoDE6I,UAlDc,SAAUC,GACxB,OAAO,SAAU9I,GACf,IAAIgD,EACJ,IAAKkF,EAASlI,KAAQgD,EAAQzB,EAAIvB,IAAK+I,OAASD,EAC9C,MAAM,IAAIvI,EAAU,0BAA4BuI,EAAO,aACvD,OAAO9F,CACX,CACF,EA+CO,EAED,KACA,CAAEpD,EAAQC,EAA0B,KAG1C,IAAIwG,EAAQ,EAAoB,KAIhCzG,EAAOG,QAAU,SAAUS,GACzB,IAAIwI,GAAUxI,EAEd,OAAOwI,GAAWA,GAAqB,IAAXA,EAAe,EAAI3C,EAAM2C,EACvD,CAGO,EAED,KACA,CAAEpJ,EAAQC,EAA0B,KAG1C,IAAI4E,EAAgB,EAAoB,MAExC7E,EAAOG,QAAU,SAAUkJ,EAAOC,EAAMjH,GACtC,IAAK,IAAIkH,EAAIF,EAAMrI,OAAS,EAAGuI,GAAK,EAAGA,IACrC,QAAiBrG,IAAbmG,EAAME,GACV,IACElH,EAAQwC,EAAcwE,EAAME,GAAGlF,SAAUiF,EAAMjH,EACjD,CAAE,MAAOc,GACPmG,EAAO,QACPjH,EAAQc,CACV,CAEF,GAAa,UAATmG,EAAkB,MAAMjH,EAC5B,OAAOA,CACT,CAGO,EAED,KACA,CAAErC,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCnH,EAAQ,EAAoB,MAC5BsI,EAAK,EAAoB,MACzBC,EAAc,EAAoB,MAElCC,EAAkBrB,EAAWqB,gBAEjC1J,EAAOG,UAAYuJ,IAAoBxI,GAAM,WAG3C,GAAqB,SAAhBuI,GAA0BD,EAAK,IAAwB,SAAhBC,GAA0BD,EAAK,IAAwB,YAAhBC,GAA6BD,EAAK,GAAK,OAAO,EACjI,IAAIG,EAAS,IAAIC,YAAY,GACzBC,EAAQH,EAAgBC,EAAQ,CAAEG,SAAU,CAACH,KACjD,OAA6B,IAAtBA,EAAOI,YAAyC,IAArBF,EAAME,UAC1C,GAGO,EAED,KACA,CAAEvF,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjC2B,EAAc,EAAoB,MAClCC,EAAe,EAAoB,MAEnCC,EAAa7B,EAAW6B,WAExBC,GAAuCD,IAAeA,EAAWjH,UAAUmH,gBAAkB,WAC/F,IAAI5E,EAAS,IAAI0E,EAAW,CAAC,IAAK,IAAK,IAAK,IAAK,MACjD,IACE1E,EAAO4E,cAAc,YACvB,CAAE,MAAOjH,GACP,OAAqB,KAAdqC,EAAO,IAA2B,KAAdA,EAAO,IAA2B,KAAdA,EAAO,IAA2B,MAAdA,EAAO,IAA4B,MAAdA,EAAO,EACjG,CACD,CAPgG,GAW7F0E,GAAYzF,EAAE,CAAEe,OAAQ,aAAcC,OAAO,EAAME,OAAQwE,GAAuC,CACpGC,cAAe,SAAuBC,GACpCJ,EAAazG,MAEb,IAAIY,EAAS4F,EAAYK,EAAQtJ,UAAUC,OAAS,EAAID,UAAU,QAAKmC,EAAWM,KAAMA,KAAKxC,QAE7F,MAAO,CAAEsJ,KAAMlG,EAAOkG,KAAMC,QAASnG,EAAOmG,QAC9C,GAIK,EAED,KACA,CAAEvK,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAEtCjB,EAAOG,QAAUc,EAAY,CAAC,EAAEgF,cAGzB,EAED,KACA,CAAEzB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCmC,EAAQ,EAAoB,MAC5BvI,EAAQ,EAAoB,MAC5BwI,EAA6B,EAAoB,MACjDnK,EAAY,EAAoB,MAChCoK,EAAU,EAAoB,MAE9BC,EAAUtC,EAAWsC,QAErBC,GAAmB,EAWvBnG,EAAE,CAAEe,OAAQ,UAAWqF,MAAM,EAAMlF,QARrBgF,IAAYA,EAAa,KAAKD,GAAQ,WAClDC,EAAa,KAAE,SAAU/J,GACvBgK,EAAgC,IAAbhK,CACrB,GAAG,EACL,IAAGuC,QAAUyH,GAIwC,CACnD,IAAO,SAAUE,GACf,IAAIC,EAAOhK,UAAUC,OAAS,EAAIiB,EAAMlB,UAAW,GAAK,GACpDiK,EAAoBP,EAA2BQ,EAAEzH,MACjDY,EAASsG,GAAQ,WACnB,OAAOF,EAAMlK,EAAUwK,QAAa5H,EAAW6H,EACjD,IAEA,OADC3G,EAAOjB,MAAQ6H,EAAkBE,OAASF,EAAkBG,SAAS/G,EAAO/B,OACtE2I,EAAkBI,OAC3B,GAIK,EAED,KACA,CAAE5G,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4G,EAAQ,EAAoB,MAC5BC,EAAgC,EAAoB,MAOxD7G,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QANf,EAAoB,KAEnC4F,CAAuB,WAAaD,EAA8B,UAIlB,CAC5DD,MAAOA,GAIF,EAED,KACA,CAAE7G,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BC,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCE,EAAsB,EAAoB,MAC1C4G,EAA+B,EAAoB,MACnD3G,EAAgB,EAAoB,MACpCE,EAAwC,EAAoB,KAC5DC,EAA2C,EAAoB,MAC/DF,EAAU,EAAoB,MAE9B2G,GAA4C3G,IAAYC,EAAsC,OAAO,WAA0B,IAC/H2G,GAAiC5G,IAAY2G,GAC5CzG,EAAyC,MAAOrE,WAEjDwE,EAASL,GAAW2G,GAA4CC,EAEhEtG,EAAgBR,GAAoB,WACtC,IAAIP,EAAWb,KAAKa,SAChBD,EAAS7D,EAASF,EAAKmD,KAAKc,KAAMD,IAEtC,KADWb,KAAKe,OAASH,EAAOG,MACrB,OAAOiH,EAA6BnH,EAAUb,KAAK8B,OAAQ,CAAClB,EAAO/B,MAAOmB,KAAK+B,YAAY,EACxG,IAIAd,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQR,GAAU,CACjEwG,IAAK,SAAarG,GAChB/E,EAASiD,MACT,IACElD,EAAUgF,EACZ,CAAE,MAAOnC,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,OAAIuI,EAAsCrL,EAAKqL,EAA+BlI,KAAM8B,GAE7E,IAAIF,EAAcV,EAAkBlB,MAAO,CAChD8B,OAAQA,GAEZ,GAIK,EAED,KACEtF,IAKRA,EAAOG,QAAU,SAAUyL,GACzB,MAAO,CACLvH,SAAUuH,EACVtH,KAAMsH,EAAItH,KACVC,MAAM,EAEV,CAGO,EAED,KACA,CAAEvE,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCE,EAAS,EAAoB,MAC7B0K,EAAkB,EAAoB,MACtCC,EAAW,EAAoB,MAAa,QAC5CpD,EAAa,EAAoB,KAEjCqD,EAAO9K,EAAY,GAAG8K,MAE1B/L,EAAOG,QAAU,SAAU6L,EAAQC,GACjC,IAGIC,EAHA1E,EAAIqE,EAAgBG,GACpBzC,EAAI,EACJnF,EAAS,GAEb,IAAK8H,KAAO1E,GAAIrG,EAAOuH,EAAYwD,IAAQ/K,EAAOqG,EAAG0E,IAAQH,EAAK3H,EAAQ8H,GAE1E,KAAOD,EAAMjL,OAASuI,GAAOpI,EAAOqG,EAAG0E,EAAMD,EAAM1C,SAChDuC,EAAQ1H,EAAQ8H,IAAQH,EAAK3H,EAAQ8H,IAExC,OAAO9H,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIuC,EAAc,EAAoB,KAClCV,EAAiB,EAAoB,MAEzC9B,EAAOG,QAAU,SAAUqF,EAAQ/C,EAAM0J,GAGvC,OAFIA,EAAWxK,KAAKa,EAAY2J,EAAWxK,IAAKc,EAAM,CAAEE,QAAQ,IAC5DwJ,EAAWjE,KAAK1F,EAAY2J,EAAWjE,IAAKzF,EAAM,CAAEG,QAAQ,IACzDd,EAAemJ,EAAEzF,EAAQ/C,EAAM0J,EACxC,CAGO,EAED,KACA,CAAEnM,EAAQC,EAA0B,KAG1C,IAGI4F,EAAO,CAAC,EAEZA,EALsB,EAAoB,KAEtBsB,CAAgB,gBAGd,IAEtBnH,EAAOG,QAA2B,eAAjB0B,OAAOgE,EAGjB,EAED,KACA,CAAE7F,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAElCsC,EAAWtC,EAAY,CAAC,EAAEsC,UAC1BvB,EAAcf,EAAY,GAAGgB,OAEjCjC,EAAOG,QAAU,SAAUC,GACzB,OAAO4B,EAAYuB,EAASnD,GAAK,GAAI,EACvC,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAIiB,EAAQ,EAAoB,MAEhClB,EAAOG,SAAWe,GAAM,WACtB,SAASkL,IAAkB,CAG3B,OAFAA,EAAEnJ,UAAUF,YAAc,KAEnBhB,OAAOsK,eAAe,IAAID,KAASA,EAAEnJ,SAC9C,GAGO,EAED,KACA,CAAEjD,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCpH,EAAc,EAAoB,MAElCiJ,EAAa7B,EAAW6B,WACxBoC,EAAcjE,EAAWiE,YACzBC,EAAWlE,EAAWkE,SACtBC,EAAMjG,KAAKiG,IACXC,EAAU,YACVhF,EAAOxG,EAAYwL,EAAQhF,MAC3BzF,EAAcf,EAAY,GAAGgB,OAEjCjC,EAAOG,QAAU,SAAUkK,EAAQqC,GACjC,IAAIC,EAAetC,EAAOrJ,OAC1B,GAAI2L,EAAe,GAAM,EAAG,MAAM,IAAIL,EAAY,iDAKlD,IAJA,IAAIM,EAAYF,EAAOF,EAAIE,EAAK1L,OAAQ2L,EAAe,GAAKA,EAAe,EACvEE,EAAQH,GAAQ,IAAIxC,EAAW0C,GAC/BtC,EAAO,EACPC,EAAU,EACPA,EAAUqC,GAAW,CAC1B,IAAIE,EAAS9K,EAAYqI,EAAQC,EAAMA,GAAQ,GAC/C,GAAI7C,EAAKgF,EAASK,GAAS,MAAM,IAAIR,EAAY,6CACjDO,EAAMtC,KAAagC,EAASO,EAAQ,GACtC,CACA,MAAO,CAAED,MAAOA,EAAOvC,KAAMA,EAC/B,CAGO,EAED,KACA,CAAEtK,EAAQC,EAA0B,KAI1C,IAoDI8M,EApDAxM,EAAW,EAAoB,MAC/ByM,EAAyB,EAAoB,MAC7C1F,EAAc,EAAoB,MAClCoB,EAAa,EAAoB,KACjCuE,EAAO,EAAoB,KAC3BC,EAAwB,EAAoB,MAC5CzE,EAAY,EAAoB,MAIhC0E,EAAY,YACZC,EAAS,SACTC,EAAW5E,EAAU,YAErB6E,EAAmB,WAA0B,EAE7CC,EAAY,SAAUC,GACxB,MARO,IAQKJ,EATL,IASmBI,EAAnBC,KAAwCL,EATxC,GAUT,EAGIM,EAA4B,SAAUX,GACxCA,EAAgBY,MAAMJ,EAAU,KAChCR,EAAgBa,QAChB,IAAIC,EAAOd,EAAgBe,aAAa/L,OAGxC,OADAgL,EAAkB,KACXc,CACT,EAyBIE,EAAkB,WACpB,IACEhB,EAAkB,IAAIiB,cAAc,WACtC,CAAE,MAAO7K,GAAsB,CAzBF,IAIzB8K,EAFAC,EACAC,EAuBJJ,EAAqC,oBAAZK,SACrBA,SAASC,QAAUtB,EACjBW,EAA0BX,IA1B5BmB,EAAShB,EAAsB,UAC/BiB,EAAK,OAASf,EAAS,IAE3Bc,EAAOI,MAAMC,QAAU,OACvBtB,EAAKuB,YAAYN,GAEjBA,EAAOO,IAAM5M,OAAOsM,IACpBF,EAAiBC,EAAOQ,cAAcN,UACvBO,OACfV,EAAeN,MAAMJ,EAAU,sBAC/BU,EAAeL,QACRK,EAAe7B,GAiBlBsB,EAA0BX,GAE9B,IADA,IAAI/L,EAASsG,EAAYtG,OAClBA,YAAiB+M,EAAgBZ,GAAW7F,EAAYtG,IAC/D,OAAO+M,GACT,EAEArF,EAAW2E,IAAY,EAKvBrN,EAAOG,QAAU4B,OAAO6M,QAAU,SAAgBpH,EAAGqH,GACnD,IAAIzK,EAQJ,OAPU,OAANoD,GACF8F,EAAiBH,GAAa5M,EAASiH,GACvCpD,EAAS,IAAIkJ,EACbA,EAAiBH,GAAa,KAE9B/I,EAAOiJ,GAAY7F,GACdpD,EAAS2J,SACM7K,IAAf2L,EAA2BzK,EAAS4I,EAAuB/B,EAAE7G,EAAQyK,EAC9E,CAGO,EAED,KACA,CAAErK,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBqK,EAAe,EAAoB,MASvCrK,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QARf,EAAoB,KAEhC4F,CAAuB,gBAAgB,SAAUnH,GAChE,OAAQA,CACV,KAIiE,CAC/D0K,aAAcA,GAIT,EAED,KACA,CAAEtK,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BC,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCE,EAAsB,EAAoB,MAC1C4G,EAA+B,EAAoB,MACnD1G,EAAU,EAAoB,MAC9BD,EAAgB,EAAoB,MACpCE,EAAwC,EAAoB,KAC5DC,EAA2C,EAAoB,MAE/D+J,GAA+CjK,IAAYC,EAAsC,UAAU,WAA0B,IACrIiK,GAAoClK,IAAYiK,GAC/C/J,EAAyC,SAAUrE,WAEpDwE,EAASL,GAAWiK,GAA+CC,EAEnE5J,EAAgBR,GAAoB,WAKtC,IAJA,IAGIR,EAAc/B,EAHdgC,EAAWb,KAAKa,SAChBwD,EAAYrE,KAAKqE,UACjBvD,EAAOd,KAAKc,OAEH,CAGX,GAFAF,EAAS7D,EAASF,EAAKiE,EAAMD,IACtBb,KAAKe,OAASH,EAAOG,KAClB,OAEV,GADAlC,EAAQ+B,EAAO/B,MACXmJ,EAA6BnH,EAAUwD,EAAW,CAACxF,EAAOmB,KAAK+B,YAAY,GAAO,OAAOlD,CAC/F,CACF,IAIAoC,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQR,GAAU,CACjE8J,OAAQ,SAAgBpH,GACtBtH,EAASiD,MACT,IACElD,EAAUuH,EACZ,CAAE,MAAO1E,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,OAAI6L,EAAyC3O,EAAK2O,EAAkCxL,KAAMqE,GAEnF,IAAIzC,EAAcV,EAAkBlB,MAAO,CAChDqE,UAAWA,GAEf,GAIK,EAED,KACE7H,IAKRA,EAAOG,QAAU,SAAUkC,EAAOkC,GAChC,MAAO,CAAElC,MAAOA,EAAOkC,KAAMA,EAC/B,CAGO,EAED,KACA,CAAEvE,EAAQC,EAA0B,KAG1C,IAAIsD,EAAW,EAAoB,KAEnCvD,EAAOG,QAAU,SAAUS,EAAUsO,GACnC,YAAoBhM,IAAbtC,EAAyBG,UAAUC,OAAS,EAAI,GAAKkO,EAAW3L,EAAS3C,EAClF,CAGO,EAED,KACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAI6F,EAAO,EAAoB,MAC3BzF,EAAO,EAAoB,MAC3BE,EAAW,EAAoB,MAC/BC,EAAc,EAAoB,MAClC2O,EAAwB,EAAoB,MAC5CC,EAAoB,EAAoB,MACxCnJ,EAAgB,EAAoB,MACpCoJ,EAAc,EAAoB,IAClC5O,EAAoB,EAAoB,KACxCoE,EAAgB,EAAoB,MAEpCnE,EAAaC,UAEb2O,EAAS,SAAUrH,EAAS7D,GAC9BZ,KAAKyE,QAAUA,EACfzE,KAAKY,OAASA,CAChB,EAEImL,EAAkBD,EAAOrM,UAE7BjD,EAAOG,QAAU,SAAUqP,EAAUC,EAAiB/M,GACpD,IAMI2B,EAAUqL,EAAQC,EAAO3O,EAAQoD,EAAQE,EAAMH,EAN/CyL,EAAOlN,GAAWA,EAAQkN,KAC1BC,KAAgBnN,IAAWA,EAAQmN,YACnC9H,KAAerF,IAAWA,EAAQqF,WAClC+H,KAAiBpN,IAAWA,EAAQoN,aACpC9H,KAAiBtF,IAAWA,EAAQsF,aACpC/D,EAAK6B,EAAK2J,EAAiBG,GAG3B9H,EAAO,SAAUiI,GAEnB,OADI1L,GAAUQ,EAAcR,EAAU,UAC/B,IAAIiL,GAAO,EAAMS,EAC1B,EAEIC,EAAS,SAAU3N,GACrB,OAAIwN,GACFtP,EAAS8B,GACF2F,EAAc/D,EAAG5B,EAAM,GAAIA,EAAM,GAAIyF,GAAQ7D,EAAG5B,EAAM,GAAIA,EAAM,KAChE2F,EAAc/D,EAAG5B,EAAOyF,GAAQ7D,EAAG5B,EAC9C,EAEA,GAAI0F,EACF1D,EAAWmL,EAASnL,cACf,GAAIyL,EACTzL,EAAWmL,MACN,CAEL,KADAE,EAASjP,EAAkB+O,IACd,MAAM,IAAI9O,EAAWF,EAAYgP,GAAY,oBAE1D,GAAIL,EAAsBO,GAAS,CACjC,IAAKC,EAAQ,EAAG3O,EAASoO,EAAkBI,GAAWxO,EAAS2O,EAAOA,IAEpE,IADAvL,EAAS4L,EAAOR,EAASG,MACX1J,EAAcsJ,EAAiBnL,GAAS,OAAOA,EAC7D,OAAO,IAAIkL,GAAO,EACtB,CACAjL,EAAWgL,EAAYG,EAAUE,EACnC,CAGA,IADApL,EAAOyD,EAAYyH,EAASlL,KAAOD,EAASC,OACnCH,EAAO9D,EAAKiE,EAAMD,IAAWE,MAAM,CAC1C,IACEH,EAAS4L,EAAO7L,EAAK9B,MACvB,CAAE,MAAOc,GACP0B,EAAcR,EAAU,QAASlB,EACnC,CACA,GAAqB,iBAAViB,GAAsBA,GAAU6B,EAAcsJ,EAAiBnL,GAAS,OAAOA,CAC5F,CAAE,OAAO,IAAIkL,GAAO,EACtB,CAGO,EAED,KACA,CAAEtP,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BiI,EAAW,EAAoB,IAC/B2H,EAAW,EAAoB,KAC/BlJ,EAAY,EAAoB,MAChCmJ,EAAsB,EAAoB,MAC1C/I,EAAkB,EAAoB,MAEtCzG,EAAaC,UACbwP,EAAehJ,EAAgB,eAInCnH,EAAOG,QAAU,SAAUiQ,EAAOC,GAChC,IAAK/H,EAAS8H,IAAUH,EAASG,GAAQ,OAAOA,EAChD,IACIhM,EADAkM,EAAevJ,EAAUqJ,EAAOD,GAEpC,GAAIG,EAAc,CAGhB,QAFapN,IAATmN,IAAoBA,EAAO,WAC/BjM,EAAS/D,EAAKiQ,EAAcF,EAAOC,IAC9B/H,EAASlE,IAAW6L,EAAS7L,GAAS,OAAOA,EAClD,MAAM,IAAI1D,EAAW,0CACvB,CAEA,YADawC,IAATmN,IAAoBA,EAAO,UACxBH,EAAoBE,EAAOC,EACpC,CAGO,EAED,KACA,CAAErQ,EAAQC,EAA0B,KAG1C,IAAIkB,EAAS,EAAoB,MAC7BjB,EAAa,EAAoB,MACjCqQ,EAAW,EAAoB,MAC/B9H,EAAY,EAAoB,MAChC+H,EAA2B,EAAoB,MAE/CnD,EAAW5E,EAAU,YACrB5B,EAAU9E,OACV0O,EAAkB5J,EAAQ5D,UAK9BjD,EAAOG,QAAUqQ,EAA2B3J,EAAQwF,eAAiB,SAAU7E,GAC7E,IAAIwE,EAASuE,EAAS/I,GACtB,GAAIrG,EAAO6K,EAAQqB,GAAW,OAAOrB,EAAOqB,GAC5C,IAAItK,EAAciJ,EAAOjJ,YACzB,OAAI7C,EAAW6C,IAAgBiJ,aAAkBjJ,EACxCA,EAAYE,UACZ+I,aAAkBnF,EAAU4J,EAAkB,IACzD,CAGO,EAED,KACA,CAAEzQ,EAAQC,EAA0B,KAG1C,IAAIiB,EAAQ,EAAoB,MAC5BhB,EAAa,EAAoB,MAEjCwQ,EAAc,kBAEdC,EAAW,SAAUC,EAASC,GAChC,IAAIxO,EAAQyO,EAAKC,EAAUH,IAC3B,OAAOvO,IAAU2O,GACb3O,IAAU4O,IACV/Q,EAAW2Q,GAAa3P,EAAM2P,KAC5BA,EACR,EAEIE,EAAYJ,EAASI,UAAY,SAAU1G,GAC7C,OAAOxI,OAAOwI,GAAQnI,QAAQwO,EAAa,KAAKQ,aAClD,EAEIJ,EAAOH,EAASG,KAAO,CAAC,EACxBG,EAASN,EAASM,OAAS,IAC3BD,EAAWL,EAASK,SAAW,IAEnChR,EAAOG,QAAUwQ,CAGV,EAED,KACE3Q,IAGR,IAAImR,EAAiB,iEACjBC,EAAiBD,EAAiB,KAClCE,EAAoBF,EAAiB,KAErCG,EAAU,SAAUC,GAItB,IAFA,IAAInN,EAAS,CAAC,EACVuL,EAAQ,EACLA,EAAQ,GAAIA,IAASvL,EAAOmN,EAAWC,OAAO7B,IAAUA,EAC/D,OAAOvL,CACT,EAEApE,EAAOG,QAAU,CACfsR,IAAKL,EACLM,IAAKJ,EAAQF,GACbO,OAAQN,EACRO,OAAQN,EAAQD,GAIX,EAED,KACErR,IAGR,IAAIU,EAAaC,UAEjBX,EAAOG,QAAU,SAAU0R,EAAQC,GACjC,GAAID,EAASC,EAAU,MAAM,IAAIpR,EAAW,wBAC5C,OAAOmR,CACT,CAGO,EAED,KACA,CAAE7R,EAAQC,EAA0B,KAG1C,IAEI8R,EAFa,EAAoB,MAEVA,UACvBC,EAAYD,GAAaA,EAAUC,UAEvChS,EAAOG,QAAU6R,EAAYnQ,OAAOmQ,GAAa,EAG1C,EAED,KACA,CAAEhS,EAAQC,EAA0B,KAI1C,IAAIgS,EAAsB,EAAoB,MAC1C3J,EAAW,EAAoB,IAC/B4J,EAAyB,EAAoB,MAC7CC,EAAqB,EAAoB,MAM7CnS,EAAOG,QAAU4B,OAAOqQ,iBAAmB,aAAe,CAAC,EAAI,WAC7D,IAEIxP,EAFAyP,GAAiB,EACjBxM,EAAO,CAAC,EAEZ,KACEjD,EAASqP,EAAoBlQ,OAAOkB,UAAW,YAAa,QACrD4C,EAAM,IACbwM,EAAiBxM,aAAgByM,KACnC,CAAE,MAAOnP,GAAqB,CAC9B,OAAO,SAAwBqE,EAAG/B,GAGhC,OAFAyM,EAAuB1K,GACvB2K,EAAmB1M,GACd6C,EAASd,IACV6K,EAAgBzP,EAAO4E,EAAG/B,GACzB+B,EAAE+K,UAAY9M,EACZ+B,GAHkBA,CAI3B,CACF,CAjB+D,QAiBzDtE,EAGC,EAED,KACA,CAAElD,EAAQC,EAA0B,KAG1C,IAAIC,EAAa,EAAoB,MACjCoI,EAAW,EAAoB,IAC/B8J,EAAiB,EAAoB,MAGzCpS,EAAOG,QAAU,SAAUqS,EAAOC,EAAOC,GACvC,IAAIC,EAAWC,EAUf,OAPER,GAEAlS,EAAWyS,EAAYF,EAAM1P,cAC7B4P,IAAcD,GACdpK,EAASsK,EAAqBD,EAAU1P,YACxC2P,IAAuBF,EAAQzP,WAC/BmP,EAAeI,EAAOI,GACjBJ,CACT,CAGO,EAED,KACA,CAAExS,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCwK,EAAsB,EAAoB,MAC1CC,EAAwB,EAAoB,MAE5CC,EAAW1K,EAAW0K,SAE1B/S,EAAOG,QAAU,SAAUqH,GACzB,IAAKqL,GAAoD,IAA7BC,EAAsBtL,GAAU,OAAO,EACnE,IAGE,OADA,IAAIuL,EAASvL,IACN,CACT,CAAE,MAAOrE,GACP,OAAO,CACT,CACF,CAGO,EAED,KACA,CAAEnD,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAElC+R,EAAK,EACLC,EAAU1M,KAAK2M,SACf3P,EAAWtC,EAAY,IAAIsC,UAE/BvD,EAAOG,QAAU,SAAU+L,GACzB,MAAO,gBAAqBhJ,IAARgJ,EAAoB,GAAKA,GAAO,KAAO3I,IAAWyP,EAAKC,EAAS,GACtF,CAGO,EAED,KACA,CAAEjT,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BC,EAAa,EAAoB,MACjCvJ,EAAQ,EAAoB,MAC5BwJ,EAAO,EAAoB,MAC3BC,EAAe,EAAoB,MACnCC,EAAa,EAAoB,MACjCC,EAAgB,EAAoB,KAEpCrL,EAAMiL,EAAWjL,IACjBsL,EAASL,EAAWK,OAIxBzT,EAAOG,QAAU,SAAoBuT,GACnC,IAAIlM,EAAI2L,EAAK3P,MACTmQ,EAAWL,EAAaI,GACxBtP,EAASyF,EAAMrC,GAOnB,OANI6L,EAAK7L,IAAMmM,EAASN,KAAME,EAAW/L,GAAG,SAAUoM,GAChDD,EAASE,SAASD,IAAIH,EAAOrP,EAAQwP,EAC3C,IACKJ,EAAcG,EAAStE,eAAe,SAAUuE,GAC/CzL,EAAI/D,EAAQwP,IAAIH,EAAOrP,EAAQwP,EACrC,IACOxP,CACT,CAGO,EAED,KACEpE,IAGR,IAAIU,EAAaC,UAEjBX,EAAOG,QAAU,SAAUS,GACzB,GAAuB,iBAAZA,EAAsB,OAAOA,EACxC,MAAM,IAAIF,EAAW,2BACvB,CAGO,EAED,KACA,CAAEV,EAAQC,EAA0B,KAG1C,IAAI6T,EAAsB,EAAoB,MAE1ClS,EAAUC,OACVnB,EAAaC,UAEjBX,EAAOG,QAAU,SAAUS,GACzB,GAAIkT,EAAoBlT,GAAW,OAAOA,EAC1C,MAAM,IAAIF,EAAW,aAAekB,EAAQhB,GAAY,kBAC1D,CAGO,EAED,KACA,CAAE4D,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BqH,EAAU,EAAoB,MAC9BpH,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCG,EAAgB,EAAoB,MAGpCkP,EAF2C,EAAoB,KAE9B/O,CAAyC,OAAQrE,WAItF8D,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQoO,GAAkC,CACzFC,KAAM,SAAcnM,GAClBtH,EAASiD,MACT,IACElD,EAAUuH,EACZ,CAAE,MAAO1E,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,GAAI4Q,EAAgC,OAAO1T,EAAK0T,EAAgCvQ,KAAMqE,GAEtF,IAAI7D,EAASU,EAAkBlB,MAC3B+B,EAAU,EACd,OAAOmC,EAAQ1D,GAAQ,SAAU3B,EAAOyF,GACtC,GAAID,EAAUxF,EAAOkD,KAAY,OAAOuC,GAC1C,GAAG,CAAEC,WAAW,EAAMC,aAAa,IAAQC,OAC7C,GAIK,EAED,KACA,CAAEjI,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BC,EAAa,EAAoB,MACjCvJ,EAAQ,EAAoB,MAC5ByJ,EAAe,EAAoB,MACnCE,EAAgB,EAAoB,KAEpCS,EAAMb,EAAWa,IACjB9L,EAAMiL,EAAWjL,IACjBsL,EAASL,EAAWK,OAIxBzT,EAAOG,QAAU,SAA6BuT,GAC5C,IAAIlM,EAAI2L,EAAK3P,MACT0Q,EAAWZ,EAAaI,GAAOrE,cAC/BjL,EAASyF,EAAMrC,GAKnB,OAJAgM,EAAcU,GAAU,SAAUN,GAC5BzL,EAAIX,EAAGoM,GAAIH,EAAOrP,EAAQwP,GACzBK,EAAI7P,EAAQwP,EACnB,IACOxP,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCf,EAAa,EAAoB,MACjC2I,EAAQ,EAAoB,MAE5BsL,EAAmBlT,EAAYqC,SAASC,UAGvCrD,EAAW2I,EAAMvH,iBACpBuH,EAAMvH,cAAgB,SAAUlB,GAC9B,OAAO+T,EAAiB/T,EAC1B,GAGFJ,EAAOG,QAAU0I,EAAMvH,aAGhB,EAED,KACA,CAAEkD,EAAyBrE,KAIjCA,EAAQ8K,EAAIlJ,OAAOqS,qBAGZ,EAED,KACA,CAAEpU,EAAQC,EAA0B,KAG1C,IAAIiB,EAAQ,EAAoB,MAGhClB,EAAOG,SAAWe,GAAM,WAEtB,OAA+E,IAAxEa,OAAOD,eAAe,CAAC,EAAG,EAAG,CAAEH,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,GAGO,EAED,KACA,CAAE3B,EAAQC,EAA0B,KAG1C,IAAIK,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BF,EAAO,EAAoB,MAC3BgU,EAAsB,EAAoB,MAC1C3P,EAAoB,EAAoB,MAExC4P,EAAe,eACfC,EAAcC,WACd9T,EAAaC,UACb8T,EAAMlO,KAAKkO,IAEXC,EAAY,SAAUxM,EAAKyM,GAC7BnR,KAAK0E,IAAMA,EACX1E,KAAK6P,KAAOoB,EAAIE,EAAS,GACzBnR,KAAK2E,IAAM7H,EAAU4H,EAAIC,KACzB3E,KAAK+D,KAAOjH,EAAU4H,EAAIX,KAC5B,EAEAmN,EAAUzR,UAAY,CACpBoM,YAAa,WACX,OAAO3K,EAAkBnE,EAASF,EAAKmD,KAAK+D,KAAM/D,KAAK0E,MACzD,EACA2L,SAAU,SAAUzT,GAClB,OAAOC,EAAKmD,KAAK2E,IAAK3E,KAAK0E,IAAK9H,EAClC,GAKFJ,EAAOG,QAAU,SAAUyL,GACzBrL,EAASqL,GACT,IAAIgJ,GAAWhJ,EAAIyH,KAGnB,GAAIuB,GAAYA,EAAS,MAAM,IAAIlU,EAAW4T,GAC9C,IAAIK,EAAUN,EAAoBO,GAClC,GAAID,EAAU,EAAG,MAAM,IAAIJ,EAAYD,GACvC,OAAO,IAAII,EAAU9I,EAAK+I,EAC5B,CAGO,EAED,KACA,CAAE3U,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BE,EAAO,EAAoB,MAC3B3L,EAAU,EAAoB,MAC9B4L,EAAe,EAAoB,MAIvCtT,EAAOG,QAAU,SAAoBuT,GACnC,IAAIlM,EAAI2L,EAAK3P,MACTmQ,EAAWL,EAAaI,GAC5B,QAAIL,EAAK7L,GAAKmM,EAASN,QAGV,IAFN3L,EAAQF,GAAG,SAAUoM,GAC1B,IAAKD,EAASE,SAASD,GAAI,OAAO,CACpC,IAAG,EACL,CAGO,EAED,KACA,CAAEpP,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBoQ,EAAiB,EAAoB,MASzCpQ,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QARf,EAAoB,KAEhC4F,CAAuB,kBAAkB,SAAUnH,GAClE,OAAQA,CACV,KAIiE,CAC/DyQ,eAAgBA,GAIX,EAED,KACA,CAAE7U,EAAQC,EAA0B,KAG1C,IAAIqI,EAAW,EAAoB,IAEnCtI,EAAOG,QAAU,SAAUS,GACzB,OAAO0H,EAAS1H,IAA0B,OAAbA,CAC/B,CAGO,EAED,KACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIqI,EAAW,EAAoB,IAE/B1G,EAAUC,OACVnB,EAAaC,UAEjBX,EAAOG,QAAU,SAAUS,GACzB,QAAiBsC,IAAbtC,GAA0B0H,EAAS1H,GAAW,OAAOA,EACzD,MAAM,IAAIF,EAAWkB,EAAQhB,GAAY,iCAC3C,CAGO,EAED,KACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCC,EAAW,EAAoB,IAE/B8F,EAAW/F,EAAW+F,SAEtBxK,EAAS0E,EAAS8F,IAAa9F,EAAS8F,EAAS0G,eAErD9U,EAAOG,QAAU,SAAUC,GACzB,OAAOwD,EAASwK,EAAS0G,cAAc1U,GAAM,CAAC,CAChD,CAGO,EAED,KACA,CAAEoE,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB8L,EAAW,EAAoB,MAC/BnB,EAAoB,EAAoB,MACxC2F,EAAiB,EAAoB,MACrCC,EAA2B,EAAoB,MAsBnDvQ,EAAE,CAAEe,OAAQ,QAASC,OAAO,EAAM3C,MAAO,EAAG6C,OArBhC,EAAoB,KAENzE,EAAM,WAC9B,OAAoD,aAA7C,GAAG6K,KAAK1L,KAAK,CAAEW,OAAQ,YAAe,EAC/C,MAIqC,WACnC,IAEEe,OAAOD,eAAe,GAAI,SAAU,CAAEkB,UAAU,IAAS+I,MAC3D,CAAE,MAAO5I,GACP,OAAOA,aAAiBxC,SAC1B,CACF,CAEqCsU,IAIyB,CAE5DlJ,KAAM,SAAcmJ,GAClB,IAAI1N,EAAI+I,EAAS/M,MACb2R,EAAM/F,EAAkB5H,GACxB4N,EAAWrU,UAAUC,OACzBgU,EAAyBG,EAAMC,GAC/B,IAAK,IAAI7L,EAAI,EAAGA,EAAI6L,EAAU7L,IAC5B/B,EAAE2N,GAAOpU,UAAUwI,GACnB4L,IAGF,OADAJ,EAAevN,EAAG2N,GACXA,CACT,GAIK,EAED,KACEnV,IAKRA,EAAOG,QAAU,SAAUC,GACzB,OAAOA,OACT,CAGO,EAED,KACEJ,IAGR,IAAIuU,EAAcC,WAElBxU,EAAOG,QAAU,SAAUC,GAEzB,GAAIA,GAAOA,EAAI,OAAOA,EACtB,MAAM,IAAImU,EAAY,qBACxB,CAGO,EAED,KACA,CAAEvU,EAAQC,EAA0B,KAG1C,IAAI+F,EAAU,EAAoB,MAE9BtF,EAAaC,UAIjBX,EAAOG,QAAU,SAAUS,GACzB,GAA0B,eAAtBoF,EAAQpF,GAA4B,OAAOA,EAC/C,MAAM,IAAIF,EAAW,gCACvB,CAGO,EAED,KACA,CAAEV,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3Bc,EAAO,EAAoB,MAAS,IACpCpK,EAAQ,EAAoB,MAC5ByJ,EAAe,EAAoB,MACnCE,EAAgB,EAAoB,KAIxCxT,EAAOG,QAAU,SAAeuT,GAC9B,IAAIlM,EAAI2L,EAAK3P,MACT0Q,EAAWZ,EAAaI,GAAOrE,cAC/BjL,EAASyF,EAAMrC,GAInB,OAHAgM,EAAcU,GAAU,SAAU9T,GAChC6T,EAAI7P,EAAQhE,EACd,IACOgE,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIkH,EAAkB,EAAoB,MACtCF,EAAY,EAAoB,MAEhCC,EAAWC,EAAgB,YAC3BkO,EAAiB/C,MAAMrP,UAG3BjD,EAAOG,QAAU,SAAUC,GACzB,YAAc8C,IAAP9C,IAAqB6G,EAAUqL,QAAUlS,GAAMiV,EAAenO,KAAc9G,EACrF,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAI1C,IAAIoI,EAAa,EAAoB,MACjC2J,EAAY,EAAoB,MAChChM,EAAU,EAAoB,MAE9BsP,EAAsB,SAAUjL,GAClC,OAAO2H,EAAU/P,MAAM,EAAGoI,EAAOrJ,UAAYqJ,CAC/C,EAEArK,EAAOG,QACDmV,EAAoB,QAAgB,MACpCA,EAAoB,sBAA8B,aAClDA,EAAoB,SAAiB,OACrCA,EAAoB,YAAoB,OACxCjN,EAAWkN,KAA6B,iBAAfA,IAAIC,QAA4B,MACzDnN,EAAWoN,MAA+B,iBAAhBA,KAAKD,QAA4B,OAC3B,YAAhCxP,EAAQqC,EAAWqN,SAA+B,OAClDrN,EAAWsN,QAAUtN,EAAW+F,SAAiB,UAC9C,MAIF,EAED,KACA,CAAEpO,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BH,EAAa,EAAoB,MACjCoI,EAAW,EAAoB,IAE/B5H,EAAaC,UAIjBX,EAAOG,QAAU,SAAUiQ,EAAOC,GAChC,IAAIpM,EAAI2R,EACR,GAAa,WAATvF,GAAqBnQ,EAAW+D,EAAKmM,EAAM7M,YAAc+E,EAASsN,EAAMvV,EAAK4D,EAAImM,IAAS,OAAOwF,EACrG,GAAI1V,EAAW+D,EAAKmM,EAAMyF,WAAavN,EAASsN,EAAMvV,EAAK4D,EAAImM,IAAS,OAAOwF,EAC/E,GAAa,WAATvF,GAAqBnQ,EAAW+D,EAAKmM,EAAM7M,YAAc+E,EAASsN,EAAMvV,EAAK4D,EAAImM,IAAS,OAAOwF,EACrG,MAAM,IAAIlV,EAAW,0CACvB,CAGO,EAED,KACA,CAAEV,EAAQC,EAA0B,KAG1C,IAAI+F,EAAU,EAAoB,MAKlChG,EAAOG,QAAUmS,MAAMwD,SAAW,SAAiBlV,GACjD,MAA6B,UAAtBoF,EAAQpF,EACjB,CAGO,EAED,KACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAGlC8U,EAAeC,IAAI/S,UAEvBjD,EAAOG,QAAU,CAEf6V,IAAKA,IACL/B,IAAKhT,EAAY8U,EAAa9B,KAC9B9L,IAAKlH,EAAY8U,EAAa5N,KAC9BsL,OAAQxS,EAAY8U,EAAqB,QACzCtQ,MAAOsQ,EAIF,EAED,KACA,CAAE/V,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BhL,EAAO,EAAoB,MAAS,IACpCkL,EAAO,EAAoB,MAC3BC,EAAe,EAAoB,MACnCC,EAAa,EAAoB,MACjCC,EAAgB,EAAoB,KACpC3O,EAAgB,EAAoB,MAIxC7E,EAAOG,QAAU,SAAwBuT,GACvC,IAAIlM,EAAI2L,EAAK3P,MACTmQ,EAAWL,EAAaI,GAC5B,GAAIL,EAAK7L,IAAMmM,EAASN,KAAM,OAEjB,IAFwBE,EAAW/L,GAAG,SAAUoM,GAC3D,GAAID,EAASE,SAASD,GAAI,OAAO,CACnC,IAAG,GACH,IAAIvP,EAAWsP,EAAStE,cACxB,OAEO,IAFAmE,EAAcnP,GAAU,SAAUuP,GACvC,GAAIzL,EAAIX,EAAGoM,GAAI,OAAO/O,EAAcR,EAAU,UAAU,EAC1D,GACF,CAGO,EAED,KACA,CAAErE,EAAQC,EAA0B,KAG1C,IAQIgW,EAAeC,EAASvM,EAAQwM,EARhC9N,EAAa,EAAoB,MACjC+N,EAAuB,EAAoB,MAC3CC,EAAmC,EAAoB,MAEvD3M,EAAkBrB,EAAWqB,gBAC7B4M,EAAejO,EAAWuB,YAC1B2M,EAAkBlO,EAAWmO,eAC7BC,GAAS,EAGb,GAAIJ,EACFI,EAAS,SAAUC,GACjBhN,EAAgBgN,EAAc,CAAE5M,SAAU,CAAC4M,IAC7C,OACK,GAAIJ,EAAc,IAClBC,IACHN,EAAgBG,EAAqB,qBAClBG,EAAkBN,EAAcO,gBAGjDD,IACFL,EAAU,IAAIK,EACd5M,EAAS,IAAI2M,EAAa,GAE1BH,EAAU,SAAUO,GAClBR,EAAQS,MAAMC,YAAY,KAAM,CAACF,GACnC,EAE0B,IAAtB/M,EAAOI,aACToM,EAAQxM,GACkB,IAAtBA,EAAOI,aAAkB0M,EAASN,IAG5C,CAAE,MAAOhT,GAAqB,CAE9BnD,EAAOG,QAAUsW,CAGV,EAED,KACA,CAAEzW,EAAQC,EAA0B,KAI1C,IAAI4W,EAAa,EAAoB,MACjC3V,EAAQ,EAAoB,MAG5BU,EAFa,EAAoB,MAEZC,OAGzB7B,EAAOG,UAAY4B,OAAOqS,wBAA0BlT,GAAM,WACxD,IAAI4V,EAASC,OAAO,oBAKpB,OAAQnV,EAAQkV,MAAa/U,OAAO+U,aAAmBC,UAEpDA,OAAOC,MAAQH,GAAcA,EAAa,EAC/C,GAGO,EAED,KACA,CAAE7W,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClC0U,EAAU,EAAoB,MAE9BpV,EAAaC,UAEbgD,EAA2B5B,OAAO4B,yBAGlCsT,EAAoC7V,IAAgB,WAEtD,QAAa8B,IAATM,KAAoB,OAAO,EAC/B,IAEEzB,OAAOD,eAAe,GAAI,SAAU,CAAEkB,UAAU,IAAShC,OAAS,CACpE,CAAE,MAAOmC,GACP,OAAOA,aAAiBxC,SAC1B,CACF,CATwD,GAWxDX,EAAOG,QAAU8W,EAAoC,SAAUzP,EAAGxG,GAChE,GAAI8U,EAAQtO,KAAO7D,EAAyB6D,EAAG,UAAUxE,SACvD,MAAM,IAAItC,EAAW,gCACrB,OAAO8G,EAAExG,OAASA,CACtB,EAAI,SAAUwG,EAAGxG,GACf,OAAOwG,EAAExG,OAASA,CACpB,CAGO,EAED,KACA,CAAEhB,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MAGrCrI,EAAOG,QAAU,SAAU+W,EAAaC,GACtC,IAAI9Q,EAAWgC,EAAWhC,SACtB+Q,EAAoB/Q,GAAYA,EAASpD,UACzCmD,EAASgR,GAAqBA,EAAkBF,GAEhDG,GAAS,EAEb,GAAIjR,EAAQ,IACVA,EAAO/F,KAAK,CACViE,KAAM,WAAc,MAAO,CAAEC,MAAM,EAAQ,EAC3C,OAAU,WAAc8S,GAAS,CAAM,IACrC,EACN,CAAE,MAAOlU,GAEDA,aAAiBgU,IAAgBE,GAAS,EAClD,CAEA,IAAKA,EAAQ,OAAOjR,CACtB,CAGO,EAED,KACA,SAAUpG,GAGhB,IAAIsX,EAAQ,SAAUlX,GACpB,OAAOA,GAAMA,EAAGmG,OAASA,MAAQnG,CACnC,EAGAJ,EAAOG,QAELmX,EAA2B,iBAAdjP,YAA0BA,aACvCiP,EAAuB,iBAAV3B,QAAsBA,SAEnC2B,EAAqB,iBAARC,MAAoBA,OACjCD,EAAuB,iBAAVE,QAAsBA,SACnCF,EAAqB,iBAAR9T,MAAoBA,OAEjC,WAAe,OAAOA,IAAO,CAA7B,IAAoCF,SAAS,cAATA,EAG/B,EAED,KACA,CAAEkB,EAAyBvE,EAA0B,KAG3D,IAAIwX,EAAgB,EAAoB,MACpCxW,EAAc,EAAoB,MAClCsC,EAAW,EAAoB,KAC/BmU,EAA0B,EAAoB,MAE9CC,EAAmBC,gBACnBC,EAA2BF,EAAiB1U,UAC5C6U,EAAS7W,EAAY4W,EAAyBC,QAC9CC,EAAU9W,EAAY4W,EAAiC,QACvDG,EAAU/W,EAAY4W,EAAyBG,SAC/CjM,EAAO9K,EAAY,GAAG8K,MACtBkM,EAAS,IAAIN,EAAiB,eAElCM,EAAe,OAAE,IAAK,GAGtBA,EAAe,OAAE,SAAK/U,GAElB+U,EAAS,IAAO,OAClBR,EAAcI,EAA0B,UAAU,SAAUpV,GAC1D,IAAIzB,EAASD,UAAUC,OACnBkX,EAASlX,EAAS,OAAIkC,EAAYnC,UAAU,GAChD,GAAIC,QAAqBkC,IAAXgV,EAAsB,OAAOH,EAAQvU,KAAMf,GACzD,IAAI0V,EAAU,GACdH,EAAQxU,MAAM,SAAU4U,EAAGC,GACzBtM,EAAKoM,EAAS,CAAEjM,IAAKmM,EAAGhW,MAAO+V,GACjC,IACAV,EAAwB1W,EAAQ,GAQhC,IAPA,IAMIsX,EANApM,EAAM3I,EAASd,GACfJ,EAAQkB,EAAS2U,GACjBvI,EAAQ,EACR4I,EAAS,EACTC,GAAQ,EACRC,EAAgBN,EAAQnX,OAErB2O,EAAQ8I,GACbH,EAAQH,EAAQxI,KACZ6I,GAASF,EAAMpM,MAAQA,GACzBsM,GAAQ,EACRT,EAAQvU,KAAM8U,EAAMpM,MACfqM,IAET,KAAOA,EAASE,IACdH,EAAQH,EAAQI,MACJrM,MAAQA,GAAOoM,EAAMjW,QAAUA,GAAQyV,EAAOtU,KAAM8U,EAAMpM,IAAKoM,EAAMjW,MAErF,GAAG,CAAEqW,YAAY,EAAMC,QAAQ,GAI1B,EAED,KACA,CAAEnU,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBgG,EAA6B,EAAoB,MAIrDhG,EAAE,CAAEe,OAAQ,UAAWqF,MAAM,GAAQ,CACnC+N,cAAe,WACb,IAAI5N,EAAoBP,EAA2BQ,EAAEzH,MACrD,MAAO,CACL4H,QAASJ,EAAkBI,QAC3BD,QAASH,EAAkBG,QAC3BD,OAAQF,EAAkBE,OAE9B,GAIK,EAED,KACA,CAAElL,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClCyX,EAAuB,EAAoB,MAC3CC,EAA2B,EAAoB,MAEnD9Y,EAAOG,QAAU,SAAU6L,EAAQE,EAAK7J,GAClCjB,EAAayX,EAAqB5N,EAAEe,EAAQE,EAAK4M,EAAyB,EAAGzW,IAC5E2J,EAAOE,GAAO7J,CACrB,CAGO,EAED,KACErC,IAIR,IAAI+Y,EAAiC,iBAAZ3K,UAAwBA,SAAS4K,IAK1DhZ,EAAOG,aAAgC,IAAf4Y,QAA8C7V,IAAhB6V,EAA4B,SAAUnY,GAC1F,MAA0B,mBAAZA,GAA0BA,IAAamY,CACvD,EAAI,SAAUnY,GACZ,MAA0B,mBAAZA,CAChB,CAGO,EAED,KACA,CAAE4D,EAAyBrE,EAAS,KAG1C,IAAIiB,EAAc,EAAoB,MAClC6X,EAAiB,EAAoB,MACrCC,EAA0B,EAAoB,MAC9C3Y,EAAW,EAAoB,MAC/B4Y,EAAgB,EAAoB,MAEpCzY,EAAaC,UAEbyY,EAAkBrX,OAAOD,eAEzBuX,EAA4BtX,OAAO4B,yBACnC2V,EAAa,aACbxV,EAAe,eACfyV,EAAW,WAIfpZ,EAAQ8K,EAAI7J,EAAc8X,EAA0B,SAAwB1R,EAAGgS,EAAGC,GAIhF,GAHAlZ,EAASiH,GACTgS,EAAIL,EAAcK,GAClBjZ,EAASkZ,GACQ,mBAANjS,GAA0B,cAANgS,GAAqB,UAAWC,GAAcF,KAAYE,IAAeA,EAAWF,GAAW,CAC5H,IAAIG,EAAUL,EAA0B7R,EAAGgS,GACvCE,GAAWA,EAAQH,KACrB/R,EAAEgS,GAAKC,EAAWpX,MAClBoX,EAAa,CACX5W,aAAciB,KAAgB2V,EAAaA,EAAW3V,GAAgB4V,EAAQ5V,GAC9E4U,WAAYY,KAAcG,EAAaA,EAAWH,GAAcI,EAAQJ,GACxEtW,UAAU,GAGhB,CAAE,OAAOoW,EAAgB5R,EAAGgS,EAAGC,EACjC,EAAIL,EAAkB,SAAwB5R,EAAGgS,EAAGC,GAIlD,GAHAlZ,EAASiH,GACTgS,EAAIL,EAAcK,GAClBjZ,EAASkZ,GACLR,EAAgB,IAClB,OAAOG,EAAgB5R,EAAGgS,EAAGC,EAC/B,CAAE,MAAOtW,GAAqB,CAC9B,GAAI,QAASsW,GAAc,QAASA,EAAY,MAAM,IAAI/Y,EAAW,2BAErE,MADI,UAAW+Y,IAAYjS,EAAEgS,GAAKC,EAAWpX,OACtCmF,CACT,CAGO,EAED,KACA,CAAExH,EAAQC,EAA0B,KAG1C,IAAI8D,EAAa,EAAoB,MAEjC4V,EAAgB,SAAUtG,GAC5B,MAAO,CACLA,KAAMA,EACNlL,IAAK,WACH,OAAO,CACT,EACAZ,KAAM,WACJ,MAAO,CACLjD,KAAM,WACJ,MAAO,CAAEC,MAAM,EACjB,EAEJ,EAEJ,EAEIqV,EAAgC,SAAUvG,GAC5C,MAAO,CACLA,KAAMA,EACNlL,IAAK,WACH,OAAO,CACT,EACAZ,KAAM,WACJ,MAAM,IAAIsS,MAAM,IAClB,EAEJ,EAEA7Z,EAAOG,QAAU,SAAUsC,EAAMqX,GAC/B,IAAI9D,EAAMjS,EAAW,OACrB,KACE,IAAIiS,GAAMvT,GAAMkX,EAAc,IAC9B,IAME,OADA,IAAI3D,GAAMvT,GAAMkX,GAAe,KACxB,CACT,CAAE,MAAOI,GACP,IAAKD,EAAU,OAAO,EAGtB,IAEE,OADA,IAAI9D,GAAMvT,GAAMmX,GAA+BI,OACxC,CACT,CAAE,MAAO7W,GACP,IAAI+E,EAAM,IAAI8N,EAGd,OAFA9N,EAAI+L,IAAI,GACR/L,EAAI+L,IAAI,GACD6F,EAAS5R,EAAIzF,GAAMmX,EAA8BI,MAC1D,CACF,CACF,CAAE,MAAO7W,GACP,OAAO,CACT,CACF,CAGO,EAED,KACA,CAAEqB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCtE,EAAa,EAAoB,MACjC+U,EAA2B,EAAoB,MAC/ChX,EAAkB,EAAoB,MAAO,EAC7CX,EAAS,EAAoB,MAC7B8Y,EAAa,EAAoB,KACjCC,EAAoB,EAAoB,MACxCC,EAA0B,EAAoB,MAC9CC,EAAwB,EAAoB,MAC5CC,EAAkB,EAAoB,MACtCjZ,EAAc,EAAoB,MAClC0D,EAAU,EAAoB,MAE9BwV,EAAgB,eAChBT,EAAQ9V,EAAW,SACnBwW,EAAqBxW,EAAWuW,GAEhCE,EAAgB,WAClBP,EAAWzW,KAAMiX,GACjB,IAAIC,EAAkB3Z,UAAUC,OAC5B2Z,EAAUR,EAAwBO,EAAkB,OAAIxX,EAAYnC,UAAU,IAC9E0B,EAAO0X,EAAwBO,EAAkB,OAAIxX,EAAYnC,UAAU,GAAI,SAC/E6O,EAAO,IAAI2K,EAAmBI,EAASlY,GACvCU,EAAQ,IAAI0W,EAAMc,GAItB,OAHAxX,EAAMV,KAAO6X,EACbxY,EAAe8N,EAAM,QAASkJ,EAAyB,EAAGuB,EAAgBlX,EAAMyX,MAAO,KACvFV,EAAkBtK,EAAMpM,KAAMgX,GACvB5K,CACT,EAEI6K,EAAwBD,EAAcvX,UAAYsX,EAAmBtX,UAErE4X,EAAkB,UAAW,IAAIhB,EAAMS,GACvCQ,EAA0B,UAAW,IAAIP,EAAmB,EAAG,GAG/DpO,EAAaoO,GAAsBnZ,GAAeW,OAAO4B,yBAAyB0E,EAAYiS,GAI9FS,KAAqB5O,GAAgBA,EAAWnJ,UAAYmJ,EAAWtJ,cAEvEmY,EAAqBH,IAAoBE,IAAqBD,EAIlErW,EAAE,CAAE+S,QAAQ,EAAMzU,aAAa,EAAM4C,OAAQb,GAAWkW,GAAsB,CAC5EC,aAAcD,EAAqBR,EAAgBD,IAGrD,IAAIW,EAAyBnX,EAAWuW,GACpCa,EAAkCD,EAAuBjY,UAE7D,GAAIkY,EAAgCpY,cAAgBmY,EAKlD,IAAK,IAAIhP,KAJJpH,GACHhD,EAAeqZ,EAAiC,cAAerC,EAAyB,EAAGoC,IAG7Ed,EAAuB,GAAIjZ,EAAOiZ,EAAuBlO,GAAM,CAC7E,IAAIkP,EAAWhB,EAAsBlO,GACjCmP,EAAeD,EAASE,EACvBna,EAAO+Z,EAAwBG,IAClCvZ,EAAeoZ,EAAwBG,EAAcvC,EAAyB,EAAGsC,EAASG,GAE9F,CAIK,EAED,KACEvb,IAGRA,EAAOG,QAAU,CACfqb,eAAgB,CAAEF,EAAG,iBAAkBC,EAAG,EAAGE,EAAG,GAChDC,mBAAoB,CAAEJ,EAAG,qBAAsBC,EAAG,EAAGE,EAAG,GACxDE,sBAAuB,CAAEL,EAAG,wBAAyBC,EAAG,EAAGE,EAAG,GAC9DG,mBAAoB,CAAEN,EAAG,qBAAsBC,EAAG,EAAGE,EAAG,GACxDI,sBAAuB,CAAEP,EAAG,wBAAyBC,EAAG,EAAGE,EAAG,GAC9DK,mBAAoB,CAAER,EAAG,sBAAuBC,EAAG,EAAGE,EAAG,GACzDM,2BAA4B,CAAET,EAAG,8BAA+BC,EAAG,EAAGE,EAAG,GACzEO,cAAe,CAAEV,EAAG,gBAAiBC,EAAG,EAAGE,EAAG,GAC9CQ,kBAAmB,CAAEX,EAAG,oBAAqBC,EAAG,EAAGE,EAAG,GACtDS,oBAAqB,CAAEZ,EAAG,sBAAuBC,EAAG,GAAIE,EAAG,GAC3DU,kBAAmB,CAAEb,EAAG,oBAAqBC,EAAG,GAAIE,EAAG,GACvDnP,YAAa,CAAEgP,EAAG,aAAcC,EAAG,GAAIE,EAAG,GAC1CW,yBAA0B,CAAEd,EAAG,2BAA4BC,EAAG,GAAIE,EAAG,GACrEY,eAAgB,CAAEf,EAAG,gBAAiBC,EAAG,GAAIE,EAAG,GAChDa,mBAAoB,CAAEhB,EAAG,qBAAsBC,EAAG,GAAIE,EAAG,GACzDc,gBAAiB,CAAEjB,EAAG,iBAAkBC,EAAG,GAAIE,EAAG,GAClDe,kBAAmB,CAAElB,EAAG,oBAAqBC,EAAG,GAAIE,EAAG,GACvDgB,cAAe,CAAEnB,EAAG,eAAgBC,EAAG,GAAIE,EAAG,GAC9CiB,aAAc,CAAEpB,EAAG,cAAeC,EAAG,GAAIE,EAAG,GAC5CkB,WAAY,CAAErB,EAAG,YAAaC,EAAG,GAAIE,EAAG,GACxCmB,iBAAkB,CAAEtB,EAAG,mBAAoBC,EAAG,GAAIE,EAAG,GACrDoB,mBAAoB,CAAEvB,EAAG,qBAAsBC,EAAG,GAAIE,EAAG,GACzDqB,aAAc,CAAExB,EAAG,cAAeC,EAAG,GAAIE,EAAG,GAC5CsB,qBAAsB,CAAEzB,EAAG,wBAAyBC,EAAG,GAAIE,EAAG,GAC9DuB,eAAgB,CAAE1B,EAAG,iBAAkBC,EAAG,GAAIE,EAAG,GAI5C,EAED,KACA,CAAEjX,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBwY,EAAsB,EAAoB,MAC1C3R,EAAgC,EAAoB,MAOxD7G,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QANf,EAAoB,KAEnC4F,CAAuB,yBAA2BD,EAA8B,wBAIhC,CAC5D2R,oBAAqBA,GAIhB,EAED,KACA,CAAEjd,EAAQC,EAA0B,KAG1C,IAAI8D,EAAa,EAAoB,MACjC9C,EAAc,EAAoB,MAClCic,EAA4B,EAAoB,MAChDC,EAA8B,EAAoB,MAClD5c,EAAW,EAAoB,MAE/B6c,EAASnc,EAAY,GAAGmc,QAG5Bpd,EAAOG,QAAU4D,EAAW,UAAW,YAAc,SAAiB3D,GACpE,IAAImH,EAAO2V,EAA0BjS,EAAE1K,EAASH,IAC5CgU,EAAwB+I,EAA4BlS,EACxD,OAAOmJ,EAAwBgJ,EAAO7V,EAAM6M,EAAsBhU,IAAOmH,CAC3E,CAGO,EAED,KACA,CAAEvH,EAAQC,EAA0B,KAG1C,IAAIod,EAAa,EAAoB,MAEjC3c,EAAaC,UAEjBX,EAAOG,QAAU,SAAUC,GACzB,GAAIid,EAAWjd,GAAK,MAAM,IAAIM,EAAW,2BACzC,OAAON,CACT,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAIgS,EAAsB,EAAoB,MAC1CmB,EAAa,EAAoB,MAErCpT,EAAOG,QAAU8R,EAAoBmB,EAAW3N,MAAO,OAAQ,QAAU,SAAUyC,GACjF,OAAOA,EAAImL,IACb,CAGO,EAED,KACA,CAAErT,EAAQC,EAA0B,KAG1C,IAAImP,EAAoB,EAAoB,MAE5CpP,EAAOG,QAAU,SAAUmd,EAAaC,EAAMC,GAI5C,IAHA,IAAI7N,EAAQ,EACR3O,EAASD,UAAUC,OAAS,EAAIwc,EAAUpO,EAAkBmO,GAC5DnZ,EAAS,IAAIkZ,EAAYtc,GACtBA,EAAS2O,GAAOvL,EAAOuL,GAAS4N,EAAK5N,KAC5C,OAAOvL,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAI1C,IAAIwd,EAAgB,EAAoB,MACpCvL,EAAyB,EAAoB,MAEjDlS,EAAOG,QAAU,SAAUC,GACzB,OAAOqd,EAAcvL,EAAuB9R,GAC9C,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAIoU,EAAsB,EAAoB,MAE1CI,EAAMlO,KAAKkO,IACXjI,EAAMjG,KAAKiG,IAKfxM,EAAOG,QAAU,SAAUwP,EAAO3O,GAChC,IAAI0c,EAAUrJ,EAAoB1E,GAClC,OAAO+N,EAAU,EAAIjJ,EAAIiJ,EAAU1c,EAAQ,GAAKwL,EAAIkR,EAAS1c,EAC/D,CAGO,EAED,KACA,CAAEwD,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCpH,EAAc,EAAoB,MAClCgJ,EAAe,EAAoB,MACnC0T,EAAc,EAAoB,MAElCC,EAAiB3c,EAAY,IAAIsC,UAIjC8E,EAAW6B,YAAYzF,EAAE,CAAEe,OAAQ,aAAcC,OAAO,GAAQ,CAClEoY,MAAO,WACL5T,EAAazG,MACbma,EAAYna,KAAKmG,QAEjB,IADA,IAAIvF,EAAS,GACJmF,EAAI,EAAGvI,EAASwC,KAAKxC,OAAQuI,EAAIvI,EAAQuI,IAAK,CACrD,IAAIuU,EAAMF,EAAepa,KAAK+F,GAAI,IAClCnF,GAAyB,IAAf0Z,EAAI9c,OAAe,IAAM8c,EAAMA,CAC3C,CACA,OAAO1Z,CACT,GAIK,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCpH,EAAc,EAAoB,MAClCgR,EAAsB,EAAoB,MAC1C8L,EAAU,EAAoB,MAC9BJ,EAAc,EAAoB,MAClC7K,EAAwB,EAAoB,MAC5CkL,EAAqB,EAAoB,MACzC3H,EAAmC,EAAoB,MAEvD3M,EAAkBrB,EAAWqB,gBAC7BE,EAAcvB,EAAWuB,YACzBmJ,EAAW1K,EAAW0K,SACtBvG,EAAMjG,KAAKiG,IACXyR,EAAuBrU,EAAY3G,UACnCib,EAAoBnL,EAAS9P,UAC7BhB,EAAQhB,EAAYgd,EAAqBhc,OACzCkc,EAAclM,EAAoBgM,EAAsB,YAAa,OACrEG,EAAgBnM,EAAoBgM,EAAsB,gBAAiB,OAC3EI,EAAUpd,EAAYid,EAAkBG,SACxCC,EAAUrd,EAAYid,EAAkBI,SAE5Cte,EAAOG,SAAWkW,GAAoC2H,IAAuB,SAAUO,EAAaC,EAAWC,GAC7G,IAGIC,EAHA3U,EAAa+I,EAAsByL,GACnCI,OAA8Bzb,IAAdsb,EAA0BzU,EAAagU,EAAQS,GAC/DI,GAAeT,IAAgBA,EAAYI,GAG/C,GADAZ,EAAYY,GACRlI,IACFkI,EAAc7U,EAAgB6U,EAAa,CAAEzU,SAAU,CAACyU,KACpDxU,IAAe4U,IAAkBF,GAAwBG,IAAc,OAAOL,EAEpF,GAAIxU,GAAc4U,KAAmBF,GAAwBG,GAC3DF,EAAYzc,EAAMsc,EAAa,EAAGI,OAC7B,CACL,IAAIjc,EAAU+b,IAAyBG,GAAeR,EAAgB,CAAEA,cAAeA,EAAcG,SAAiBrb,EACtHwb,EAAY,IAAI9U,EAAY+U,EAAejc,GAI3C,IAHA,IAAImc,EAAI,IAAI9L,EAASwL,GACjBO,EAAI,IAAI/L,EAAS2L,GACjBK,EAAavS,EAAImS,EAAe5U,GAC3BR,EAAI,EAAGA,EAAIwV,EAAYxV,IAAK+U,EAAQQ,EAAGvV,EAAG8U,EAAQQ,EAAGtV,GAChE,CAEA,OADK8M,GAAkC2H,EAAmBO,GACnDG,CACT,CAGO,EAED,KACA,CAAE1e,EAAQC,EAA0B,KAG1C,IAAI4I,EAAQ,EAAoB,MAEhC7I,EAAOG,QAAU,SAAU+L,EAAK7J,GAC9B,OAAOwG,EAAMqD,KAASrD,EAAMqD,GAAO7J,GAAS,CAAC,EAC/C,CAGO,EAED,KACA,CAAEmC,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBV,EAAa,EAAoB,MACjC2T,EAA0B,EAAoB,MAC9CnU,EAAW,EAAoB,KAC/Byb,EAAiB,EAAoB,MAErCC,EAAMlb,EAAW,OAIrBU,EAAE,CAAEe,OAAQ,MAAOqF,MAAM,EAAMlF,QAASqZ,GAAkB,CACxDE,MAAO,SAAeC,GACpB,IAAIne,EAAS0W,EAAwB3W,UAAUC,OAAQ,GACnDoe,EAAY7b,EAAS4b,GACrBE,EAAOre,EAAS,QAAsBkC,IAAjBnC,UAAU,QAAmBmC,EAAYK,EAASxC,UAAU,IACrF,IACE,OAAO,IAAIke,EAAIG,EAAWC,EAC5B,CAAE,MAAOlc,GACP,OAAO,IACT,CACF,GAIK,EAED,KACA,CAAEqB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB6a,EAAa,EAAoB,MASrC7a,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QARf,EAAoB,KAEhC4F,CAAuB,cAAc,SAAUnH,GAC9D,OAAOA,CACT,KAIiE,CAC/Dkb,WAAYA,GAIP,EAED,KACA,CAAEtf,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClCF,EAAQ,EAAoB,MAC5B4T,EAAgB,EAAoB,MAGxC9U,EAAOG,SAAWiB,IAAgBF,GAAM,WAEtC,OAES,IAFFa,OAAOD,eAAegT,EAAc,OAAQ,IAAK,CACtDnT,IAAK,WAAc,OAAO,CAAG,IAC5Bkd,CACL,GAGO,EAED,KACA,CAAE7e,EAAQC,EAA0B,KAG1C,IAAIK,EAAY,EAAoB,MAChC0G,EAAoB,EAAoB,MAI5ChH,EAAOG,QAAU,SAAUof,EAAG/F,GAC5B,IAAIgG,EAAOD,EAAE/F,GACb,OAAOxS,EAAkBwY,QAAQtc,EAAY5C,EAAUkf,EACzD,CAGO,EAED,KACA,CAAExf,EAAQC,EAA0B,KAG1C,IAAIK,EAAY,EAAoB,MAEhCI,EAAaC,UAEb8e,EAAoB,SAAUC,GAChC,IAAIvU,EAASD,EACb1H,KAAK4H,QAAU,IAAIsU,GAAE,SAAUC,EAAWC,GACxC,QAAgB1c,IAAZiI,QAAoCjI,IAAXgI,EAAsB,MAAM,IAAIxK,EAAW,2BACxEyK,EAAUwU,EACVzU,EAAS0U,CACX,IACApc,KAAK2H,QAAU7K,EAAU6K,GACzB3H,KAAK0H,OAAS5K,EAAU4K,EAC1B,EAIAlL,EAAOG,QAAQ8K,EAAI,SAAUyU,GAC3B,OAAO,IAAID,EAAkBC,EAC/B,CAGO,EAED,KACA,CAAE1f,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCX,EAAY,EAAoB,MAChCuf,EAAc,EAAoB,KAElC/Z,EAAO7E,EAAYA,EAAY6E,MAGnC9F,EAAOG,QAAU,SAAU8D,EAAI2L,GAE7B,OADAtP,EAAU2D,QACMf,IAAT0M,EAAqB3L,EAAK4b,EAAc/Z,EAAK7B,EAAI2L,GAAQ,WAC9D,OAAO3L,EAAGuG,MAAMoF,EAAM7O,UACxB,CACF,CAGO,EAED,KACA,CAAEf,EAAQC,EAA0B,KAG1C,IAAIuI,EAAS,EAAoB,MAC7BsX,EAAM,EAAoB,MAE1BvY,EAAOiB,EAAO,QAElBxI,EAAOG,QAAU,SAAU+L,GACzB,OAAO3E,EAAK2E,KAAS3E,EAAK2E,GAAO4T,EAAI5T,GACvC,CAGO,EAED,KACA,CAAElM,EAAQC,EAA0B,KAG1C,IAAIwJ,EAAc,EAAoB,MAEtCzJ,EAAOG,QAA0B,SAAhBsJ,CAGV,EAED,KACA,CAAEzJ,EAAQC,EAA0B,KAG1C,IAAI8f,EAAW,EAAoB,MAInC/f,EAAOG,QAAU,SAAUyL,GACzB,OAAOmU,EAASnU,EAAI5K,OACtB,CAGO,EAED,KACEhB,IAGRA,EAAOG,QAAU,CAAC,CAGX,EAED,KACA,CAAEH,EAAQC,EAA0B,KAG1C,IAAIwX,EAAgB,EAAoB,MAExCzX,EAAOG,QAAU,SAAUqF,EAAQiJ,EAAK/L,GACtC,IAAK,IAAIwJ,KAAOuC,EAAKgJ,EAAcjS,EAAQ0G,EAAKuC,EAAIvC,GAAMxJ,GAC1D,OAAO8C,CACT,CAGO,EAED,KACA,CAAExF,EAAQC,EAA0B,KAG1C,IAAIM,EAAW,EAAoB,MAC/BsE,EAAgB,EAAoB,MAGxC7E,EAAOG,QAAU,SAAUkE,EAAUJ,EAAI5B,EAAO2d,GAC9C,IACE,OAAOA,EAAU/b,EAAG1D,EAAS8B,GAAO,GAAIA,EAAM,IAAM4B,EAAG5B,EACzD,CAAE,MAAOc,GACP0B,EAAcR,EAAU,QAASlB,EACnC,CACF,CAGO,EAED,KACEnD,IAGRA,EAAOG,SAAU,CAGV,EAED,KACA,CAAEH,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjC1E,EAA4B,EAAoB,MAAO,EACvD4E,EAA8B,EAAoB,MAClDkP,EAAgB,EAAoB,MACpCwI,EAAuB,EAAoB,MAC3CC,EAA4B,EAAoB,MAChDvP,EAAW,EAAoB,MAiBnC3Q,EAAOG,QAAU,SAAUuC,EAASW,GAClC,IAGYmC,EAAQ0G,EAAKiU,EAAgBC,EAAgBjU,EAHrDkU,EAAS3d,EAAQ8C,OACjB8a,EAAS5d,EAAQ8U,OACjB+I,EAAS7d,EAAQmI,KASrB,GANErF,EADE8a,EACOjY,EACAkY,EACAlY,EAAWgY,IAAWJ,EAAqBI,EAAQ,CAAC,GAEpDhY,EAAWgY,IAAWhY,EAAWgY,GAAQpd,UAExC,IAAKiJ,KAAO7I,EAAQ,CAQ9B,GAPA+c,EAAiB/c,EAAO6I,GAGtBiU,EAFEzd,EAAQ8d,gBACVrU,EAAaxI,EAAyB6B,EAAQ0G,KACfC,EAAW9J,MACpBmD,EAAO0G,IACtByE,EAAS2P,EAASpU,EAAMmU,GAAUE,EAAS,IAAM,KAAOrU,EAAKxJ,EAAQiD,cAE5CzC,IAAnBid,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDD,EAA0BE,EAAgBD,EAC5C,EAEIzd,EAAQsU,MAASmJ,GAAkBA,EAAenJ,OACpDzO,EAA4B6X,EAAgB,QAAQ,GAEtD3I,EAAcjS,EAAQ0G,EAAKkU,EAAgB1d,EAC7C,CACF,CAGO,EAED,KACA,CAAE8B,EAAyBvE,EAA0B,KAG3D,IAAImB,EAAc,EAAoB,MAClCqf,EAAwB,EAAoB,MAC5CpD,EAAa,EAAoB,MAEjCY,EAAuBrU,YAAY3G,UAInC7B,KAAiB,aAAc6c,IACjCwC,EAAsBxC,EAAsB,WAAY,CACtDpb,cAAc,EACdlB,IAAK,WACH,OAAO0b,EAAW7Z,KACpB,GAKG,EAED,KACA,CAAExD,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClCyX,EAAuB,EAAoB,MAC3CC,EAA2B,EAAoB,MAEnD9Y,EAAOG,QAAUiB,EAAc,SAAU4K,EAAQE,EAAK7J,GACpD,OAAOwW,EAAqB5N,EAAEe,EAAQE,EAAK4M,EAAyB,EAAGzW,GACzE,EAAI,SAAU2J,EAAQE,EAAK7J,GAEzB,OADA2J,EAAOE,GAAO7J,EACP2J,CACT,CAGO,EAED,KACA,CAAEhM,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCX,EAAY,EAAoB,MAEpCN,EAAOG,QAAU,SAAU6L,EAAQE,EAAK9F,GACtC,IAEE,OAAOnF,EAAYX,EAAUyB,OAAO4B,yBAAyBqI,EAAQE,GAAK9F,IAC5E,CAAE,MAAOjD,GAAqB,CAChC,CAGO,EAED,KACA,CAAEqB,EAAyBrE,EAAS,KAG1C,IAAIiB,EAAc,EAAoB,MAClC8X,EAA0B,EAAoB,MAC9CL,EAAuB,EAAoB,MAC3CtY,EAAW,EAAoB,MAC/BsL,EAAkB,EAAoB,MACtC6U,EAAa,EAAoB,MAKrCvgB,EAAQ8K,EAAI7J,IAAgB8X,EAA0BnX,OAAO4e,iBAAmB,SAA0BnZ,EAAGqH,GAC3GtO,EAASiH,GAMT,IALA,IAII0E,EAJA0U,EAAQ/U,EAAgBgD,GACxBtH,EAAOmZ,EAAW7R,GAClB7N,EAASuG,EAAKvG,OACd2O,EAAQ,EAEL3O,EAAS2O,GAAOkJ,EAAqB5N,EAAEzD,EAAG0E,EAAM3E,EAAKoI,KAAUiR,EAAM1U,IAC5E,OAAO1E,CACT,CAGO,EAED,KACExH,IAGR,IAAI4B,EAAUC,OAEd7B,EAAOG,QAAU,SAAUS,GACzB,IACE,OAAOgB,EAAQhB,EACjB,CAAE,MAAOuC,GACP,MAAO,QACT,CACF,CAGO,EAED,KACEnD,IAGR,IAAIU,EAAaC,UAGjBX,EAAOG,QAAU,SAAUC,GACzB,GAAIA,EAHiB,iBAGM,MAAMM,EAAW,kCAC5C,OAAON,CACT,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAIC,EAAa,EAAoB,MACjC2Y,EAAuB,EAAoB,MAC3CrW,EAAc,EAAoB,KAClCyd,EAAuB,EAAoB,MAE/CjgB,EAAOG,QAAU,SAAUqH,EAAG0E,EAAK7J,EAAOK,GACnCA,IAASA,EAAU,CAAC,GACzB,IAAIme,EAASne,EAAQgW,WACjBjW,OAAwBS,IAAjBR,EAAQD,KAAqBC,EAAQD,KAAOyJ,EAEvD,GADIhM,EAAWmC,IAAQG,EAAYH,EAAOI,EAAMC,GAC5CA,EAAQ8U,OACNqJ,EAAQrZ,EAAE0E,GAAO7J,EAChB4d,EAAqB/T,EAAK7J,OAC1B,CACL,IACOK,EAAQiW,OACJnR,EAAE0E,KAAM2U,GAAS,UADErZ,EAAE0E,EAEhC,CAAE,MAAO/I,GAAqB,CAC1B0d,EAAQrZ,EAAE0E,GAAO7J,EAChBwW,EAAqB5N,EAAEzD,EAAG0E,EAAK,CAClC7J,MAAOA,EACPqW,YAAY,EACZ7V,cAAeH,EAAQoe,gBACvB9d,UAAWN,EAAQqe,aAEvB,CAAE,OAAOvZ,CACX,CAGO,EAED,KACA,CAAExH,EAAQC,EAA0B,KAG1C,IAAI+gB,EAAwB,EAAoB,MAC5C9gB,EAAa,EAAoB,MACjC+gB,EAAa,EAAoB,MAGjCC,EAFkB,EAAoB,KAEtB/Z,CAAgB,eAChCN,EAAU9E,OAGVof,EAAwE,cAApDF,EAAW,WAAc,OAAOlgB,SAAW,CAAhC,IAUnCf,EAAOG,QAAU6gB,EAAwBC,EAAa,SAAU7gB,GAC9D,IAAIoH,EAAG4Z,EAAKhd,EACZ,YAAclB,IAAP9C,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDghB,EAXD,SAAUhhB,EAAI8L,GACzB,IACE,OAAO9L,EAAG8L,EACZ,CAAE,MAAO/I,GAAqB,CAChC,CAOoBke,CAAO7Z,EAAIX,EAAQzG,GAAK8gB,IAA8BE,EAEpED,EAAoBF,EAAWzZ,GAEF,YAA5BpD,EAAS6c,EAAWzZ,KAAoBtH,EAAWsH,EAAE8Z,QAAU,YAAcld,CACpF,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIshB,EAAc,EAAoB,MAClCtR,EAAW,EAAoB,KAInCjQ,EAAOG,QAAU,SAAUS,GACzB,IAAIsL,EAAMqV,EAAY3gB,EAAU,UAChC,OAAOqP,EAAS/D,GAAOA,EAAMA,EAAM,EACrC,CAGO,EAED,KACElM,IAGRA,EAAOG,QAAU,SAAUqhB,EAAQnf,GACjC,MAAO,CACLqW,aAAuB,EAAT8I,GACd3e,eAAyB,EAAT2e,GAChBxe,WAAqB,EAATwe,GACZnf,MAAOA,EAEX,CAGO,EAED,KACA,CAAErC,EAAQC,EAA0B,KAI1C,IAAIwhB,EAAgB,EAAoB,MAExCzhB,EAAOG,QAAUshB,IACd1K,OAAOC,MACkB,iBAAnBD,OAAO1S,QAGT,EAED,KACA,CAAErE,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCC,EAAQ,EAAoB,MAC5B8E,EAAU,EAAoB,MAE9Ba,EAAU9E,OACVQ,EAAQtB,EAAY,GAAGsB,OAG3BvC,EAAOG,QAAUe,GAAM,WAGrB,OAAQ2F,EAAQ,KAAK6a,qBAAqB,EAC5C,IAAK,SAAUthB,GACb,MAAuB,WAAhB4F,EAAQ5F,GAAmBmC,EAAMnC,EAAI,IAAMyG,EAAQzG,EAC5D,EAAIyG,CAGG,EAED,KACA,CAAE7G,EAAQC,EAA0B,KAG1C,IAAIkI,EAAO,EAAoB,MAAS,IAGxCnI,EAAOG,QAAU,SAAUC,GAEzB,OADA+H,EAAI/H,GACGA,CACT,CAGO,EAED,KACA,CAAEoE,EAAyBrE,EAAS,KAG1C,IAAIiB,EAAc,EAAoB,MAClCf,EAAO,EAAoB,MAC3BshB,EAA6B,EAAoB,MACjD7I,EAA2B,EAAoB,MAC/CjN,EAAkB,EAAoB,MACtCsN,EAAgB,EAAoB,MACpChY,EAAS,EAAoB,MAC7B8X,EAAiB,EAAoB,MAGrCI,EAA4BtX,OAAO4B,yBAIvCxD,EAAQ8K,EAAI7J,EAAciY,EAA4B,SAAkC7R,EAAGgS,GAGzF,GAFAhS,EAAIqE,EAAgBrE,GACpBgS,EAAIL,EAAcK,GACdP,EAAgB,IAClB,OAAOI,EAA0B7R,EAAGgS,EACtC,CAAE,MAAOrW,GAAqB,CAC9B,GAAIhC,EAAOqG,EAAGgS,GAAI,OAAOV,GAA0BzY,EAAKshB,EAA2B1W,EAAGzD,EAAGgS,GAAIhS,EAAEgS,GACjG,CAGO,EAED,KACA,CAAExZ,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjC4J,EAAsB,EAAoB,MAC1CjM,EAAU,EAAoB,MAE9B4D,EAAcvB,EAAWuB,YACzBjJ,EAAY0H,EAAW1H,UAK3BX,EAAOG,QAAUyJ,GAAeqI,EAAoBrI,EAAY3G,UAAW,aAAc,QAAU,SAAUuE,GAC3G,GAAmB,gBAAfxB,EAAQwB,GAAsB,MAAM,IAAI7G,EAAU,wBACtD,OAAO6G,EAAEuC,UACX,CAGO,EAED,KACA,CAAE/J,EAAQC,EAA0B,KAG1C,IAAIiB,EAAQ,EAAoB,MAC5BiG,EAAkB,EAAoB,MACtC/F,EAAc,EAAoB,MAClC0D,EAAU,EAAoB,MAE9BoC,EAAWC,EAAgB,YAE/BnH,EAAOG,SAAWe,GAAM,WAEtB,IAAIie,EAAM,IAAIF,IAAI,gBAAiB,aAC/BhH,EAASkH,EAAIyC,aACbC,EAAU,IAAIjK,gBAAgB,eAC9BxT,EAAS,GAUb,OATA+a,EAAI2C,SAAW,QACf7J,EAAOD,SAAQ,SAAU3V,EAAO6J,GAC9B+L,EAAe,OAAE,KACjB7T,GAAU8H,EAAM7J,CAClB,IACAwf,EAAgB,OAAE,IAAK,GAGvBA,EAAgB,OAAE,SAAK3e,GACf4B,KAAaqa,EAAI4C,SAAWF,EAAQ1Z,IAAI,IAAK,IAAM0Z,EAAQ1Z,IAAI,IAAK,KAAO0Z,EAAQ1Z,IAAI,SAAKjF,IAAc2e,EAAQ1Z,IAAI,QACvH8P,EAAO5E,OAASvO,IAAY1D,KAC7B6W,EAAO+J,MACK,4BAAb7C,EAAI8C,MACgB,MAApBhK,EAAOtW,IAAI,MAC6B,QAAxCE,OAAO,IAAI+V,gBAAgB,WAC1BK,EAAO/Q,IAE4B,MAApC,IAAI+X,IAAI,eAAeiD,UACsC,MAA7D,IAAItK,gBAAgB,IAAIA,gBAAgB,QAAQjW,IAAI,MAEnB,eAAjC,IAAIsd,IAAI,gBAAgBkD,MAEQ,YAAhC,IAAIlD,IAAI,eAAemD,MAEZ,SAAXhe,GAEyC,MAAzC,IAAI6a,IAAI,iBAAa/b,GAAWif,IACvC,GAGO,EAED,KACA,CAAEniB,EAAQC,EAA0B,KAG1C,IAAIghB,EAAa,EAAoB,MACjChgB,EAAc,EAAoB,MAEtCjB,EAAOG,QAAU,SAAU8D,GAIzB,GAAuB,aAAnBgd,EAAWhd,GAAoB,OAAOhD,EAAYgD,EACxD,CAGO,EAED,KACA,CAAEO,EAAyBvE,EAA0B,KAG3D,IAAIwX,EAAgB,EAAoB,MACpCxW,EAAc,EAAoB,MAClCsC,EAAW,EAAoB,KAC/BmU,EAA0B,EAAoB,MAE9CC,EAAmBC,gBACnBC,EAA2BF,EAAiB1U,UAC5Cof,EAASphB,EAAY4W,EAAyBwK,QAC9CC,EAAOrhB,EAAY4W,EAAyB1P,KAC5C8P,EAAS,IAAIN,EAAiB,QAI9BM,EAAO9P,IAAI,IAAK,IAAO8P,EAAO9P,IAAI,SAAKjF,IACzCuU,EAAcI,EAA0B,OAAO,SAAapV,GAC1D,IAAIzB,EAASD,UAAUC,OACnBkX,EAASlX,EAAS,OAAIkC,EAAYnC,UAAU,GAChD,GAAIC,QAAqBkC,IAAXgV,EAAsB,OAAOoK,EAAK9e,KAAMf,GACtD,IAAI8f,EAASF,EAAO7e,KAAMf,GAC1BiV,EAAwB1W,EAAQ,GAGhC,IAFA,IAAIqB,EAAQkB,EAAS2U,GACjBvI,EAAQ,EACLA,EAAQ4S,EAAOvhB,QACpB,GAAIuhB,EAAO5S,OAAatN,EAAO,OAAO,EACtC,OAAO,CACX,GAAG,CAAEqW,YAAY,EAAMC,QAAQ,GAI1B,EAED,KACA,CAAE3Y,EAAQC,EAA0B,KAG1C,IAAI6E,EAAU,EAAoB,MAC9BuD,EAAa,EAAoB,MACjC4X,EAAuB,EAAoB,MAE3CuC,EAAS,qBACT3Z,EAAQ7I,EAAOG,QAAUkI,EAAWma,IAAWvC,EAAqBuC,EAAQ,CAAC,IAEhF3Z,EAAM4Z,WAAa5Z,EAAM4Z,SAAW,KAAK1W,KAAK,CAC7CyJ,QAAS,SACTkN,KAAM5d,EAAU,OAAS,SACzB6d,UAAW,4CACXC,QAAS,2DACTvf,OAAQ,uCAIH,EAED,KACA,CAAEmB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBoe,EAAa,EAAoB,MACjC3hB,EAAQ,EAAoB,MA+BhCuD,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QA9Bf,EAAoB,KAEd4F,CAAuB,cAAc,SAAUnH,GAChF,OAAuB,IAAhBA,EAAOiP,IAChB,KAE4CnS,GAAM,WAEhD,IAAI4hB,EAAU,CACZzP,KAAM,EACNlL,IAAK,WAAc,OAAO,CAAM,EAChCZ,KAAM,WACJ,IAAIoI,EAAQ,EACZ,MAAO,CACLrL,KAAM,WACJ,IAAIC,EAAOoL,IAAU,EAErB,OADIoT,EAAQ5a,IAAI,IAAI4a,EAAQC,QACrB,CAAEze,KAAMA,EAAMlC,MAAO,EAC9B,EAEJ,GAGE0gB,EAAU,IAAI/M,IAAI,CAAC,EAAG,EAAG,EAAG,IAEhC,OAA4C,IAArC+M,EAAQF,WAAWC,GAASzP,IACrC,KAI8D,CAC5DwP,WAAYA,GAIP,EAED,KACA,CAAE7iB,EAAQC,EAA0B,KAG1C,IAcImX,EAAmB6L,EAAmCC,EAdtDhiB,EAAQ,EAAoB,MAC5BhB,EAAa,EAAoB,MACjCoI,EAAW,EAAoB,IAC/BsG,EAAS,EAAoB,MAC7BvC,EAAiB,EAAoB,MACrCoL,EAAgB,EAAoB,MACpCtQ,EAAkB,EAAoB,MACtCrC,EAAU,EAAoB,MAE9BoC,EAAWC,EAAgB,YAC3Bgc,GAAyB,EAOzB,GAAG5b,OAGC,SAFN2b,EAAgB,GAAG3b,SAIjB0b,EAAoC5W,EAAeA,EAAe6W,OACxBnhB,OAAOkB,YAAWmU,EAAoB6L,GAHlDE,GAAyB,IAO7B7a,EAAS8O,IAAsBlW,GAAM,WACjE,IAAI2E,EAAO,CAAC,EAEZ,OAAOuR,EAAkBlQ,GAAU7G,KAAKwF,KAAUA,CACpD,IAE4BuR,EAAoB,CAAC,EACxCtS,IAASsS,EAAoBxI,EAAOwI,IAIxClX,EAAWkX,EAAkBlQ,KAChCuQ,EAAcL,EAAmBlQ,GAAU,WACzC,OAAO1D,IACT,IAGFxD,EAAOG,QAAU,CACfiX,kBAAmBA,EACnB+L,uBAAwBA,EAInB,EAED,KACA,CAAEnjB,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAEtCjB,EAAOG,QAAUc,EAAY,GAAGgB,MAGzB,EAED,KACA,CAAEjC,EAAQC,EAA0B,KAG1C,IAAIoU,EAAsB,EAAoB,MAC1C0L,EAAW,EAAoB,MAE/BxL,EAAcC,WAIlBxU,EAAOG,QAAU,SAAUC,GACzB,QAAW8C,IAAP9C,EAAkB,OAAO,EAC7B,IAAIgJ,EAASiL,EAAoBjU,GAC7BY,EAAS+e,EAAS3W,GACtB,GAAIA,IAAWpI,EAAQ,MAAM,IAAIuT,EAAY,yBAC7C,OAAOvT,CACT,CAGO,EAED,KACA,CAAEhB,EAAQC,EAA0B,KAG1C,IAAIkB,EAAS,EAAoB,MAC7BiiB,EAAU,EAAoB,MAC9BC,EAAiC,EAAoB,MACrDxK,EAAuB,EAAoB,MAE/C7Y,EAAOG,QAAU,SAAUqF,EAAQnC,EAAQigB,GAIzC,IAHA,IAAI/b,EAAO6b,EAAQ/f,GACfvB,EAAiB+W,EAAqB5N,EACtCtH,EAA2B0f,EAA+BpY,EACrD1B,EAAI,EAAGA,EAAIhC,EAAKvG,OAAQuI,IAAK,CACpC,IAAI2C,EAAM3E,EAAKgC,GACVpI,EAAOqE,EAAQ0G,IAAUoX,GAAcniB,EAAOmiB,EAAYpX,IAC7DpK,EAAe0D,EAAQ0G,EAAKvI,EAAyBN,EAAQ6I,GAEjE,CACF,CAGO,EAED,KACA,CAAElM,EAAQC,EAA0B,KAG1C,IAAI+G,EAAoB,EAAoB,MAExCtG,EAAaC,UAIjBX,EAAOG,QAAU,SAAUC,GACzB,GAAI4G,EAAkB5G,GAAK,MAAM,IAAIM,EAAW,wBAA0BN,GAC1E,OAAOA,CACT,CAGO,EAED,KACA,CAAEJ,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCnI,EAAa,EAAoB,MAMrCF,EAAOG,QAAU,SAAUojB,EAAWnd,GACpC,OAAOrF,UAAUC,OAAS,GALFJ,EAKgByH,EAAWkb,GAJ5CrjB,EAAWU,GAAYA,OAAWsC,GAIwBmF,EAAWkb,IAAclb,EAAWkb,GAAWnd,GALlG,IAAUxF,CAM1B,CAGO,EAED,KACEZ,IAIRA,EAAOG,QAAgC,oBAAfyJ,aAAiD,oBAAZmJ,QAGtD,EAED,KACA,CAAEvO,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB+e,EAAY,EAAoB,MAIhCA,GAAW/e,EAAE,CAAEe,OAAQ,cAAeC,OAAO,GAAQ,CACvDge,sBAAuB,WACrB,OAAOD,EAAUhgB,KAAMzC,UAAUC,OAASD,UAAU,QAAKmC,GAAW,EACtE,GAIK,EAED,KACA,CAAEsB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBvD,EAAQ,EAAoB,MAC5BwiB,EAAe,EAAoB,MAYvCjf,EAAE,CAAEe,OAAQ,MAAOC,OAAO,EAAMC,MAAM,EAAMC,QAXf,EAAoB,KAEhC4F,CAAuB,gBAAgB,SAAUnH,GAChE,OAAuB,IAAhBA,EAAOiP,MAAcjP,EAAO+D,IAAI,IAAM/D,EAAO+D,IAAI,EAC1D,KAAMjH,GAAM,WAEV,MAAgF,QAAzEW,OAAOyQ,MAAMqR,KAAK,IAAI3N,IAAI,CAAC,EAAG,EAAG,IAAI0N,aAAa,IAAI1N,IAAI,CAAC,EAAG,MACvE,KAIiE,CAC/D0N,aAAcA,GAIT,EAED,KACA,CAAE1jB,EAAQC,EAA0B,KAG1C,IAAIoU,EAAsB,EAAoB,MAE1C7H,EAAMjG,KAAKiG,IAIfxM,EAAOG,QAAU,SAAUS,GACzB,IAAIuU,EAAMd,EAAoBzT,GAC9B,OAAOuU,EAAM,EAAI3I,EAAI2I,EAAK,kBAAoB,CAChD,CAGO,EAED,KACA,CAAE3Q,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB+e,EAAY,EAAoB,MAIhCA,GAAW/e,EAAE,CAAEe,OAAQ,cAAeC,OAAO,GAAQ,CACvDqE,SAAU,WACR,OAAO0Z,EAAUhgB,KAAMzC,UAAUC,OAASD,UAAU,QAAKmC,GAAW,EACtE,GAIK,EAED,KACA,CAAEsB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjC4R,EAAa,EAAoB,KACjC1Z,EAAW,EAAoB,MAC/BL,EAAa,EAAoB,MACjCmM,EAAiB,EAAoB,MACrCoU,EAAwB,EAAoB,MAC5CmD,EAAiB,EAAoB,MACrC1iB,EAAQ,EAAoB,MAC5BC,EAAS,EAAoB,MAC7BgG,EAAkB,EAAoB,MACtCiQ,EAAqB,EAAoB,MAAuB,kBAChEhW,EAAc,EAAoB,MAClC0D,EAAU,EAAoB,MAE9B+e,EAAc,cACd3c,EAAW,WACXga,EAAgB/Z,EAAgB,eAEhCzG,EAAaC,UACbmjB,EAAiBzb,EAAWnB,GAG5B/B,EAASL,IACP5E,EAAW4jB,IACZA,EAAe7gB,YAAcmU,IAE5BlW,GAAM,WAAc4iB,EAAe,CAAC,EAAI,IAE1CC,EAAsB,WAExB,GADA9J,EAAWzW,KAAM4T,GACb/K,EAAe7I,QAAU4T,EAAmB,MAAM,IAAI1W,EAAW,qDACvE,EAEIsjB,EAAkC,SAAU9X,EAAK7J,GAC/CjB,EACFqf,EAAsBrJ,EAAmBlL,EAAK,CAC5CrJ,cAAc,EACdlB,IAAK,WACH,OAAOU,CACT,EACA6F,IAAK,SAAUwI,GAEb,GADAnQ,EAASiD,MACLA,OAAS4T,EAAmB,MAAM,IAAI1W,EAAW,oCACjDS,EAAOqC,KAAM0I,GAAM1I,KAAK0I,GAAOwE,EAC9BkT,EAAepgB,KAAM0I,EAAKwE,EACjC,IAEG0G,EAAkBlL,GAAO7J,CAClC,EAEKlB,EAAOiW,EAAmB8J,IAAgB8C,EAAgC9C,EAAeha,IAE1F/B,GAAWhE,EAAOiW,EAAmByM,IAAgBzM,EAAkByM,KAAiB9hB,QAC1FiiB,EAAgCH,EAAaE,GAG/CA,EAAoB9gB,UAAYmU,EAIhC3S,EAAE,CAAE+S,QAAQ,EAAMzU,aAAa,EAAM4C,OAAQR,GAAU,CACrDkB,SAAU0d,GAIL,EAED,KACA,CAAE/jB,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCG,EAAS,EAAoB,MAC7BrH,EAAS,EAAoB,MAC7B2e,EAAM,EAAoB,MAC1B2B,EAAgB,EAAoB,MACpC7a,EAAoB,EAAoB,MAExCmQ,EAAS1O,EAAW0O,OACpBkN,EAAwBzb,EAAO,OAC/B0b,EAAwBtd,EAAoBmQ,EAAY,KAAKA,EAASA,GAAUA,EAAOoN,eAAiBrE,EAE5G9f,EAAOG,QAAU,SAAUsC,GAKvB,OAJGtB,EAAO8iB,EAAuBxhB,KACjCwhB,EAAsBxhB,GAAQgf,GAAiBtgB,EAAO4V,EAAQtU,GAC1DsU,EAAOtU,GACPyhB,EAAsB,UAAYzhB,IAC/BwhB,EAAsBxhB,EACjC,CAGO,EAED,KACA,CAAEzC,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCE,EAAS,EAAoB,MAE7BijB,EAAe9X,YACf+X,EAAY9X,SACZ+X,EAAeziB,OAAOyiB,aACtBC,EAAKtjB,EAAY,GAAGuQ,QACpBvP,EAAQhB,EAAY,GAAGgB,OACvBwF,EAAOxG,EAAY,IAAIwG,MAEvB+c,EAAa,CACf,MAAO,IACP,OAAQ,KACR,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,MAGLC,EAAkB,gBAElBC,EAAqB,oBAEzB1kB,EAAOG,QAAU,SAAUkD,EAAQkG,GAGjC,IAFA,IAAIob,GAAe,EACftiB,EAAQ,GACLkH,EAAIlG,EAAOrC,QAAQ,CACxB,IAAI4jB,EAAML,EAAGlhB,EAAQkG,GACrB,GAAY,OAARqb,EAAc,CAChB,IAAIC,EAAW5iB,EAAMoB,EAAQkG,EAAGA,EAAI,GACpC,GAAIpI,EAAOqjB,EAAYK,GACrBxiB,GAASmiB,EAAWK,GACpBtb,GAAK,MACA,IAAiB,QAAbsb,EAMJ,MAAM,IAAIT,EAAa,6BAA+BS,EAAW,KAJtE,IAAIC,EAAgB7iB,EAAMoB,EAD1BkG,GAAK,EACgCA,EAAI,GACzC,IAAK9B,EAAKgd,EAAiBK,GAAgB,MAAM,IAAIV,EAAa,0BAA4B7a,GAC9FlH,GAASiiB,EAAaD,EAAUS,EAAe,KAC/Cvb,GAAK,CACqE,CAC9E,KAAO,IAAY,MAARqb,EAAa,CACtBD,GAAe,EACfpb,IACA,KACF,CACE,GAAI9B,EAAKid,EAAoBE,GAAM,MAAM,IAAIR,EAAa,+CAAiD7a,GAC3GlH,GAASuiB,EACTrb,GACF,CACF,CACA,GAAIob,EAAc,MAAM,IAAIP,EAAa,2BAA6B7a,GACtE,MAAO,CAAElH,MAAOA,EAAO0iB,IAAKxb,EAC9B,CAGO,EAED,KACA,CAAE/E,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBiD,EAAU,EAAoB,MAC9BpH,EAAY,EAAoB,MAChCC,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCG,EAAgB,EAAoB,MACpCG,EAA2C,EAAoB,MAC/DwF,EAAQ,EAAoB,MAC5BtJ,EAAQ,EAAoB,MAE5BR,EAAaC,UAGbqkB,EAA6B9jB,GAAM,WAErC,GAAGqG,OAAO0d,QAAO,WAA0B,QAAG/hB,EAChD,IAEIgiB,GAAoCF,GAA8BhgB,EAAyC,SAAUtE,GAIzH+D,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQqf,GAA8BE,GAAoC,CACzHD,OAAQ,SAAgBE,GACtB5kB,EAASiD,MACT,IACElD,EAAU6kB,EACZ,CAAE,MAAOhiB,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,IAAIiiB,EAAYrkB,UAAUC,OAAS,EAC/BqkB,EAAcD,OAAYliB,EAAYnC,UAAU,GACpD,GAAImkB,EACF,OAAO1a,EAAM0a,EAAkC1hB,KAAM4hB,EAAY,CAACD,GAAW,CAACA,EAASE,IAEzF,IAAIrhB,EAASU,EAAkBlB,MAC3B+B,EAAU,EAUd,GATAmC,EAAQ1D,GAAQ,SAAU3B,GACpB+iB,GACFA,GAAY,EACZC,EAAchjB,GAEdgjB,EAAcF,EAAQE,EAAahjB,EAAOkD,GAE5CA,GACF,GAAG,CAAEwC,WAAW,IACZqd,EAAW,MAAM,IAAI1kB,EAAW,kDACpC,OAAO2kB,CACT,GAIK,EAED,KACA,CAAE7gB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBrD,EAAc,EAAoB,MAClCiH,EAAa,EAAoB,MACjCtE,EAAa,EAAoB,MACjC9C,EAAc,EAAoB,MAClCZ,EAAO,EAAoB,MAC3BH,EAAa,EAAoB,MACjCoI,EAAW,EAAoB,IAC/BwN,EAAU,EAAoB,MAC9B3U,EAAS,EAAoB,MAC7BoC,EAAW,EAAoB,KAC/B6L,EAAoB,EAAoB,MACxCwU,EAAiB,EAAoB,MACrC1iB,EAAQ,EAAoB,MAC5BokB,EAAkB,EAAoB,MACtC7D,EAAgB,EAAoB,MAEpC8D,EAAOld,EAAWkd,KAClBC,EAASnd,EAAWmd,OACpBlZ,EAAcjE,EAAWiE,YACzBmZ,EAAcF,GAAQA,EAAKrG,MAC3BwG,EAA0B3hB,EAAW,SAAU,QAE/CJ,EAA2B5B,OAAO4B,yBAClC4gB,EAAKtjB,EAAY,GAAGuQ,QACpBvP,EAAQhB,EAAY,GAAGgB,OACvBwF,EAAOxG,EAAY,IAAIwG,MACvBsE,EAAO9K,EAAY,GAAG8K,MAEtB4Z,EAAW,OACXC,EAAoB,UACpBC,EAAkB,UAClBC,EAAgB,cAiBhBC,EAAc,SAAUC,EAAQvjB,EAAMwjB,EAASC,GACjD,IAGIC,EAAmB5e,EAAM4N,EAAK5L,EAAGiQ,EAHjC5D,EAAMoQ,EAAOvjB,GACb2jB,EAAaF,GAAQtQ,IAAQsQ,EAAK7jB,MAClCgkB,EAAUD,GAAoC,iBAAfF,EAAK7iB,OAAqB,CAAEA,OAAQ6iB,EAAK7iB,QAAW,CAAC,EAExF,GAAIiF,EAASsN,GAAM,CACjB,IAAI0Q,EAAcxQ,EAAQF,GACtB2Q,EAAQH,EAAaF,EAAKK,MAAQD,EAAc,GAAK,CAAC,EAC1D,GAAIA,EAGF,IAFAH,EAAoBI,EAAMvlB,OAC1BmU,EAAM/F,EAAkBwG,GACnBrM,EAAI,EAAGA,EAAI4L,EAAK5L,IACnBid,EAAoB5Q,EAAKrM,EAAGwc,EAAYnQ,EAAK,GAAKrM,EAAG0c,EAAS1c,EAAI4c,EAAoBI,EAAMhd,QAAKrG,SAKnG,IAFAqE,EAAOme,EAAwB9P,GAC/BT,EAAM/F,EAAkB7H,GACnBgC,EAAI,EAAGA,EAAI4L,EAAK5L,IACnBiQ,EAAIjS,EAAKgC,GACTid,EAAoB5Q,EAAK4D,EAAGuM,EAAYnQ,EAAK4D,EAAGyM,EAAS9kB,EAAOolB,EAAO/M,GAAK+M,EAAM/M,QAAKtW,GAG7F,CACA,OAAO7C,EAAK4lB,EAASD,EAAQvjB,EAAMmT,EAAKyQ,EAC1C,EAEIG,EAAsB,SAAUxa,EAAQE,EAAK7J,GAC/C,GAAIjB,EAAa,CACf,IAAI+K,EAAaxI,EAAyBqI,EAAQE,GAClD,GAAIC,IAAeA,EAAWtJ,aAAc,MAC9C,MACcK,IAAVb,SAA4B2J,EAAOE,GAClC0X,EAAe5X,EAAQE,EAAK7J,EACnC,EAEIokB,EAAO,SAAUpkB,EAAO0iB,EAAK1hB,EAAQkjB,GACvC/iB,KAAKnB,MAAQA,EACbmB,KAAKuhB,IAAMA,EACXvhB,KAAKH,OAASA,EACdG,KAAK+iB,MAAQA,CACf,EAEIG,EAAU,SAAUrjB,EAAQsM,GAC9BnM,KAAKH,OAASA,EACdG,KAAKmM,MAAQA,CACf,EAGA+W,EAAQzjB,UAAY,CAClB0jB,KAAM,SAAUC,GACd,OAAO,IAAIF,EAAQljB,KAAKH,OAAQujB,EAClC,EACA1H,MAAO,WACL,IAAI7b,EAASG,KAAKH,OACdkG,EAAI/F,KAAKqjB,KAAKf,EAAetiB,KAAKmM,OAClCgX,EAAOnjB,KAAKmjB,KAAKpd,GACjBqb,EAAML,EAAGlhB,EAAQkG,GACrB,GAAI9B,EAAKoe,EAAiBjB,GAAM,OAAO+B,EAAKvd,SAC5C,OAAQwb,GACN,IAAK,IACH,OAAO+B,EAAK3a,SACd,IAAK,IACH,OAAO2a,EAAKG,QACd,IAAK,IACH,OAAOH,EAAKtc,SACd,IAAK,IACH,OAAOsc,EAAKI,SAAQ,GACtB,IAAK,IACH,OAAOJ,EAAKI,SAAQ,GACtB,IAAK,IACH,OAAOJ,EAAKI,QAAQ,MACtB,MAAM,IAAIza,EAAY,0BAA4BsY,EAAM,SAAWrb,EACvE,EACA2c,KAAM,SAAU/c,EAAM9G,EAAO2kB,EAAOjC,EAAKwB,GACvC,OAAO,IAAIE,EAAKpkB,EAAO0iB,EAAK5b,EAAO,KAAOlH,EAAMuB,KAAKH,OAAQ2jB,EAAOjC,GAAMwB,EAC5E,EACAva,OAAQ,WAMN,IALA,IAAI3I,EAASG,KAAKH,OACdkG,EAAI/F,KAAKmM,MAAQ,EACjBsX,GAAgB,EAChBjb,EAAS,CAAC,EACVua,EAAQ,CAAC,EACNhd,EAAIlG,EAAOrC,QAAQ,CAExB,GADAuI,EAAI/F,KAAK0jB,MAAM,CAAC,IAAK,KAAM3d,GACL,MAAlBgb,EAAGlhB,EAAQkG,KAAe0d,EAAe,CAC3C1d,IACA,KACF,CAEA,IAAInF,EAASZ,KAAKmjB,KAAKpd,GAAGc,SACtB6B,EAAM9H,EAAO/B,MACjBkH,EAAInF,EAAO2gB,IACXxb,EAAI/F,KAAK0jB,MAAM,CAAC,KAAM3d,GAAK,EAE3BA,EAAI/F,KAAKqjB,KAAKf,EAAevc,GAC7BnF,EAASZ,KAAKmjB,KAAKpd,GAAG2V,QACtB0E,EAAe2C,EAAOra,EAAK9H,GAC3Bwf,EAAe5X,EAAQE,EAAK9H,EAAO/B,OACnCkH,EAAI/F,KAAK0jB,MAAM,CAAC,IAAK,KAAM9iB,EAAO2gB,KAClC,IAAIH,EAAML,EAAGlhB,EAAQkG,GACrB,GAAY,MAARqb,EACFqC,GAAgB,EAChB1d,SACK,GAAY,MAARqb,EAAa,CACtBrb,IACA,KACF,CACF,CACA,OAAO/F,KAAK0iB,KA1HH,EA0HgBla,EAAQxI,KAAKmM,MAAOpG,EAAGgd,EAClD,EACAO,MAAO,WAML,IALA,IAAIzjB,EAASG,KAAKH,OACdkG,EAAI/F,KAAKmM,MAAQ,EACjBwX,GAAgB,EAChBL,EAAQ,GACRP,EAAQ,GACLhd,EAAIlG,EAAOrC,QAAQ,CAExB,GADAuI,EAAI/F,KAAKqjB,KAAKf,EAAevc,GACP,MAAlBgb,EAAGlhB,EAAQkG,KAAe4d,EAAe,CAC3C5d,IACA,KACF,CACA,IAAInF,EAASZ,KAAKmjB,KAAKpd,GAAG2V,QAI1B,GAHAnT,EAAKwa,EAAOniB,GACZ2H,EAAK+a,EAAO1iB,EAAO/B,OACnBkH,EAAI/F,KAAK0jB,MAAM,CAAC,IAAK,KAAM9iB,EAAO2gB,KACZ,MAAlBR,EAAGlhB,EAAQkG,GACb4d,GAAgB,EAChB5d,SACK,GAAsB,MAAlBgb,EAAGlhB,EAAQkG,GAAY,CAChCA,IACA,KACF,CACF,CACA,OAAO/F,KAAK0iB,KApJH,EAoJgBY,EAAOtjB,KAAKmM,MAAOpG,EAAGgd,EACjD,EACAlc,OAAQ,WACN,IAAIsF,EAAQnM,KAAKmM,MACbyX,EAAS9B,EAAgB9hB,KAAKH,OAAQG,KAAKmM,MAAQ,GACvD,OAAOnM,KAAK0iB,KA1JA,EA0JgBkB,EAAO/kB,MAAOsN,EAAOyX,EAAOrC,IAC1D,EACA3b,OAAQ,WACN,IAAI/F,EAASG,KAAKH,OACdgkB,EAAa7jB,KAAKmM,MAClBpG,EAAI8d,EAER,GADsB,MAAlB9C,EAAGlhB,EAAQkG,IAAYA,IACL,MAAlBgb,EAAGlhB,EAAQkG,GAAYA,QACtB,KAAI9B,EAAKme,EAAmBrB,EAAGlhB,EAAQkG,IACvC,MAAM,IAAI+C,EAAY,8BAAgC/C,GADVA,EAAI/F,KAAKqjB,KAAKlB,EAAUpc,EAAI,EAChB,CAE7D,IADsB,MAAlBgb,EAAGlhB,EAAQkG,KAAYA,EAAI/F,KAAKqjB,KAAKlB,EAAUpc,EAAI,IACjC,MAAlBgb,EAAGlhB,EAAQkG,IAAgC,MAAlBgb,EAAGlhB,EAAQkG,MACtCA,IACsB,MAAlBgb,EAAGlhB,EAAQkG,IAAgC,MAAlBgb,EAAGlhB,EAAQkG,IAAYA,IAC3BA,KACzBA,EAAI/F,KAAKqjB,KAAKlB,EAAUpc,KACM,MAAM,IAAI+C,EAAY,+CAAiD/C,GAEvG,OAAO/F,KAAK0iB,KA5KA,EA4KgBV,EAAOvjB,EAAMoB,EAAQgkB,EAAY9d,IAAK8d,EAAY9d,EAChF,EACAwd,QAAS,SAAU1kB,GACjB,IAAI0kB,EAAU,GAAK1kB,EACfsN,EAAQnM,KAAKmM,MACb2X,EAAW3X,EAAQoX,EAAQ/lB,OAC/B,GAAIiB,EAAMuB,KAAKH,OAAQsM,EAAO2X,KAAcP,EAAS,MAAM,IAAIza,EAAY,6BAA+BqD,GAC1G,OAAOnM,KAAK0iB,KAnLA,EAmLgB7jB,EAAOsN,EAAO2X,EAC5C,EACAT,KAAM,SAAUU,EAAOhe,GAErB,IADA,IAAIlG,EAASG,KAAKH,OACXkG,EAAIlG,EAAOrC,QAAkByG,EAAK8f,EAAOhD,EAAGlhB,EAAQkG,IAAjCA,KAC1B,OAAOA,CACT,EACA2d,MAAO,SAAUJ,EAAOvd,GACtBA,EAAI/F,KAAKqjB,KAAKf,EAAevc,GAE7B,IADA,IAAIqb,EAAML,EAAG/gB,KAAKH,OAAQkG,GACjBie,EAAI,EAAGA,EAAIV,EAAM9lB,OAAQwmB,IAAK,GAAIV,EAAMU,KAAO5C,EAAK,OAAOrb,EACpE,MAAM,IAAI+C,EAAY,0BAA4BsY,EAAM,SAAWrb,EACrE,GAGF,IAAIke,EAAoBvmB,GAAM,WAC5B,IACImC,EADAqkB,EAAY,mBAKhB,OAHAjC,EAAYiC,GAAW,SAAUxb,EAAK7J,EAAOgkB,GAC3ChjB,EAASgjB,EAAQhjB,MACnB,IACOA,IAAWqkB,CACpB,IAEIC,EAAoBlG,IAAkBvgB,GAAM,WAE9C,OAAO,EAAIukB,EAAY,WAAczL,GACvC,IAKAvV,EAAE,CAAEe,OAAQ,OAAQqF,MAAM,EAAMlF,OAAQ8hB,GAAqB,CAC3DvI,MAAO,SAAe0I,EAAM3B,GAC1B,OAAO0B,IAAsBznB,EAAW+lB,GAAWR,EAAYmC,GAlNtD,SAAUvkB,EAAQ4iB,GAC7B5iB,EAASE,EAASF,GAClB,IAAIgjB,EAAU,IAAIK,EAAQrjB,EAAQ,EAAG,IACjCwkB,EAAOxB,EAAQnH,QACf7c,EAAQwlB,EAAKxlB,MACbilB,EAAWjB,EAAQQ,KAAKf,EAAe+B,EAAK9C,KAChD,GAAIuC,EAAWjkB,EAAOrC,OACpB,MAAM,IAAIsL,EAAY,gCAAkCiY,EAAGlhB,EAAQikB,GAAY,+BAAiCA,GAElH,OAAOpnB,EAAW+lB,GAAWF,EAAY,CAAE,GAAI1jB,GAAS,GAAI4jB,EAAS4B,GAAQxlB,CAC/E,CAwM2EylB,CAAOF,EAAM3B,EACtF,GAIK,EAED,KACA,CAAEjmB,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCuS,EAAgB,EAAoB,KACpCJ,EAAa,EAAoB,MAEjC4C,EAAM5C,EAAW4C,IACjBD,EAAe3C,EAAW3N,MAC1BuS,EAAU/W,EAAY8U,EAAaiC,SACnCzQ,EAAOtG,EAAY8U,EAAaxO,MAChCjD,EAAOiD,EAAK,IAAIyO,GAAO1R,KAE3BtE,EAAOG,QAAU,SAAU+H,EAAKjE,EAAI8jB,GAClC,OAAOA,EAAgBvU,EAAc,CAAEnP,SAAUkD,EAAKW,GAAM5D,KAAMA,GAAQL,GAAM+T,EAAQ9P,EAAKjE,EAC/F,CAGO,EAED,KACA,CAAEO,EAAyBrE,EAAS,KAG1C,IAAIkH,EAAqB,EAAoB,MAGzCqB,EAFc,EAAoB,MAET0U,OAAO,SAAU,aAK9Cjd,EAAQ8K,EAAIlJ,OAAOimB,qBAAuB,SAA6BxgB,GACrE,OAAOH,EAAmBG,EAAGkB,EAC/B,CAGO,EAED,KACA,CAAE1I,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BhL,EAAO,EAAoB,MAAS,IACpCkL,EAAO,EAAoB,MAC3BC,EAAe,EAAoB,MACnCE,EAAgB,EAAoB,KACpC3O,EAAgB,EAAoB,MAIxC7E,EAAOG,QAAU,SAAsBuT,GACrC,IAAIlM,EAAI2L,EAAK3P,MACTmQ,EAAWL,EAAaI,GAC5B,GAAIL,EAAK7L,GAAKmM,EAASN,KAAM,OAAO,EACpC,IAAIhP,EAAWsP,EAAStE,cACxB,OAEO,IAFAmE,EAAcnP,GAAU,SAAUuP,GACvC,IAAKzL,EAAIX,EAAGoM,GAAI,OAAO/O,EAAcR,EAAU,UAAU,EAC3D,GACF,CAGO,EAED,KACA,CAAErE,EAAQC,EAA0B,KAG1C,IAAIqI,EAAW,EAAoB,IAE/B1G,EAAUC,OACVnB,EAAaC,UAGjBX,EAAOG,QAAU,SAAUS,GACzB,GAAI0H,EAAS1H,GAAW,OAAOA,EAC/B,MAAM,IAAIF,EAAWkB,EAAQhB,GAAY,oBAC3C,CAGO,EAED,KACA,CAAEZ,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAElCgnB,EAASpO,MACT3X,EAAUjB,EAAY,GAAGiB,SAEzBgmB,EAAgCrmB,OAAO,IAAIomB,EAAuB,UAAXrN,OAEvDuN,EAA2B,uBAC3BC,EAAwBD,EAAyBtiB,KAAKqiB,GAE1DloB,EAAOG,QAAU,SAAUya,EAAOyN,GAChC,GAAID,GAAyC,iBAATxN,IAAsBqN,EAAOK,kBAC/D,KAAOD,KAAezN,EAAQ1Y,EAAQ0Y,EAAOuN,EAA0B,IACvE,OAAOvN,CACX,CAGO,EAED,KACA,CAAE5a,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCnI,EAAa,EAAoB,MAEjC0I,EAAUP,EAAWO,QAEzB5I,EAAOG,QAAUD,EAAW0I,IAAY,cAAc/C,KAAKhE,OAAO+G,GAG3D,EAED,KACA,CAAE5I,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BE,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCjE,EAAoB,EAAoB,KAE5CT,EAAOG,QAAU,SAAUyL,EAAK2c,GACzBA,GAAiC,iBAAR3c,GAAkBrL,EAASqL,GACzD,IAAIxF,EAAS3F,EAAkBmL,GAC/B,OAAOlH,EAAkBnE,OAAoB2C,IAAXkD,EAAuB/F,EAAK+F,EAAQwF,GAAOA,GAC/E,CAGO,EAED,KACA,CAAE5L,EAAQC,EAA0B,KAG1C,IAAImB,EAAc,EAAoB,MAClCF,EAAQ,EAAoB,MAIhClB,EAAOG,QAAUiB,GAAeF,GAAM,WAEpC,OAGiB,KAHVa,OAAOD,gBAAe,WAA0B,GAAG,YAAa,CACrEO,MAAO,GACPW,UAAU,IACTC,SACL,GAGO,EAED,KACA,CAAEuB,EAAyBvE,EAA0B,KAG3D,IAAImB,EAAc,EAAoB,MAClCH,EAAc,EAAoB,MAClCwf,EAAwB,EAAoB,MAE5C5I,EAA2BD,gBAAgB3U,UAC3C+U,EAAU/W,EAAY4W,EAAyBG,SAI/C5W,KAAiB,SAAUyW,IAC7B4I,EAAsB5I,EAA0B,OAAQ,CACtDlW,IAAK,WACH,IAAI6mB,EAAQ,EAEZ,OADAxQ,EAAQxU,MAAM,WAAcglB,GAAS,IAC9BA,CACT,EACA3lB,cAAc,EACd6V,YAAY,GAKT,EAED,KACE1Y,IAIRA,EAAOG,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,UAIK,EAED,KACA,CAAEH,EAAQC,EAA0B,KAG1C,IAAI4f,EAAc,EAAoB,KAElCpc,EAAoBH,SAASL,UAC7BuH,EAAQ/G,EAAkB+G,MAC1BnK,EAAOoD,EAAkBpD,KAG7BL,EAAOG,QAA4B,iBAAXsoB,SAAuBA,QAAQje,QAAUqV,EAAcxf,EAAKyF,KAAK0E,GAAS,WAChG,OAAOnK,EAAKmK,MAAMA,EAAOzJ,UAC3B,EAGO,EAED,KACA,CAAEf,EAAQC,EAA0B,KAG1C,IAAIkT,EAAO,EAAoB,MAC3BC,EAAa,EAAoB,MACjCC,EAAO,EAAoB,MAC3BC,EAAe,EAAoB,MACnCC,EAAa,EAAoB,MACjCC,EAAgB,EAAoB,KAEpCwC,EAAM5C,EAAW4C,IACjB/B,EAAMb,EAAWa,IACjB9L,EAAMiL,EAAWjL,IAIrBnI,EAAOG,QAAU,SAAsBuT,GACrC,IAAIlM,EAAI2L,EAAK3P,MACTmQ,EAAWL,EAAaI,GACxBtP,EAAS,IAAI4R,EAYjB,OAVI3C,EAAK7L,GAAKmM,EAASN,KACrBG,EAAcG,EAAStE,eAAe,SAAUuE,GAC1CzL,EAAIX,EAAGoM,IAAIK,EAAI7P,EAAQwP,EAC7B,IAEAL,EAAW/L,GAAG,SAAUoM,GAClBD,EAASE,SAASD,IAAIK,EAAI7P,EAAQwP,EACxC,IAGKxP,CACT,CAGO,EAED,KACA,CAAEI,EAAyBrE,KAGjC,IAAIuoB,EAAwB,CAAC,EAAEhH,qBAE3B/d,EAA2B5B,OAAO4B,yBAGlCglB,EAAchlB,IAA6B+kB,EAAsBroB,KAAK,CAAE,EAAG,GAAK,GAIpFF,EAAQ8K,EAAI0d,EAAc,SAA8BpJ,GACtD,IAAIpT,EAAaxI,EAAyBH,KAAM+b,GAChD,QAASpT,GAAcA,EAAWuM,UACpC,EAAIgQ,CAGG,EAED,KACA,CAAE1oB,EAAQC,EAA0B,KAG1C,IAAIiS,EAAyB,EAAoB,MAE7CrL,EAAU9E,OAId/B,EAAOG,QAAU,SAAUS,GACzB,OAAOiG,EAAQqL,EAAuBtR,GACxC,CAGO,EAED,KACEZ,IAGRA,EAAOG,QAAU,SAAUsH,GACzB,IACE,QAASA,GACX,CAAE,MAAOtE,GACP,OAAO,CACT,CACF,CAGO,EAED,KACA,CAAEnD,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjCpH,EAAc,EAAoB,MAClC2nB,EAAsB,EAAoB,MAC1CC,EAAU,EAAoB,MAC9B1nB,EAAS,EAAoB,MAC7B2nB,EAAY,EAAoB,MAChCC,EAAoB,EAAoB,KACxCpL,EAAc,EAAoB,MAElCvM,EAAiB0X,EAAUpX,IAC3BL,EAAoByX,EAAUlX,OAE9BtF,EAAcjE,EAAWiE,YACzB3L,EAAY0H,EAAW1H,UACvB4jB,EAAKtjB,EAAY,GAAGuQ,QAEpBwX,EAAsB,SAAU3e,EAAQsF,GAE1C,IADA,IAAI3O,EAASqJ,EAAOrJ,OACd2O,EAAQ3O,EAAQ2O,IAAS,CAC7B,IAAIiV,EAAML,EAAGla,EAAQsF,GACrB,GAAY,MAARiV,GAAuB,OAARA,GAAwB,OAARA,GAAwB,OAARA,GAAwB,OAARA,EAAc,KACnF,CAAE,OAAOjV,CACX,EAEIsZ,EAAoB,SAAUC,EAAO9hB,EAAU+hB,GACjD,IAAIC,EAAcF,EAAMloB,OAEpBooB,EAAc,IAChBF,GAAyB,IAAhBE,EAAoB,KAAO,KAGtC,IAAIC,GAAWjiB,EAASmd,EAAG2E,EAAO,KAAO,KACpC9hB,EAASmd,EAAG2E,EAAO,KAAO,KAC1B9hB,EAASmd,EAAG2E,EAAO,KAAO,GAC3B9hB,EAASmd,EAAG2E,EAAO,IAEnBI,EAAa,CACdD,GAAW,GAAM,IACjBA,GAAW,EAAK,IACP,IAAVA,GAGF,GAAoB,IAAhBD,EAAmB,CACrB,GAAID,GAAsC,IAAlBG,EAAW,GACjC,MAAM,IAAIhd,EAAY,cAExB,MAAO,CAACgd,EAAW,GACrB,CAEA,GAAoB,IAAhBF,EAAmB,CACrB,GAAID,GAAsC,IAAlBG,EAAW,GACjC,MAAM,IAAIhd,EAAY,cAExB,MAAO,CAACgd,EAAW,GAAIA,EAAW,GACpC,CAEA,OAAOA,CACT,EAEIC,EAAa,SAAU1c,EAAO2c,EAAUjf,GAE1C,IADA,IAAIkf,EAAiBD,EAASxoB,OACrB2O,EAAQ,EAAGA,EAAQ8Z,EAAgB9Z,IAC1C9C,EAAMtC,EAAUoF,GAAS6Z,EAAS7Z,GAEpC,OAAOpF,EAAUkf,CACnB,EAGAzpB,EAAOG,QAAU,SAAUkK,EAAQ3H,EAASgK,EAAME,GAChDic,EAAQxe,GACRue,EAAoBlmB,GACpB,IAAI0E,EAA0C,WAA/B2hB,EAAkBrmB,GAAwB0O,EAAiBC,EACtEqY,EAAoBhnB,EAAUA,EAAQgnB,uBAAoBxmB,EAI9D,QAF0BA,IAAtBwmB,IAAiCA,EAAoB,SAE/B,UAAtBA,GAAuD,WAAtBA,GAAwD,wBAAtBA,EACrE,MAAM,IAAI/oB,EAAU,wCAGlB+L,GAAMiR,EAAYjR,EAAK/C,QAE3B,IAAIkD,EAAQH,GAAQ,GAChBnC,EAAU,EACVD,EAAO,EACP4e,EAAQ,GACRvZ,EAAQ,EAEZ,GAAI/C,EAAW,OAAa,CAE1B,IADA+C,EAAQqZ,EAAoB3e,EAAQsF,MACtBtF,EAAOrJ,OAAQ,CAC3B,GAAIkoB,EAAMloB,OAAS,EAAG,CACpB,GAA0B,wBAAtB0oB,EACF,MAEF,GAA0B,UAAtBA,EAMF,MAAM,IAAIpd,EAAY,mBALtB,GAAqB,IAAjB4c,EAAMloB,OACR,MAAM,IAAIsL,EAAY,uDAExB/B,EAAUgf,EAAW1c,EAAOoc,EAAkBC,EAAO9hB,GAAU,GAAQmD,EAI3E,CACAD,EAAOD,EAAOrJ,OACd,KACF,CACA,IAAI4jB,EAAML,EAAGla,EAAQsF,GAErB,KADEA,EACU,MAARiV,EAAa,CACf,GAAIsE,EAAMloB,OAAS,EACjB,MAAM,IAAIsL,EAAY,wBAGxB,GADAqD,EAAQqZ,EAAoB3e,EAAQsF,GACf,IAAjBuZ,EAAMloB,OAAc,CACtB,GAAI2O,IAAUtF,EAAOrJ,OAAQ,CAC3B,GAA0B,wBAAtB0oB,EACF,MAEF,MAAM,IAAIpd,EAAY,gCACxB,CAC0B,MAAtBiY,EAAGla,EAAQsF,OACXA,EACFA,EAAQqZ,EAAoB3e,EAAQsF,GAExC,CACA,GAAIA,EAAQtF,EAAOrJ,OACjB,MAAM,IAAIsL,EAAY,sCAExB/B,EAAUgf,EAAW1c,EAAOoc,EAAkBC,EAAO9hB,EAAgC,WAAtBsiB,GAAiCnf,GAChGD,EAAOD,EAAOrJ,OACd,KACF,CACA,IAAKG,EAAOiG,EAAUwd,GACpB,MAAM,IAAItY,EAAY,wBAExB,IAAIqd,EAAiB/c,EAAYrC,EACjC,GAAuB,IAAnBof,GAAyC,IAAjBT,EAAMloB,QAAmC,IAAnB2oB,GAAyC,IAAjBT,EAAMloB,OAE9E,MAIF,GAAqB,KADrBkoB,GAAStE,GACC5jB,SACRuJ,EAAUgf,EAAW1c,EAAOoc,EAAkBC,EAAO9hB,GAAU,GAAQmD,GACvE2e,EAAQ,GACR5e,EAAOqF,EACHpF,IAAYqC,GACd,KAGN,CAEA,MAAO,CAAEC,MAAOA,EAAOvC,KAAMA,EAAMC,QAASA,EAC9C,CAGO,EAED,KACA,CAAEvK,EAAQC,EAA0B,KAG1C,IAAImT,EAAa,EAAoB,MACjC1L,EAAU,EAAoB,MAE9BsO,EAAM5C,EAAW4C,IACjB/B,EAAMb,EAAWa,IAErBjU,EAAOG,QAAU,SAAU+H,GACzB,IAAI9D,EAAS,IAAI4R,EAIjB,OAHAtO,EAAQQ,GAAK,SAAU9H,GACrB6T,EAAI7P,EAAQhE,EACd,IACOgE,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAIgB,EAAc,EAAoB,MAClCsP,EAAW,EAAoB,MAE/BxK,EAAiB9E,EAAY,CAAC,EAAE8E,gBAKpC/F,EAAOG,QAAU4B,OAAOZ,QAAU,SAAgBf,EAAI8L,GACpD,OAAOnG,EAAewK,EAASnQ,GAAK8L,EACtC,CAGO,EAED,KACA,CAAElM,EAAQC,EAA0B,KAG1C,IAAIC,EAAa,EAAoB,MACjCM,EAAc,EAAoB,MAElCE,EAAaC,UAGjBX,EAAOG,QAAU,SAAUS,GACzB,GAAIV,EAAWU,GAAW,OAAOA,EACjC,MAAM,IAAIF,EAAWF,EAAYI,GAAY,qBAC/C,CAGO,EAED,KACA,CAAE4D,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxBpE,EAAO,EAAoB,MAC3BE,EAAW,EAAoB,MAC/BmE,EAAoB,EAAoB,MACxCklB,EAAU,EAAoB,MAC9BC,EAAoB,EAAoB,MACxChlB,EAAgB,EAAoB,MACpCD,EAAsB,EAAoB,MAC1CG,EAAwC,EAAoB,KAC5DC,EAA2C,EAAoB,MAC/DF,EAAU,EAAoB,MAE9BglB,GAA6ChlB,IAAYC,EAAsC,OAAQ,GACvGglB,GAAkCjlB,IAAYglB,GAC7C9kB,EAAyC,OAAQwP,YAElDrP,EAASL,GAAWglB,GAA6CC,EAEjE3kB,EAAgBR,GAAoB,WAItC,IAHA,IAEIR,EAFAC,EAAWb,KAAKa,SAChBC,EAAOd,KAAKc,KAETd,KAAKwmB,WAIV,GAHAxmB,KAAKwmB,YACL5lB,EAAS7D,EAASF,EAAKiE,EAAMD,IACtBb,KAAKe,OAASH,EAAOG,KAClB,OAIZ,GAFAH,EAAS7D,EAASF,EAAKiE,EAAMD,MACtBb,KAAKe,OAASH,EAAOG,MACjB,OAAOH,EAAO/B,KAC3B,IAIAoC,EAAE,CAAEe,OAAQ,WAAYC,OAAO,EAAMC,MAAM,EAAMC,OAAQR,GAAU,CACjE8kB,KAAM,SAAcC,GAElB,IAAIF,EADJzpB,EAASiD,MAET,IACEwmB,EAAYH,EAAkBD,GAASM,GACzC,CAAE,MAAO/mB,GACP0B,EAAcrB,KAAM,QAASL,EAC/B,CAEA,OAAI4mB,EAAuC1pB,EAAK0pB,EAAgCvmB,KAAMwmB,GAE/E,IAAI5kB,EAAcV,EAAkBlB,MAAO,CAChDwmB,UAAWA,GAEf,GAIK,EAED,KACA,CAAEhqB,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MACjC8hB,EAAU,EAAoB,MAElCnqB,EAAOG,QAAU,SAAUsC,GACzB,GAAI0nB,EAAS,CACX,IACE,OAAO9hB,EAAWqN,QAAQ0U,iBAAiB3nB,EAC7C,CAAE,MAAOU,GAAqB,CAC9B,IAEE,OAAOG,SAAS,mBAAqBb,EAAO,KAArCa,EACT,CAAE,MAAOH,GAAqB,CAChC,CACF,CAGO,EAED,KACA,CAAEqB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCgiB,EAA8B,EAAoB,MAClDrgB,EAAc,EAAoB,MAElCE,EAAa7B,EAAW6B,WAIxBA,GAAYzF,EAAE,CAAEe,OAAQ,aAAcqF,MAAM,GAAQ,CACtDyf,WAAY,SAAoBjgB,GAC9B,IAAIjG,EAAS4F,EAAYK,EAAQtJ,UAAUC,OAAS,EAAID,UAAU,QAAKmC,EAAW,KAAM,kBACxF,OAAOmnB,EAA4BngB,EAAY9F,EAAOyI,MACxD,GAIK,EAED,KACA,CAAE7M,EAAQC,EAA0B,KAG1C,IAAIoI,EAAa,EAAoB,MAGjCvG,EAAiBC,OAAOD,eAE5B9B,EAAOG,QAAU,SAAU+L,EAAK7J,GAC9B,IACEP,EAAeuG,EAAY6D,EAAK,CAAE7J,MAAOA,EAAOQ,cAAc,EAAMG,UAAU,GAChF,CAAE,MAAOG,GACPkF,EAAW6D,GAAO7J,CACpB,CAAE,OAAOA,CACX,CAGO,EAED,KACA,CAAErC,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BuO,EAAS,EAAoB,MAC7BrG,EAA8B,EAAoB,MAClDgiB,EAAiB,EAAoB,MACrCpjB,EAAkB,EAAoB,MACtC5F,EAAsB,EAAoB,MAC1CwF,EAAY,EAAoB,MAChCqQ,EAAqB,EAAoB,MAAuB,kBAChEoT,EAAyB,EAAoB,MAC7C3lB,EAAgB,EAAoB,MACpC4lB,EAAmB,EAAoB,MAEvCvJ,EAAgB/Z,EAAgB,eAChCujB,EAAkB,iBAClBC,EAA0B,uBAC1BC,EAAS,SACTC,EAAQ,QACRC,EAAmBvpB,EAAoB2G,IAEvC6iB,EAA+B,SAAUjb,GAC3C,IAAIpO,EAAmBH,EAAoB0H,UAAU6G,EAAc6a,EAA0BD,GAE7F,OAAOH,EAAe3b,EAAOwI,GAAoB,CAC/C9S,KAAM,WACJ,IAAIlB,EAAQ1B,EAAiB8B,MAI7B,GAAIsM,EAAa,OAAO1M,EAAM4nB,cAC9B,GAAI5nB,EAAMmB,KAAM,OAAOimB,OAAuBtnB,GAAW,GACzD,IACE,IAAIkB,EAAShB,EAAM4nB,cACnB,OAAO5nB,EAAM6nB,oBAAsB7mB,EAASomB,EAAuBpmB,EAAQhB,EAAMmB,KACnF,CAAE,MAAOpB,GAEP,MADAC,EAAMmB,MAAO,EACPpB,CACR,CACF,EACA,OAAU,WACR,IAAIC,EAAQ1B,EAAiB8B,MACzBa,EAAWjB,EAAMiB,SAErB,GADAjB,EAAMmB,MAAO,EACTuL,EAAa,CACf,IAAIob,EAAenkB,EAAU1C,EAAU,UACvC,OAAO6mB,EAAe7qB,EAAK6qB,EAAc7mB,GAAYmmB,OAAuBtnB,GAAW,EACzF,CACA,GAAIE,EAAMiC,MAAO,IACfR,EAAczB,EAAMiC,MAAMhB,SAAUumB,EACtC,CAAE,MAAOznB,GACP,OAAO0B,EAAcR,EAAUwmB,EAAO1nB,EACxC,CACA,GAAIC,EAAM+nB,UAAW,IACnBV,EAAiBrnB,EAAM+nB,UAAWP,EACpC,CAAE,MAAOznB,GACP,OAAO0B,EAAcR,EAAUwmB,EAAO1nB,EACxC,CAEA,OADIkB,GAAUQ,EAAcR,EAAUumB,GAC/BJ,OAAuBtnB,GAAW,EAC3C,GAEJ,EAEIkoB,EAAgCL,GAA6B,GAC7DM,EAA0BN,GAA6B,GAE3DxiB,EAA4B8iB,EAAyBnK,EAAe,mBAEpElhB,EAAOG,QAAU,SAAU6qB,EAAalb,EAAawb,GACnD,IAAIlmB,EAAgB,SAAkBpB,EAAQZ,GACxCA,GACFA,EAAMiB,SAAWL,EAAOK,SACxBjB,EAAMkB,KAAON,EAAOM,MACflB,EAAQY,EACfZ,EAAM+F,KAAO2G,EAAc6a,EAA0BD,EACrDtnB,EAAM6nB,sBAAwBK,EAC9BloB,EAAM4nB,YAAcA,EACpB5nB,EAAMmC,QAAU,EAChBnC,EAAMmB,MAAO,EACbumB,EAAiBtnB,KAAMJ,EACzB,EAIA,OAFAgC,EAAcnC,UAAY6M,EAAcsb,EAAgCC,EAEjEjmB,CACT,CAGO,EAED,KACA,CAAEpF,EAAQC,EAA0B,KAG1C,IAAI4f,EAAc,EAAoB,KAElCpc,EAAoBH,SAASL,UAC7B5C,EAAOoD,EAAkBpD,KAEzBkrB,EAAsB1L,GAAepc,EAAkBqC,KAAKA,KAAKzF,EAAMA,GAE3EL,EAAOG,QAAU0f,EAAc0L,EAAsB,SAAUtnB,GAC7D,OAAO,WACL,OAAO5D,EAAKmK,MAAMvG,EAAIlD,UACxB,CACF,CAGO,EAED,KACA,CAAEf,EAAQC,EAA0B,KAG1C,IAOIurB,EAAOhW,EAPPnN,EAAa,EAAoB,MACjC2J,EAAY,EAAoB,MAEhC0D,EAAUrN,EAAWqN,QACrBD,EAAOpN,EAAWoN,KAClBgN,EAAW/M,GAAWA,EAAQ+M,UAAYhN,GAAQA,EAAKD,QACvDiW,EAAKhJ,GAAYA,EAASgJ,GAG1BA,IAIFjW,GAHAgW,EAAQC,EAAGlpB,MAAM,MAGD,GAAK,GAAKipB,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DhW,GAAWxD,MACdwZ,EAAQxZ,EAAUwZ,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQxZ,EAAUwZ,MAAM,oBACbhW,GAAWgW,EAAM,IAIhCxrB,EAAOG,QAAUqV,CAGV,EAED,KACA,CAAExV,EAAQC,EAA0B,KAG1C,IAAII,EAAO,EAAoB,MAC3BE,EAAW,EAAoB,MAC/BwG,EAAY,EAAoB,MAEpC/G,EAAOG,QAAU,SAAUkE,EAAUiF,EAAMjH,GACzC,IAAIqpB,EAAaC,EACjBprB,EAAS8D,GACT,IAEE,KADAqnB,EAAc3kB,EAAU1C,EAAU,WAChB,CAChB,GAAa,UAATiF,EAAkB,MAAMjH,EAC5B,OAAOA,CACT,CACAqpB,EAAcrrB,EAAKqrB,EAAarnB,EAClC,CAAE,MAAOlB,GACPwoB,GAAa,EACbD,EAAcvoB,CAChB,CACA,GAAa,UAATmG,EAAkB,MAAMjH,EAC5B,GAAIspB,EAAY,MAAMD,EAEtB,OADAnrB,EAASmrB,GACFrpB,CACT,CAGO,EAED,KACA,CAAErC,EAAQC,EAA0B,KAG1C,IAAI4f,EAAc,EAAoB,KAElCxf,EAAOiD,SAASL,UAAU5C,KAE9BL,EAAOG,QAAU0f,EAAcxf,EAAKyF,KAAKzF,GAAQ,WAC/C,OAAOA,EAAKmK,MAAMnK,EAAMU,UAC1B,CAGO,EAED,KACA,CAAEf,EAAQC,EAA0B,KAG1C,IAAIoU,EAAsB,EAAoB,MAE1CE,EAAcC,WAElBxU,EAAOG,QAAU,SAAUC,GACzB,IAAIgE,EAASiQ,EAAoBjU,GACjC,GAAIgE,EAAS,EAAG,MAAM,IAAImQ,EAAY,qCACtC,OAAOnQ,CACT,CAGO,EAED,KACA,CAAEpE,EAAQC,EAA0B,KAG1C,IAAI4L,EAAkB,EAAoB,MACtC+f,EAAkB,EAAoB,MACtCxc,EAAoB,EAAoB,MAGxCyc,EAAe,SAAUC,GAC3B,OAAO,SAAUtZ,EAAOuZ,EAAIC,GAC1B,IAAIxkB,EAAIqE,EAAgB2G,GACpBxR,EAASoO,EAAkB5H,GAC/B,GAAe,IAAXxG,EAAc,OAAQ8qB,IAAgB,EAC1C,IACIzpB,EADAsN,EAAQic,EAAgBI,EAAWhrB,GAIvC,GAAI8qB,GAAeC,GAAOA,GAAI,KAAO/qB,EAAS2O,GAG5C,IAFAtN,EAAQmF,EAAEmI,OAEItN,EAAO,OAAO,OAEvB,KAAMrB,EAAS2O,EAAOA,IAC3B,IAAKmc,GAAenc,KAASnI,IAAMA,EAAEmI,KAAWoc,EAAI,OAAOD,GAAenc,GAAS,EACnF,OAAQmc,IAAgB,CAC5B,CACF,EAEA9rB,EAAOG,QAAU,CAGf0T,SAAUgY,GAAa,GAGvB/f,QAAS+f,GAAa,GAIjB,EAED,KACA,CAAErnB,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCpH,EAAc,EAAoB,MAClC2nB,EAAsB,EAAoB,MAC1C3e,EAAe,EAAoB,MACnC0T,EAAc,EAAoB,MAClCmL,EAAY,EAAoB,MAChCC,EAAoB,EAAoB,KAExC3X,EAAiB0X,EAAUrX,IAC3BJ,EAAoByX,EAAUnX,OAE9BH,EAASvQ,EAAY,GAAGuQ,QAIxBnJ,EAAW6B,YAAYzF,EAAE,CAAEe,OAAQ,aAAcC,OAAO,GAAQ,CAClEwmB,SAAU,WACR,IAAInF,EAAQ7c,EAAazG,MACrBd,EAAU3B,UAAUC,OAAS4nB,EAAoB7nB,UAAU,SAAMmC,EACjEkE,EAA0C,WAA/B2hB,EAAkBrmB,GAAwB0O,EAAiBC,EACtE6a,IAAgBxpB,KAAaA,EAAQwpB,YACzCvO,EAAYna,KAAKmG,QAWjB,IATA,IAGI0f,EAHAjlB,EAAS,GACTmF,EAAI,EACJvI,EAAS8lB,EAAM9lB,OAGfujB,EAAK,SAAU4H,GACjB,OAAO3a,EAAOpK,EAAWiiB,GAAY,EAAI8C,EAAU,GACrD,EAEO5iB,EAAI,EAAIvI,EAAQuI,GAAK,EAC1B8f,GAAWvC,EAAMvd,IAAM,KAAOud,EAAMvd,EAAI,IAAM,GAAKud,EAAMvd,EAAI,GAC7DnF,GAAUmgB,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAAKA,EAAG,GAUvC,OARIhb,EAAI,IAAMvI,GACZqoB,GAAWvC,EAAMvd,IAAM,KAAOud,EAAMvd,EAAI,IAAM,GAC9CnF,GAAUmgB,EAAG,GAAKA,EAAG,GAAKA,EAAG,IAAM2H,EAAc,GAAK,MAC7C3iB,EAAI,IAAMvI,IACnBqoB,EAAUvC,EAAMvd,IAAM,GACtBnF,GAAUmgB,EAAG,GAAKA,EAAG,IAAM2H,EAAc,GAAK,OAGzC9nB,CACT,GAIK,EAED,KACA,CAAEI,EAAyBvE,EAA0B,KAG3D,IAAIwE,EAAI,EAAoB,MACxB4D,EAAa,EAAoB,MACjCwgB,EAAU,EAAoB,MAC9B5e,EAAe,EAAoB,MACnC0T,EAAc,EAAoB,MAClCyO,EAAW,EAAoB,MAI/B/jB,EAAW6B,YAAYzF,EAAE,CAAEe,OAAQ,aAAcC,OAAO,GAAQ,CAClE4mB,WAAY,SAAoBhiB,GAC9BJ,EAAazG,MACbqlB,EAAQxe,GACRsT,EAAYna,KAAKmG,QACjB,IAAIW,EAAO8hB,EAAS/hB,EAAQ7G,MAAM8G,KAClC,MAAO,CAAEA,KAAMA,EAAMC,QAASD,EAAO,EACvC,GAIK,EAED,KACEtK,IAKRA,EAAOG,QAAU,SAAU+W,GACzB,IAEE,IAAI6L,EAAU,IAAI/M,IACd8M,EAAU,CACZzP,KAAM,EACNlL,IAAK,WAAc,OAAO,CAAM,EAChCZ,KAAM,WAEJ,OAAOxF,OAAOD,eAAe,CAAC,EAAG,OAAQ,CACvCH,IAAK,WAGH,OAFAohB,EAAQC,QACRD,EAAQ9O,IAAI,GACL,WACL,MAAO,CAAE1P,MAAM,EACjB,CACF,GAEJ,GAEEH,EAAS2e,EAAQ7L,GAAa4L,GAElC,OAAuB,IAAhB1e,EAAOiP,MAA+C,IAAjCjP,EAAOme,SAASje,OAAOjC,KACrD,CAAE,MAAOc,GACP,OAAO,CACT,CACF,CAGO,GAKMmpB,EAA2B,CAAC,EAGhC,SAAS,EAAoBC,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBrpB,IAAjBspB,EACH,OAAOA,EAAarsB,QAGrB,IAAIH,EAASssB,EAAyBC,GAAY,CAGjDpsB,QAAS,CAAC,GAOX,OAHAJ,EAAoBwsB,GAAUlsB,KAAKL,EAAOG,QAASH,EAAQA,EAAOG,QAAS,GAGpEH,EAAOG,OACf,CAGLssB,EAAsB,CAAC,EAGP,EAAoB,MAET,EAAoB,MAEpB,EAAoB,MAEJ,EAAoB,MAErC,EAAoB,MAEzB,EAAoB,MAExB,EAAoB,MAEJ,EAAoB,MAEhB,EAAoB,MAEvB,EAAoB,MAEvB,EAAoB,MAEvB,EAAoB,MAEtB,EAAoB,MAE9B,EAAoB,MAgBxC,MAAMC,IAA8B,iBAAZhX,SAAwBA,QAAU,IAAO,oBAAuBA,QAAQ+M,SAASkK,IAAQjX,QAAQ+M,SAASmK,UAAYlX,QAAQvM,MAAyB,YAAjBuM,QAAQvM,MAChK0jB,EAAuB,CAAC,KAAO,EAAG,EAAG,KAAO,EAAG,GAC/CC,EAAc,KAGdC,EACC,EADDA,EAEK,EAFLA,EAGG,EAHHA,EAKe,GALfA,EAMiB,GANjBA,EAOiB,GAPjBA,EAQQ,IARRA,EASI,IAEJC,EAAiB,CACrBC,QAAS,EACTC,OAAQ,EACRC,aAAc,EACdC,eAAgB,GAEZC,EAAyB,yBACzBC,EAAuB,CAC3BL,SAAU,EACVM,KAAM,EACNC,SAAU,EACVC,UAAW,EACXC,MAAO,GACPC,IAAK,GACLC,UAAW,KAEPC,EAA6B,CACjCC,OAAQ,EACRC,OAAQ,EACRC,cAAe,GACfC,eAAgB,GAChBC,iBAAkB,GAClBC,UAAW,GACXC,cAAe,GACfC,YAAa,GACbC,gBAAiB,GACjBC,wBAAyB,GACzBC,oBAAqB,GACrBC,eAAgB,GAChBC,mBAAoB,GACpBC,UAAW,IAEPC,EAAiB,CACrBC,MAAO,EACPC,gBAAiB,EACjBC,KAAM,GACNC,mBAAoB,GACpBC,uBAAwB,IACxBC,uBAAwB,IACxBC,SAAU,KACVC,mBAAoB,MAEhBC,EACE,EADFA,EAEI,EAFJA,EAGS,EAHTA,EAIO,EAJPA,EASc,EATdA,EAUc,EAEdC,EAAiB,CACrBC,eAAgB,EAChBC,UAAW,EACXC,WAAY,GAERC,EAAiB,CACrBC,KAAM,EACNC,KAAM,EACNpC,SAAU,EACVqC,KAAM,EACNC,OAAQ,EACRC,OAAQ,EACRC,QAAS,EACTC,SAAU,EACVxC,UAAW,EACXyC,UAAW,GACXC,SAAU,GACVC,UAAW,GACX1C,MAAO,GACP2C,MAAO,GACP1C,IAAK,GACL2C,MAAO,GACPC,eAAgB,GAChBC,MAAO,GACPC,MAAO,GACPC,OAAQ,GACRC,OAAQ,GACRC,YAAa,GACbC,QAAS,GACTC,UAAW,GACXC,OAAQ,GACRC,OAAQ,IAuCJC,EACG,EADHA,EAEI,EAFJA,EAGK,EAHLA,EAIG,EAJHA,EAKO,EA6BPC,EAAiB,CACrBC,OAAQ,EACRC,SAAU,EACVC,MAAO,GAEHC,EAAM,CACVC,WAAY,EACZC,aAAc,EACdC,WAAY,EACZC,YAAa,EACbC,cAAe,EACfC,QAAS,EACTC,mBAAoB,EACpBC,YAAa,EACbC,UAAW,EACXC,KAAM,GACNC,QAAS,GACTC,UAAW,GACXC,OAAQ,GACRC,OAAQ,GACRC,QAAS,GACTC,SAAU,GACVC,SAAU,GACVC,UAAW,GACXC,UAAW,GACXC,OAAQ,GACRC,YAAa,GACbC,KAAM,GACNC,OAAQ,GACRC,WAAY,GACZC,aAAc,GACdC,gBAAiB,GACjBC,kBAAmB,GACnBC,QAAS,GACTC,KAAM,GACNC,OAAQ,GACRC,UAAW,GACXC,QAAS,GACTC,eAAgB,GAChBC,eAAgB,GAChBC,UAAW,GACXC,WAAY,GACZC,QAAS,GACTC,qBAAsB,GACtBC,YAAa,GACbC,SAAU,GACVC,mBAAoB,GACpBC,cAAe,GACfC,SAAU,GACVC,SAAU,GACVC,eAAgB,GAChBC,iBAAkB,GAClBC,2BAA4B,GAC5BC,aAAc,GACdC,sBAAuB,GACvBC,oBAAqB,GACrBC,kBAAmB,GACnBC,eAAgB,GAChBC,gBAAiB,GACjBC,aAAc,GACdC,cAAe,GACfC,cAAe,GACfC,YAAa,GACbC,kBAAmB,GACnBC,gBAAiB,GACjBC,mBAAoB,GACpBC,iBAAkB,GAClBC,YAAa,GACbC,iBAAkB,GAClBC,eAAgB,GAChBC,eAAgB,GAChBC,aAAc,GACdC,UAAW,GACXC,eAAgB,GAChBC,mBAAoB,GACpBC,wBAAyB,GACzBC,iBAAkB,GAClBC,YAAa,GACbC,UAAW,GACXC,sBAAuB,GACvBC,oBAAqB,GACrBC,WAAY,GACZC,SAAU,GACVC,gBAAiB,GACjBC,cAAe,GACfC,sBAAuB,GACvBC,2BAA4B,GAC5BC,kBAAmB,GACnBC,wBAAyB,GACzBC,6BAA8B,GAC9BC,wBAAyB,GACzBC,4BAA6B,GAC7BC,yBAA0B,GAC1BC,cAAe,GACfC,qBAAsB,GACtBC,mBAAoB,GACpBC,YAAa,IAETC,EACI,EADJA,EAEI,EAFJA,EAGK,EAHLA,EAIO,EAEPC,EAAoB,CACxBC,cAAe,EACfC,mBAAoB,GAEtB,IAAIC,EAAYpG,EAAeE,SAC/B,SAASmG,EAAkBC,GACrBhS,OAAOiS,UAAUD,KACnBF,EAAYE,EAEhB,CACA,SAASE,IACP,OAAOJ,CACT,CACA,SAASK,EAAKC,GACRN,GAAapG,EAAeG,OAC9BwG,QAAQC,IAAI,SAASF,IAEzB,CACA,SAASG,EAAKH,GACRN,GAAapG,EAAeE,UAC9ByG,QAAQC,IAAI,YAAYF,IAE5B,CACA,SAASI,EAAYJ,GACnB,MAAM,IAAI/d,MAAM+d,EAClB,CACA,SAASK,EAAOC,EAAMN,GACfM,GACHF,EAAYJ,EAEhB,CAaA,SAASO,EAAuBhZ,EAAKiZ,EAAU,KAAM11B,EAAU,MAC7D,IAAKyc,EACH,OAAO,KAET,GAAIzc,GAA0B,iBAARyc,EAAkB,CACtC,GAAIzc,EAAQ21B,oBAAsBlZ,EAAImZ,WAAW,QAAS,CACxD,MAAMC,EAAOpZ,EAAIqM,MAAM,OACnB+M,GAAMv3B,QAAU,IAClBme,EAAM,UAAUA,IAEpB,CACA,GAAIzc,EAAQ81B,mBACV,IACErZ,EAoZCsZ,mBAAmBC,OApZKvZ,GAC3B,CAAE,MAAO,CAEb,CACA,MAAMwZ,EAAcP,EAAUnZ,IAAIC,MAAMC,EAAKiZ,GAAWnZ,IAAIC,MAAMC,GAClE,OA9BF,SAA0BA,GACxB,OAAQA,GAAKyZ,UACX,IAAK,QACL,IAAK,SACL,IAAK,OACL,IAAK,UACL,IAAK,OACH,OAAO,EACT,QACE,OAAO,EAEb,CAmBSC,CAAiBF,GAAeA,EAAc,IACvD,CACA,SAASG,EAAc3Z,EAAKiD,EAAM2W,GAAW,GAC3C,MAAMC,EAAM/Z,IAAIC,MAAMC,GACtB,OAAI6Z,GACFA,EAAI5W,KAAOA,EACJ4W,EAAI/W,MAET8W,GAAYZ,EAAuBhZ,EAAK,sBACnCA,EAAI5c,MAAM,IAAK,GAAG,GAAK,IAAG6f,EAAO,IAAIA,IAAS,IAEhD,EACT,CACA,SAAS6W,EAAOrtB,EAAKstB,EAAM72B,EAAO82B,GAAkB,GAOlD,OANAp3B,OAAOD,eAAe8J,EAAKstB,EAAM,CAC/B72B,QACAqW,YAAaygB,EACbt2B,cAAc,EACdG,UAAU,IAELX,CACT,CACA,MAAM+2B,EAAgB,WACpB,SAASA,EAAcze,EAASlY,GAC9Be,KAAKmX,QAAUA,EACfnX,KAAKf,KAAOA,CACd,CAGA,OAFA22B,EAAcn2B,UAAY,IAAI4W,MAC9Buf,EAAcr2B,YAAcq2B,EACrBA,CACT,CARsB,GAStB,MAAMC,UAA0BD,EAC9B,WAAAr2B,CAAY60B,EAAK0B,GACfC,MAAM3B,EAAK,qBACXp0B,KAAK81B,KAAOA,CACd,EAEF,MAAME,WAA8BJ,EAClC,WAAAr2B,CAAY60B,EAAK6B,GACfF,MAAM3B,EAAK,yBACXp0B,KAAKi2B,QAAUA,CACjB,EAEF,MAAMC,WAA4BN,EAChC,WAAAr2B,CAAY60B,GACV2B,MAAM3B,EAAK,sBACb,EAEF,MAAM+B,WAA0BP,EAC9B,WAAAr2B,CAAY60B,EAAKgC,EAAQC,GACvBN,MAAM3B,EAAK,qBACXp0B,KAAKo2B,OAASA,EACdp2B,KAAKq2B,QAAUA,CACjB,EAEF,MAAMC,WAAoBV,EACxB,WAAAr2B,CAAY60B,GACV2B,MAAM3B,EAAK,cACb,EAEF,MAAMmC,WAAuBX,EAC3B,WAAAr2B,CAAY60B,GACV2B,MAAM3B,EAAK,iBACb,EAEF,SAASoC,GAAcntB,GACA,iBAAVA,QAAwC3J,IAAlB2J,GAAO7L,QACtCg3B,EAAY,sCAEd,MAAMh3B,EAAS6L,EAAM7L,OACfi5B,EAAqB,KAC3B,GAAIj5B,EAASi5B,EACX,OAAOp4B,OAAOyiB,aAAa9Z,MAAM,KAAMqC,GAEzC,MAAMqtB,EAAS,GACf,IAAK,IAAI3wB,EAAI,EAAGA,EAAIvI,EAAQuI,GAAK0wB,EAAoB,CACnD,MAAME,EAAW5zB,KAAKiG,IAAIjD,EAAI0wB,EAAoBj5B,GAC5CkoB,EAAQrc,EAAMutB,SAAS7wB,EAAG4wB,GAChCD,EAAOnuB,KAAKlK,OAAOyiB,aAAa9Z,MAAM,KAAM0e,GAC9C,CACA,OAAOgR,EAAO/3B,KAAK,GACrB,CACA,SAASk4B,GAAcC,GACF,iBAARA,GACTtC,EAAY,sCAEd,MAAMh3B,EAASs5B,EAAIt5B,OACb6L,EAAQ,IAAI3C,WAAWlJ,GAC7B,IAAK,IAAIuI,EAAI,EAAGA,EAAIvI,IAAUuI,EAC5BsD,EAAMtD,GAAyB,IAApB+wB,EAAIC,WAAWhxB,GAE5B,OAAOsD,CACT,CAqBA,MAAM2tB,GACJ,yBAAWC,GACT,OAAOxB,EAAOz1B,KAAM,iBAhBxB,WACE,MAAMk3B,EAAU,IAAIxwB,WAAW,GAG/B,OAFAwwB,EAAQ,GAAK,EAEQ,IADN,IAAIC,YAAYD,EAAQ/wB,OAAQ,EAAG,GACpC,EAChB,CAW0C8wB,GACxC,CACA,0BAAWG,GACT,OAAO3B,EAAOz1B,KAAM,kBAbxB,WACE,IAEE,OADA,IAAIF,SAAS,KACN,CACT,CAAE,MACA,OAAO,CACT,CACF,CAM2Cs3B,GACzC,CACA,qCAAWC,GACT,OAAO5B,EAAOz1B,KAAM,6BAAyD,oBAApBs3B,gBAC3D,CACA,kCAAWC,GACT,OAAO9B,EAAOz1B,KAAM,0BAAmD,oBAAjBw3B,aACxD,CACA,mBAAWC,GACT,MAAM,SACJA,EAAQ,UACRjpB,GACED,UACJ,OAAOknB,EAAOz1B,KAAM,WAAY,CAC9B03B,UAAWlpB,EAAU6B,SAAS,WAC9BsnB,QAASF,EAASpnB,SAAS,SAC3BunB,MAAOH,EAASpnB,SAAS,OACzBwnB,UAAWJ,EAASpnB,SAAS,OAC7BynB,UAAWtpB,EAAU6B,SAAS,YAElC,CACA,8BAAW0nB,GACT,OAAOtC,EAAOz1B,KAAM,sBAAuB6E,WAAWmzB,KAAKC,WAAW,4BACxE,EAEF,MAAMC,GAAappB,MAAMqR,KAAKrR,MAAM,KAAK/K,QAAQZ,GAAKA,EAAEpD,SAAS,IAAIo4B,SAAS,EAAG,OACjF,MAAMC,GACJ,mBAAOC,CAAaC,EAAGC,EAAGjd,GACxB,MAAO,IAAI4c,GAAWI,KAAKJ,GAAWK,KAAKL,GAAW5c,IACxD,CACA,kBAAOkd,CAAY9J,EAAW+J,GAC5B,IAAIpuB,EACAqkB,EAAU,IACRA,EAAU,GAAK,IACjBrkB,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,GAEdouB,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,GACnBA,EAAU,GAAK,IACjBrkB,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,GAEdouB,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,KAEvBrkB,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,EACZA,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,EACRqkB,EAAU,GAAK,IACjBrkB,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,GAEdouB,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,GACnBA,EAAU,GAAK,IACjBrkB,EAAOouB,EAAO,GACdA,EAAO,GAAKA,EAAO,GACnBA,EAAO,GAAKpuB,GAEdouB,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,IAEzB+J,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,GACvB+J,EAAO,IAAM/J,EAAU,EACzB,CACA,gBAAOA,CAAUgK,EAAIC,GACnB,MAAO,CAACD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAID,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAIA,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAAKC,EAAG,GAAKD,EAAG,GAChN,CACA,qBAAOE,CAAeC,EAAG5gB,EAAG6gB,EAAM,GAChC,MAAMC,EAAKF,EAAEC,GACPE,EAAKH,EAAEC,EAAM,GACnBD,EAAEC,GAAOC,EAAK9gB,EAAE,GAAK+gB,EAAK/gB,EAAE,GAAKA,EAAE,GACnC4gB,EAAEC,EAAM,GAAKC,EAAK9gB,EAAE,GAAK+gB,EAAK/gB,EAAE,GAAKA,EAAE,EACzC,CACA,6BAAOghB,CAAuBJ,EAAGnK,EAAWoK,EAAM,GAChD,MAAMI,EAAKxK,EAAU,GACfgK,EAAKhK,EAAU,GACfiK,EAAKjK,EAAU,GACfyK,EAAKzK,EAAU,GACf0K,EAAK1K,EAAU,GACf2K,EAAK3K,EAAU,GACrB,IAAK,IAAI3oB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC7B,MAAMuzB,EAAKT,EAAEC,EAAM/yB,GACbwzB,EAAMV,EAAEC,EAAM/yB,EAAI,GACxB8yB,EAAEC,EAAM/yB,GAAKuzB,EAAKJ,EAAKK,EAAMZ,EAAKS,EAClCP,EAAEC,EAAM/yB,EAAI,GAAKuzB,EAAKZ,EAAKa,EAAMJ,EAAKE,CACxC,CACF,CACA,4BAAOG,CAAsBX,EAAG5gB,GAC9B,MAAM8gB,EAAKF,EAAE,GACPG,EAAKH,EAAE,GACPY,EAAIxhB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC4gB,EAAE,IAAME,EAAK9gB,EAAE,GAAK+gB,EAAK/gB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMwhB,EAC7DZ,EAAE,KAAOE,EAAK9gB,EAAE,GAAK+gB,EAAK/gB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMwhB,CAChE,CACA,8BAAOC,CAAwBC,EAAMjL,EAAWkL,GAC9C,MAAMV,EAAKxK,EAAU,GACfgK,EAAKhK,EAAU,GACfiK,EAAKjK,EAAU,GACfyK,EAAKzK,EAAU,GACf0K,EAAK1K,EAAU,GACf2K,EAAK3K,EAAU,GACfmL,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAKL,EAAK,GAChB,IAAIM,EAAKf,EAAKW,EAAKT,EACfc,EAAKD,EACLE,EAAKjB,EAAKa,EAAKX,EACfgB,EAAKD,EACLE,EAAKlB,EAAKW,EAAKT,EACfiB,EAAKD,EACLE,EAAKpB,EAAKa,EAAKX,EACfmB,EAAKD,EACT,GAAW,IAAP7B,GAAmB,IAAPC,EAAU,CACxB,MAAM8B,EAAO/B,EAAKmB,EACZa,EAAOhC,EAAKqB,EACZY,EAAOhC,EAAKmB,EACZc,EAAOjC,EAAKqB,EAClBC,GAAMU,EACNP,GAAMO,EACNR,GAAMS,EACNV,GAAMU,EACNP,GAAMI,EACND,GAAMC,EACNF,GAAMG,EACNJ,GAAMI,CACR,CACAd,EAAO,GAAK72B,KAAKiG,IAAI4wB,EAAO,GAAIK,EAAIE,EAAID,EAAIE,GAC5CR,EAAO,GAAK72B,KAAKiG,IAAI4wB,EAAO,GAAIS,EAAIE,EAAID,EAAIE,GAC5CZ,EAAO,GAAK72B,KAAKkO,IAAI2oB,EAAO,GAAIK,EAAIE,EAAID,EAAIE,GAC5CR,EAAO,GAAK72B,KAAKkO,IAAI2oB,EAAO,GAAIS,EAAIE,EAAID,EAAIE,EAC9C,CACA,uBAAOK,CAAiB5iB,GACtB,MAAMwhB,EAAIxhB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,GACjC,MAAO,CAACA,EAAE,GAAKwhB,GAAIxhB,EAAE,GAAKwhB,GAAIxhB,EAAE,GAAKwhB,EAAGxhB,EAAE,GAAKwhB,GAAIxhB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMwhB,GAAIxhB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IAAMwhB,EACnH,CACA,oCAAOqB,CAA8BC,EAAQnB,GAC3C,MAAMV,EAAK6B,EAAO,GACZrC,EAAKqC,EAAO,GACZpC,EAAKoC,EAAO,GACZ5B,EAAK4B,EAAO,GACZ1f,EAAI6d,GAAM,EAAIR,GAAM,EACpBpd,EAAI4d,EAAKP,EAAKD,EAAKS,EACnBphB,EAAI4gB,GAAM,EAAIQ,GAAM,EACpB6B,GAAS3f,EAAItD,GAAK,EAClBkjB,EAASl4B,KAAKm4B,KAAKF,GAAS,GAAK3f,EAAItD,EAAIuD,GAAK,IACpDse,EAAO,GAAK72B,KAAKm4B,KAAKF,EAAQC,GAAU,GACxCrB,EAAO,GAAK72B,KAAKm4B,KAAKF,EAAQC,GAAU,EAC1C,CACA,oBAAOE,CAAcxB,GACnB,MAAMrB,EAAIqB,EAAKl7B,MAAM,GASrB,OARIk7B,EAAK,GAAKA,EAAK,KACjBrB,EAAE,GAAKqB,EAAK,GACZrB,EAAE,GAAKqB,EAAK,IAEVA,EAAK,GAAKA,EAAK,KACjBrB,EAAE,GAAKqB,EAAK,GACZrB,EAAE,GAAKqB,EAAK,IAEPrB,CACT,CACA,gBAAO8C,CAAUC,EAAOC,GACtB,MAAMC,EAAOx4B,KAAKkO,IAAIlO,KAAKiG,IAAIqyB,EAAM,GAAIA,EAAM,IAAKt4B,KAAKiG,IAAIsyB,EAAM,GAAIA,EAAM,KACvEE,EAAQz4B,KAAKiG,IAAIjG,KAAKkO,IAAIoqB,EAAM,GAAIA,EAAM,IAAKt4B,KAAKkO,IAAIqqB,EAAM,GAAIA,EAAM,KAC9E,GAAIC,EAAOC,EACT,OAAO,KAET,MAAMC,EAAO14B,KAAKkO,IAAIlO,KAAKiG,IAAIqyB,EAAM,GAAIA,EAAM,IAAKt4B,KAAKiG,IAAIsyB,EAAM,GAAIA,EAAM,KACvEI,EAAQ34B,KAAKiG,IAAIjG,KAAKkO,IAAIoqB,EAAM,GAAIA,EAAM,IAAKt4B,KAAKkO,IAAIqqB,EAAM,GAAIA,EAAM,KAC9E,OAAIG,EAAOC,EACF,KAEF,CAACH,EAAME,EAAMD,EAAOE,EAC7B,CACA,uBAAOC,CAAiBz4B,EAAG04B,EAAGnD,GAC5BA,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIv1B,GAChCu1B,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAImD,GAChCnD,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIv1B,GAChCu1B,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAImD,EAClC,CACA,sBAAOC,CAAgBC,EAAIC,EAAIC,EAAIC,EAAIxD,GACrCA,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIqD,EAAIE,GACpCvD,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIsD,EAAIE,GACpCxD,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIqD,EAAIE,GACpCvD,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIsD,EAAIE,EACtC,CACA,QAAO,CAAoBH,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAIC,EAAG7D,GAC5D,GAAI6D,GAAK,GAAKA,GAAK,EACjB,OAEF,MAAMC,EAAK,EAAID,EACTE,EAAKF,EAAIA,EACTG,EAAMD,EAAKF,EACXp5B,EAAIq5B,GAAMA,GAAMA,EAAKT,EAAK,EAAIQ,EAAIN,GAAM,EAAIQ,EAAKN,GAAMO,EAAMN,EAC7DP,EAAIW,GAAMA,GAAMA,EAAKR,EAAK,EAAIO,EAAIL,GAAM,EAAIO,EAAKJ,GAAMK,EAAMJ,EACnE5D,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIv1B,GAChCu1B,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAImD,GAChCnD,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIv1B,GAChCu1B,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAImD,EAClC,CACA,QAAO,CAAaE,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAIhhB,EAAGC,EAAGvD,EAAG0gB,GAC3D,GAAI11B,KAAK25B,IAAIrhB,GAAK,MAIhB,YAHItY,KAAK25B,IAAIphB,IAAM,OACjBtb,MAAK,EAAoB87B,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,GAAKtkB,EAAIuD,EAAGmd,IAIrE,MAAMkE,EAAQrhB,GAAK,EAAI,EAAIvD,EAAIsD,EAC/B,GAAIshB,EAAQ,EACV,OAEF,MAAMC,EAAY75B,KAAKm4B,KAAKyB,GACtBzC,EAAK,EAAI7e,EACfrb,MAAK,EAAoB87B,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,IAAM/gB,EAAIshB,GAAa1C,EAAIzB,GAChFz4B,MAAK,EAAoB87B,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,IAAM/gB,EAAIshB,GAAa1C,EAAIzB,EAClF,CACA,wBAAOoE,CAAkBf,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAID,EAAIE,EAAI5D,GACvDA,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIqD,EAAIK,GACpC1D,EAAO,GAAK11B,KAAKiG,IAAIyvB,EAAO,GAAIsD,EAAIM,GACpC5D,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIqD,EAAIK,GACpC1D,EAAO,GAAK11B,KAAKkO,IAAIwnB,EAAO,GAAIsD,EAAIM,GACpCr8B,MAAK,EAAa87B,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAI,GAAW,GAAKL,EAAKE,GAAfJ,EAAqBK,GAAK,GAAKL,EAAK,EAAIE,EAAKE,GAAK,GAAKF,EAAKF,GAAKrD,GACzHz4B,MAAK,EAAa87B,EAAIE,EAAIE,EAAIC,EAAIJ,EAAIE,EAAIG,EAAIC,EAAI,GAAW,GAAKJ,EAAKG,GAAfL,EAAqBM,GAAK,GAAKN,EAAK,EAAIE,EAAKG,GAAK,GAAKH,EAAKF,GAAKtD,EAC3H,EAoEF,IAAIqE,GAAiB,KACjBC,GAAmB,KACvB,SAASC,GAAiBlG,GAKxB,OAJKgG,KACHA,GAAiB,2UACjBC,GAAmB,IAAIE,IAAI,CAAC,CAAC,IAAK,SAE7BnG,EAAIoG,WAAWJ,IAAgB,CAACK,EAAGnE,EAAIoE,IAAOpE,EAAKA,EAAGzrB,UAAU,QAAUwvB,GAAiB5+B,IAAIi/B,IACxG,CACA,SAASC,KACP,GAAiC,mBAAtBC,OAAOC,WAChB,OAAOD,OAAOC,aAEhB,MAAMC,EAAM,IAAI92B,WAAW,IAE3B,OADA42B,OAAOG,gBAAgBD,GAChBhH,GAAcgH,EACvB,CACA,MAAME,GAAmB,qBAgDzB,SAASC,GAAU/oB,EAAG5L,EAAKiI,GACzB,OAAOlO,KAAKiG,IAAIjG,KAAKkO,IAAI2D,EAAG5L,GAAMiI,EACpC,CAOA,SAAS2sB,GAAaC,GACpB,OAAIn3B,WAAWjH,UAAUgpB,SAChBoV,EAAIpV,WAENqV,KAAKtH,GAAcqH,GAC5B,CAO+B,mBAApB96B,KAAKg7B,aACdh7B,KAAKg7B,WAAa,SAAUC,GAC1B,OAAOA,EAAQvc,QAAO,CAACpG,EAAGC,IAAMD,EAAIC,GAAG,EACzC,GAE6B,mBAApB2iB,YAAYC,MACrBD,YAAYC,IAAM,SAAUlyB,GAC1B,MAAMmyB,EAAK,IAAIC,iBACT,OACJC,GACEF,EACJ,IAAK,MAAMrmB,KAAK9L,EACd,GAAI8L,EAAEwmB,QAEJ,OADAH,EAAGI,MAAMzmB,EAAE0mB,QACJH,EAGX,IAAK,MAAMvmB,KAAK9L,EACd8L,EAAE2mB,iBAAiB,SAAS,KAC1BN,EAAGI,MAAMzmB,EAAE0mB,OAAO,GACjB,CACDH,WAGJ,OAAOA,CACT,GAIoB,EAAoB,MAEV,EAAoB,MAEzB,EAAoB,MAElB,EAAoB,MAEhB,EAAoB,MAExB,EAAoB,MAElB,EAAoB,MAEd,EAAoB,MAEnC,EAAoB,MAEP,EAAoB,MAEvB,EAAoB,MAEnB,EAAoB,MAE9B,EAAoB,MAEnB,EAAoB,MAErB,EAAoB,MAEnB,EAAoB,MAU5C,MAAMK,GAAS,6BACf,MAAMC,GACJC,WAAa,GACbA,WAAa,GACbA,wBAA0B5+B,KAAKg4B,IAAMh4B,KAAK6+B,IAE5CC,eAAeC,GAAUpjB,EAAKhW,EAAO,QACnC,GAAIq5B,GAAgBrjB,EAAK/Q,SAASq0B,SAAU,CAC1C,MAAMC,QAAiBC,MAAMxjB,GAC7B,IAAKujB,EAASE,GACZ,MAAM,IAAI/oB,MAAM6oB,EAASG,YAE3B,OAAQ15B,GACN,IAAK,cACH,OAAOu5B,EAASnkB,cAClB,IAAK,OACH,OAAOmkB,EAASI,OAClB,IAAK,OACH,OAAOJ,EAASK,OAEpB,OAAOL,EAAS9a,MAClB,CACA,OAAO,IAAIjd,SAAQ,CAACQ,EAASD,KAC3B,MAAM83B,EAAU,IAAIC,eACpBD,EAAQr0B,KAAK,MAAOwQ,GAAK,GACzB6jB,EAAQE,aAAe/5B,EACvB65B,EAAQG,mBAAqB,KAC3B,GAAIH,EAAQI,aAAeH,eAAeI,KAG1C,GAAuB,MAAnBL,EAAQpJ,QAAqC,IAAnBoJ,EAAQpJ,OAWtC1uB,EAAO,IAAI2O,MAAMmpB,EAAQH,iBAXzB,CACE,OAAQ15B,GACN,IAAK,cACL,IAAK,OACL,IAAK,OAEH,YADAgC,EAAQ63B,EAAQN,UAGpBv3B,EAAQ63B,EAAQM,aAElB,CACqC,EAEvCN,EAAQO,KAAK,KAAK,GAEtB,CACA,MAAMC,GACJ,WAAAzgC,EAAY,QACV0gC,EAAO,SACPC,EAAQ,MACRC,EAAK,SACLC,EAAQ,QACRC,EAAU,EAAC,QACXC,EAAU,EAAC,SACXC,GAAW,IAEXvgC,KAAKigC,QAAUA,EACfjgC,KAAKkgC,SAAWA,EAChBlgC,KAAKmgC,MAAQA,EACbngC,KAAKogC,SAAWA,EAChBpgC,KAAKqgC,QAAUA,EACfrgC,KAAKsgC,QAAUA,EACfH,GAASD,EACT,MAAMM,GAAWP,EAAQ,GAAKA,EAAQ,IAAM,EACtCQ,GAAWR,EAAQ,GAAKA,EAAQ,IAAM,EAC5C,IAAIS,EAASC,EAASC,EAASC,EAqC3BC,EAAeC,EACfC,EAAOC,EAjCX,QAJAb,GAAY,KACG,IACbA,GAAY,KAENA,GACN,KAAK,IACHM,GAAW,EACXC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,KAAK,GACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,EAAU,EACV,MACF,KAAK,IACHH,EAAU,EACVC,GAAW,EACXC,GAAW,EACXC,EAAU,EACV,MACF,KAAK,EACHH,EAAU,EACVC,EAAU,EACVC,EAAU,EACVC,GAAW,EACX,MACF,QACE,MAAM,IAAIxqB,MAAM,qEAEhBkqB,IACFK,GAAWA,EACXC,GAAWA,GAIG,IAAZH,GACFI,EAAgB/9B,KAAK25B,IAAI+D,EAAUR,EAAQ,IAAME,EAAQE,EACzDU,EAAgBh+B,KAAK25B,IAAI8D,EAAUP,EAAQ,IAAME,EAAQG,EACzDU,GAASf,EAAQ,GAAKA,EAAQ,IAAME,EACpCc,GAAUhB,EAAQ,GAAKA,EAAQ,IAAME,IAErCW,EAAgB/9B,KAAK25B,IAAI8D,EAAUP,EAAQ,IAAME,EAAQE,EACzDU,EAAgBh+B,KAAK25B,IAAI+D,EAAUR,EAAQ,IAAME,EAAQG,EACzDU,GAASf,EAAQ,GAAKA,EAAQ,IAAME,EACpCc,GAAUhB,EAAQ,GAAKA,EAAQ,IAAME,GAEvCngC,KAAK0uB,UAAY,CAACgS,EAAUP,EAAOQ,EAAUR,EAAOS,EAAUT,EAAOU,EAAUV,EAAOW,EAAgBJ,EAAUP,EAAQK,EAAUI,EAAUT,EAAQM,EAASM,EAAgBJ,EAAUR,EAAQK,EAAUK,EAAUV,EAAQM,GAC3NzgC,KAAKghC,MAAQA,EACbhhC,KAAKihC,OAASA,CAChB,CACA,WAAIC,GACF,MAAMC,EAAOnhC,KAAKigC,QAClB,OAAOxK,EAAOz1B,KAAM,UAAW,CAC7BohC,UAAWD,EAAK,GAAKA,EAAK,GAC1BE,WAAYF,EAAK,GAAKA,EAAK,GAC3BG,MAAOH,EAAK,GACZI,MAAOJ,EAAK,IAEhB,CACA,KAAA96B,EAAM,MACJ85B,EAAQngC,KAAKmgC,MAAK,SAClBC,EAAWpgC,KAAKogC,SAAQ,QACxBC,EAAUrgC,KAAKqgC,QAAO,QACtBC,EAAUtgC,KAAKsgC,QAAO,SACtBC,GAAW,GACT,CAAC,GACH,OAAO,IAAIP,GAAa,CACtBC,QAASjgC,KAAKigC,QAAQxhC,QACtByhC,SAAUlgC,KAAKkgC,SACfC,QACAC,WACAC,UACAC,UACAC,YAEJ,CACA,sBAAAiB,CAAuBt+B,EAAG04B,GACxB,MAAM/C,EAAI,CAAC31B,EAAG04B,GAEd,OADAxD,GAAKQ,eAAeC,EAAG74B,KAAK0uB,WACrBmK,CACT,CACA,0BAAA4I,CAA2B9H,GACzB,MAAM+H,EAAU,CAAC/H,EAAK,GAAIA,EAAK,IAC/BvB,GAAKQ,eAAe8I,EAAS1hC,KAAK0uB,WAClC,MAAMiT,EAAc,CAAChI,EAAK,GAAIA,EAAK,IAEnC,OADAvB,GAAKQ,eAAe+I,EAAa3hC,KAAK0uB,WAC/B,CAACgT,EAAQ,GAAIA,EAAQ,GAAIC,EAAY,GAAIA,EAAY,GAC9D,CACA,iBAAAC,CAAkB1+B,EAAG04B,GACnB,MAAM/C,EAAI,CAAC31B,EAAG04B,GAEd,OADAxD,GAAKoB,sBAAsBX,EAAG74B,KAAK0uB,WAC5BmK,CACT,EAEF,MAAMgJ,WAAoCjM,EACxC,WAAAr2B,CAAY60B,EAAK0N,EAAa,GAC5B/L,MAAM3B,EAAK,+BACXp0B,KAAK8hC,WAAaA,CACpB,EAEF,SAASC,GAAapmB,GACpB,MAAMqmB,EAAKrmB,EAAIne,OACf,IAAIuI,EAAI,EACR,KAAOA,EAAIi8B,GAAwB,KAAlBrmB,EAAI5V,GAAGk8B,QACtBl8B,IAEF,MAAiD,UAA1C4V,EAAIumB,UAAUn8B,EAAGA,EAAI,GAAG2H,aACjC,CACA,SAASy0B,GAAUC,GACjB,MAA2B,iBAAbA,GAAyB,UAAU//B,KAAK+/B,EACxD,CACA,SAASC,GAAmB1mB,GAE1B,OADCA,GAAOA,EAAI5c,MAAM,OAAQ,GACnB4c,EAAIumB,UAAUvmB,EAAI2mB,YAAY,KAAO,EAC9C,CACA,SAASC,GAAsB5mB,EAAK6mB,EAAkB,gBACpD,GAAmB,iBAAR7mB,EACT,OAAO6mB,EAET,GAAIT,GAAapmB,GAEf,OADA4Y,EAAK,sEACEiO,EAET,MAmBMC,EAnBS7mB,KACb,IACE,OAAO,IAAIH,IAAIG,EACjB,CAAE,MACA,IACE,OAAO,IAAIH,IAAIwZ,mBAAmBrZ,GACpC,CAAE,MACA,IACE,OAAO,IAAIH,IAAIG,EAAW,kBAC5B,CAAE,MACA,IACE,OAAO,IAAIH,IAAIwZ,mBAAmBrZ,GAAY,kBAChD,CAAE,MACA,OAAO,IACT,CACF,CACF,CACF,GAEa8mB,CAAO/mB,GACtB,IAAK8mB,EACH,OAAOD,EAET,MAAMG,EAAS1jC,IACb,IACE,IAAI2jC,EAAU3N,mBAAmBh2B,GACjC,OAAI2jC,EAAQvyB,SAAS,MACnBuyB,EAAUA,EAAQ7jC,MAAM,KAAKgiB,IAAI,GAC7B6hB,EAAQvgC,KAAK,YACRugC,EAEF3jC,GAEF2jC,CACT,CAAE,MACA,OAAO3jC,CACT,GAEI4jC,EAAW,UACXT,EAAWK,EAAOnkB,SAASvf,MAAM,KAAKgiB,IAAI,GAChD,GAAI8hB,EAASxgC,KAAK+/B,GAChB,OAAOO,EAAOP,GAEhB,GAAIK,EAAOrkB,aAAavO,KAAO,EAAG,CAChC,MAAMkP,EAASjQ,MAAMqR,KAAKsiB,EAAOrkB,aAAaW,UAAU+jB,UACxD,IAAK,MAAMjkC,KAASkgB,EAClB,GAAI8jB,EAASxgC,KAAKxD,GAChB,OAAO8jC,EAAO9jC,GAGlB,MAAMkF,EAAO+K,MAAMqR,KAAKsiB,EAAOrkB,aAAara,QAAQ++B,UACpD,IAAK,MAAMp6B,KAAO3E,EAChB,GAAI8+B,EAASxgC,KAAKqG,GAChB,OAAOi6B,EAAOj6B,EAGpB,CACA,GAAI+5B,EAAO7jB,KAAM,CACf,MACMmkB,EADa,gCACa9+B,KAAKw+B,EAAO7jB,MAC5C,GAAImkB,EACF,OAAOJ,EAAOI,EAAa,GAE/B,CACA,OAAOP,CACT,CACA,MAAMQ,GACJC,QAAU1kC,OAAO6M,OAAO,MACxB83B,MAAQ,GACR,IAAAC,CAAKlkC,GACCA,KAAQe,KAAKijC,SACf1O,EAAK,gCAAgCt1B,KAEvCe,KAAKijC,QAAQhkC,GAAQmkC,KAAKC,KAC5B,CACA,OAAAC,CAAQrkC,GACAA,KAAQe,KAAKijC,SACjB1O,EAAK,kCAAkCt1B,KAEzCe,KAAKkjC,MAAM36B,KAAK,CACdtJ,OACAukB,MAAOxjB,KAAKijC,QAAQhkC,GACpBsiB,IAAK6hB,KAAKC,eAELrjC,KAAKijC,QAAQhkC,EACtB,CACA,QAAAc,GACE,MAAMwjC,EAAS,GACf,IAAIC,EAAU,EACd,IAAK,MAAM,KACTvkC,KACGe,KAAKkjC,MACRM,EAAUzgC,KAAKkO,IAAIhS,EAAKzB,OAAQgmC,GAElC,IAAK,MAAM,KACTvkC,EAAI,MACJukB,EAAK,IACLjC,KACGvhB,KAAKkjC,MACRK,EAAOh7B,KAAK,GAAGtJ,EAAKwkC,OAAOD,MAAYjiB,EAAMiC,SAE/C,OAAO+f,EAAO5kC,KAAK,GACrB,EAEF,SAASqgC,GAAgBrjB,EAAKiZ,GAC5B,MAAMY,EAAMZ,EAAUnZ,IAAIC,MAAMC,EAAKiZ,GAAWnZ,IAAIC,MAAMC,GAC1D,MAAyB,UAAlB6Z,GAAKJ,UAA0C,WAAlBI,GAAKJ,QAC3C,CACA,SAASsO,GAActzB,GACrBA,EAAEuzB,gBACJ,CACA,SAASC,GAAUxzB,GACjBA,EAAEuzB,iBACFvzB,EAAEyzB,iBACJ,CAIA,MAAMC,GACJlF,SACA,mBAAOmF,CAAan3B,GAClB,IAAKA,GAA0B,iBAAVA,EACnB,OAAO,KAET5M,MAAK,IAAW,IAAIgkC,OAAO,4FAC3B,MAAMC,EAAUjkC,MAAK,EAAOiE,KAAK2I,GACjC,IAAKq3B,EACH,OAAO,KAET,MAAMC,EAAOn7B,SAASk7B,EAAQ,GAAI,IAClC,IAAIE,EAAQp7B,SAASk7B,EAAQ,GAAI,IACjCE,EAAQA,GAAS,GAAKA,GAAS,GAAKA,EAAQ,EAAI,EAChD,IAAIC,EAAMr7B,SAASk7B,EAAQ,GAAI,IAC/BG,EAAMA,GAAO,GAAKA,GAAO,GAAKA,EAAM,EACpC,IAAIC,EAAOt7B,SAASk7B,EAAQ,GAAI,IAChCI,EAAOA,GAAQ,GAAKA,GAAQ,GAAKA,EAAO,EACxC,IAAIC,EAASv7B,SAASk7B,EAAQ,GAAI,IAClCK,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,IAAIrJ,EAASlyB,SAASk7B,EAAQ,GAAI,IAClChJ,EAASA,GAAU,GAAKA,GAAU,GAAKA,EAAS,EAChD,MAAMsJ,EAAwBN,EAAQ,IAAM,IAC5C,IAAIO,EAAaz7B,SAASk7B,EAAQ,GAAI,IACtCO,EAAaA,GAAc,GAAKA,GAAc,GAAKA,EAAa,EAChE,IAAIC,EAAe17B,SAASk7B,EAAQ,GAAI,KAAO,EAS/C,OARAQ,EAAeA,GAAgB,GAAKA,GAAgB,GAAKA,EAAe,EAC1C,MAA1BF,GACFF,GAAQG,EACRF,GAAUG,GACyB,MAA1BF,IACTF,GAAQG,EACRF,GAAUG,GAEL,IAAIrB,KAAKA,KAAKsB,IAAIR,EAAMC,EAAOC,EAAKC,EAAMC,EAAQrJ,GAC3D,EAEF,SAAS0J,GAAmBC,GAAS,MACnCzE,EAAQ,EAAC,SACTC,EAAW,IAEX,MAAM,MACJY,EAAK,OACLC,GACE2D,EAAQC,WAAW/5B,MACjBm1B,EAAU,CAAC,EAAG,EAAGl3B,SAASi4B,GAAQj4B,SAASk4B,IACjD,OAAO,IAAIjB,GAAa,CACtBC,UACAC,SAAU,EACVC,QACAC,YAEJ,CACA,SAAS0E,GAAOC,GACd,GAAIA,EAAMjQ,WAAW,KAAM,CACzB,MAAMkQ,EAAWj8B,SAASg8B,EAAMtmC,MAAM,GAAI,IAC1C,MAAO,EAAa,SAAXumC,IAAwB,IAAgB,MAAXA,IAAwB,EAAc,IAAXA,EACnE,CACA,OAAID,EAAMjQ,WAAW,QACZiQ,EAAMtmC,MAAM,GAAI,GAAGM,MAAM,KAAKoJ,KAAIjF,GAAK6F,SAAS7F,KAErD6hC,EAAMjQ,WAAW,SACZiQ,EAAMtmC,MAAM,GAAI,GAAGM,MAAM,KAAKoJ,KAAIjF,GAAK6F,SAAS7F,KAAIzE,MAAM,EAAG,IAEtE81B,EAAK,8BAA8BwQ,MAC5B,CAAC,EAAG,EAAG,GAChB,CAaA,SAASE,GAAoBC,GAC3B,MAAM,EACJ7pB,EAAC,EACDC,EAAC,EACDvD,EAAC,EACD0hB,EAAC,EACDrpB,EAAC,EACD3I,GACEy9B,EAAIC,eACR,MAAO,CAAC9pB,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,EACzB,CACA,SAAS29B,GAA2BF,GAClC,MAAM,EACJ7pB,EAAC,EACDC,EAAC,EACDvD,EAAC,EACD0hB,EAAC,EACDrpB,EAAC,EACD3I,GACEy9B,EAAIC,eAAeE,aACvB,MAAO,CAAChqB,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,EACzB,CACA,SAAS69B,GAAmBC,EAAKC,EAAUC,GAAW,EAAOC,GAAa,GACxE,GAAIF,aAAoBxF,GAAc,CACpC,MAAM,UACJoB,EAAS,WACTC,GACEmE,EAAStE,SACP,MACJp2B,GACEy6B,EACEI,EAAW3O,GAAiBe,oBAC5B6N,EAAI,+BAA+BxE,MACvCyE,EAAI,+BAA+BxE,MAC/ByE,EAAWH,EAAW,eAAeC,2BAA6B,QAAQA,KAC9EG,EAAYJ,EAAW,eAAeE,2BAA6B,QAAQA,KACxEJ,GAAYD,EAASpF,SAAW,KAAQ,GAI3Ct1B,EAAMk2B,MAAQ+E,EACdj7B,EAAMm2B,OAAS6E,IAJfh7B,EAAMk2B,MAAQ8E,EACdh7B,EAAMm2B,OAAS8E,EAKnB,CACIL,GACFH,EAAIS,aAAa,qBAAsBR,EAASpF,SAEpD,CACA,MAAM6F,GACJ,WAAA1mC,GACE,MAAM,WACJ2mC,GACED,GACJjmC,KAAKmmC,GAAKD,EACVlmC,KAAKomC,GAAKF,CACZ,CACA,UAAIG,GACF,OAAmB,IAAZrmC,KAAKmmC,IAAwB,IAAZnmC,KAAKomC,EAC/B,CACA,aAAIE,GACF,OAAOtmC,KAAKmmC,KAAOnmC,KAAKomC,EAC1B,CACA,WAAAG,CAAYvF,EAAOC,EAAQuF,EAAWC,EAAQC,GAAgB,GAC5D,IAAIC,EAAenwB,IACjBowB,EAAgBpwB,IAChBqwB,EAAiBrwB,KACnBgwB,EAAYP,GAAYa,UAAUN,EAAWE,IAC7B,IACdC,EAAe5jC,KAAKm4B,KAAKsL,GAAaxF,EAAQC,MAEhC,IAAZwF,IACFG,EAAgBH,EAASzF,EACzB6F,EAAiBJ,EAASxF,GAE5B,MAAM8F,EAAWhkC,KAAKiG,IAAI29B,EAAcC,EAAeC,GACvD,OAAI7mC,KAAKmmC,GAAKY,GAAY/mC,KAAKomC,GAAKW,KAClC/mC,KAAKmmC,GAAKY,EACV/mC,KAAKomC,GAAKW,GACH,EAGX,CACA,qBAAWb,GACT,OAAOrhC,WAAWmiC,kBAAoB,CACxC,CACA,gBAAOF,CAAUN,EAAWE,GAC1B,GAAIA,GAAiB,EAAG,CACtB,MAAMO,EAAYlkC,KAAKD,KAAKqP,OAAO+0B,OAAOC,WAAah1B,OAAO+0B,OAAOE,YAAcpnC,KAAKkmC,YAAc,GAAK,EAAIQ,EAAgB,MAC/H,OAAOF,EAAY,EAAIzjC,KAAKiG,IAAIw9B,EAAWS,GAAaA,CAC1D,CACA,OAAOT,CACT,EAEF,MAAMa,GAA0B,CAAC,aAAc,aAAc,YAAa,YAAa,aAAc,YAAa,gBAAiB,aAAc,gBAIjJ,MAAMC,GACJ,GAAW,KACX,GAAe,KACf,GACA,GAAW,KACX,GAAW,KACX,GAA8B,KAC9B1I,SAAqB,KACrB,WAAAr/B,CAAYgoC,GACVvnC,MAAK,EAAUunC,EACfD,IAAc,IAAgB/oC,OAAOipC,OAAO,CAC1CC,SAAU,sCACVC,UAAW,uCACXC,IAAK,iCACLC,MAAO,mCACPC,UAAW,wCAEf,CACA,MAAAC,GACE,MAAMC,EAAc/nC,MAAK,EAAW4K,SAAS0G,cAAc,OAC3Dy2B,EAAYC,UAAUv3B,IAAI,cAAe,UACzCs3B,EAAY/B,aAAa,OAAQ,WACjC,MAAM3H,EAASr+B,MAAK,EAAQioC,WAAWC,QACvCH,EAAYtJ,iBAAiB,cAAeiF,GAAe,CACzDrF,WAEF0J,EAAYtJ,iBAAiB,cAAe6I,IAAc,EAAc,CACtEjJ,WAEF,MAAM8J,EAAUnoC,MAAK,EAAW4K,SAAS0G,cAAc,OACvD62B,EAAQC,UAAY,UACpBL,EAAYzzB,OAAO6zB,GACnB,MAAME,EAAWroC,MAAK,EAAQsoC,gBAC9B,GAAID,EAAU,CACZ,MAAM,MACJv9B,GACEi9B,EACE7kC,EAA0C,QAAtClD,MAAK,EAAQioC,WAAWM,UAAsB,EAAIF,EAAS,GAAKA,EAAS,GACnFv9B,EAAM09B,eAAoB,IAAMtlC,EAAT,IACvB4H,EAAM29B,IAAM,QAAQ,IAAMJ,EAAS,0CACrC,CACA,OAAON,CACT,CACA,OAAIxC,GACF,OAAOvlC,MAAK,CACd,CACA,QAAO,CAAaoQ,GAClBA,EAAEyzB,iBACJ,CACA,GAASzzB,GACPpQ,MAAK,EAAQ0oC,qBAAsB,EACnC9E,GAAUxzB,EACZ,CACA,GAAUA,GACRpQ,MAAK,EAAQ0oC,qBAAsB,EACnC9E,GAAUxzB,EACZ,CACA,GAAuBu4B,GACrB,MAAMtK,EAASr+B,MAAK,EAAQioC,WAAWC,QACvCS,EAAQlK,iBAAiB,UAAWz+B,MAAK,EAASsC,KAAKtC,MAAO,CAC5D4oC,SAAS,EACTvK,WAEFsK,EAAQlK,iBAAiB,WAAYz+B,MAAK,EAAUsC,KAAKtC,MAAO,CAC9D4oC,SAAS,EACTvK,WAEFsK,EAAQlK,iBAAiB,cAAeiF,GAAe,CACrDrF,UAEJ,CACA,IAAAwK,GACE7oC,MAAK,EAASgoC,UAAUv3B,IAAI,UAC5BzQ,MAAK,GAAc8oC,cACrB,CACA,IAAAC,GACE/oC,MAAK,EAASgoC,UAAU/3B,OAAO,UAC/BjQ,MAAK,GAAUgpC,OACjB,CACA,eAAAC,GACE,MAAM,WACJC,EAAU,WACVjB,GACEjoC,MAAK,EACHmpC,EAASv+B,SAAS0G,cAAc,UACtC63B,EAAOf,UAAY,SACnBe,EAAOC,SAAW,EAClBD,EAAOnD,aAAa,eAAgBsB,IAAc,EAAY4B,IAC9DlpC,MAAK,EAAuBmpC,GAC5BA,EAAO1K,iBAAiB,SAASruB,IAC/B63B,EAAWoB,QAAQ,GAClB,CACDhL,OAAQ4J,EAAWC,UAErBloC,MAAK,EAASsU,OAAO60B,EACvB,CACA,KAAI,GACF,MAAMG,EAAU1+B,SAAS0G,cAAc,OAEvC,OADAg4B,EAAQlB,UAAY,UACbkB,CACT,CACA,gBAAMC,CAAWC,GACf,MAAML,QAAeK,EAAQ1B,SAC7B9nC,MAAK,EAAuBmpC,GAC5BnpC,MAAK,EAASsU,OAAO60B,EAAQnpC,MAAK,GAClCA,MAAK,EAAWwpC,CAClB,CACA,cAAAC,CAAeC,GACb1pC,MAAK,EAAe0pC,EACpB,MAAMP,EAASO,EAAYC,eAC3B3pC,MAAK,EAAuBmpC,GAC5BnpC,MAAK,EAASsU,OAAO60B,EAAQnpC,MAAK,EACpC,CACA,4BAAM4pC,CAAuBC,GAC3B,MAAMV,EAASnpC,MAAK,QAAoC6pC,EAAiBC,iBAAiB9pC,MAAK,GAC/FA,MAAK,EAAuBmpC,GAC5BnpC,MAAK,EAASsU,OAAO60B,EAAQnpC,MAAK,EACpC,CACA,eAAM+pC,CAAU9qC,EAAM+qC,GACpB,OAAQ/qC,GACN,IAAK,cACHe,KAAKypC,eAAeO,GACpB,MACF,IAAK,gBACGhqC,KAAKupC,WAAWS,GACtB,MACF,IAAK,sBACGhqC,KAAK4pC,uBAAuBI,GAClC,MACF,IAAK,SACHhqC,KAAKipC,kBAGX,CACA,yBAAAgB,CAA0BC,GACpBlqC,MAAK,IACPA,MAAK,EAA4BmqC,MAAQD,EAE7C,CACA,MAAAj6B,GACEjQ,MAAK,EAASiQ,SACdjQ,MAAK,GAAcoqC,UACnBpqC,MAAK,EAAe,IACtB,EAEF,MAAMqqC,GACJ,GAAW,KACX,GAAW,KACX,GACA,WAAA9qC,CAAY+qC,GACVtqC,MAAK,EAAasqC,CACpB,CACA,KACE,MAAMvC,EAAc/nC,MAAK,EAAW4K,SAAS0G,cAAc,OAC3Dy2B,EAAYK,UAAY,cACxBL,EAAY/B,aAAa,OAAQ,WACjC+B,EAAYtJ,iBAAiB,cAAeiF,GAAe,CACzDrF,OAAQr+B,MAAK,EAAWkoC,UAE1B,MAAMC,EAAUnoC,MAAK,EAAW4K,SAAS0G,cAAc,OAIvD,OAHA62B,EAAQC,UAAY,UACpBL,EAAYzzB,OAAO6zB,GACnBnoC,MAAK,IACE+nC,CACT,CACA,GAAcwC,EAAOC,GACnB,IAAIC,EAAQ,EACRC,EAAQ,EACZ,IAAK,MAAMC,KAAOJ,EAAO,CACvB,MAAM3O,EAAI+O,EAAI/O,EAAI+O,EAAI1J,OACtB,GAAIrF,EAAI6O,EACN,SAEF,MAAMvnC,EAAIynC,EAAIznC,GAAKsnC,EAAQG,EAAI3J,MAAQ,GACnCpF,EAAI6O,GACNC,EAAQxnC,EACRunC,EAAQ7O,GAGN4O,EACEtnC,EAAIwnC,IACNA,EAAQxnC,GAEDA,EAAIwnC,IACbA,EAAQxnC,EAEZ,CACA,MAAO,CAACsnC,EAAQ,EAAIE,EAAQA,EAAOD,EACrC,CACA,IAAA1B,CAAK6B,EAAQL,EAAOC,GAClB,MAAOtnC,EAAG04B,GAAK57B,MAAK,EAAcuqC,EAAOC,IACnC,MACJ1/B,GACE9K,MAAK,IAAaA,MAAK,IAC3B4qC,EAAOt2B,OAAOtU,MAAK,GACnB8K,EAAM09B,eAAoB,IAAMtlC,EAAT,IACvB4H,EAAM29B,IAAM,QAAQ,IAAM7M,yCAC5B,CACA,IAAAiN,GACE7oC,MAAK,EAASiQ,QAChB,CACA,KACE,MAAMk5B,EAASv+B,SAAS0G,cAAc,UACtC63B,EAAOf,UAAY,kBACnBe,EAAOC,SAAW,EAClBD,EAAOnD,aAAa,eAAgB,oCACpC,MAAM6E,EAAOjgC,SAAS0G,cAAc,QACpC63B,EAAO70B,OAAOu2B,GACdA,EAAKzC,UAAY,iBACjByC,EAAK7E,aAAa,eAAgB,yCAClC,MAAM3H,EAASr+B,MAAK,EAAWkoC,QAC/BiB,EAAO1K,iBAAiB,cAAeiF,GAAe,CACpDrF,WAEF8K,EAAO1K,iBAAiB,SAAS,KAC/Bz+B,MAAK,EAAW8qC,mBAAmB,kBAAkB,GACpD,CACDzM,WAEFr+B,MAAK,EAASsU,OAAO60B,EACvB,EAyBF,SAAS4B,GAAW3iC,EAAKugC,EAASlgC,GAChC,IAAK,MAAMxJ,KAAQwJ,EACjBkgC,EAAQlK,iBAAiBx/B,EAAMmJ,EAAInJ,GAAMqD,KAAK8F,GAElD,CACA,MAAM4iC,GACJ,GAAM,EACN,MAAIx7B,GACF,MAAO,GAAGqa,IAAyB7pB,MAAK,KAC1C,EAEF,MAAMirC,GACJ,GAAU5N,KACV,GAAM,EACN,GAAS,KACT,8BAAW6N,GACT,MAEMhG,EADS,IAAI5N,gBAAgB,EAAG,GACnB6T,WAAW,KAAM,CAClCC,oBAAoB,IAEhBC,EAAQ,IAAIC,MAClBD,EAAMpgC,IANM,uKAWZ,OAAOwqB,EAAOz1B,KAAM,sBAJJqrC,EAAM1I,SAAS4I,MAAK,KAClCrG,EAAIsG,UAAUH,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC8B,IAAjE,IAAIlU,YAAY+N,EAAIuG,aAAa,EAAG,EAAG,EAAG,GAAGn+B,KAAKnH,QAAQ,MAGrE,CACA,OAAM,CAAKuC,EAAKgjC,GACd1rC,MAAK,IAAW,IAAIi9B,IACpB,IAAI3vB,EAAOtN,MAAK,EAAO7B,IAAIuK,GAC3B,GAAa,OAAT4E,EACF,OAAO,KAET,GAAIA,GAAM0Q,OAER,OADA1Q,EAAKq+B,YAAc,EACZr+B,EAET,IAOE,IAAI+9B,EASJ,GAfA/9B,IAAS,CACP0Q,OAAQ,KACRxO,GAAI,SAASxP,MAAK,KAAWA,MAAK,MAClC2rC,WAAY,EACZC,OAAO,GAGc,iBAAZF,GACTp+B,EAAKqO,IAAM+vB,EACXL,QAActM,GAAU2M,EAAS,SACxBA,aAAmBG,KAC5BR,EAAQ/9B,EAAKw+B,KAAOJ,EACXA,aAAmBK,OAC5BV,EAAQK,GAES,kBAAfL,EAAM1lC,KAA0B,CAClC,MAAMqmC,EAA+Bf,GAAaC,oBAC5Ce,EAAa,IAAIC,WACjBC,EAAe,IAAIb,MACnBc,EAAe,IAAIjlC,SAAQ,CAACQ,EAASD,KACzCykC,EAAaE,OAAS,KACpB/+B,EAAK0Q,OAASmuB,EACd7+B,EAAKs+B,OAAQ,EACbjkC,GAAS,EAEXskC,EAAWI,OAASvN,UAClB,MAAMnjB,EAAMrO,EAAKg/B,OAASL,EAAWrrC,OACrCurC,EAAalhC,UAAa+gC,EAAgC,GAAGrwB,uCAA2CA,CAAG,EAE7GwwB,EAAaI,QAAUN,EAAWM,QAAU7kC,CAAM,IAEpDukC,EAAWO,cAAcnB,SACnBe,CACR,MACE9+B,EAAK0Q,aAAeyuB,kBAAkBpB,GAExC/9B,EAAKq+B,WAAa,CACpB,CAAE,MAAOv7B,GACPmkB,EAAKnkB,GACL9C,EAAO,IACT,CAKA,OAJAtN,MAAK,EAAO0E,IAAIgE,EAAK4E,GACjBA,GACFtN,MAAK,EAAO0E,IAAI4I,EAAKkC,GAAIlC,GAEpBA,CACT,CACA,iBAAMo/B,CAAYZ,GAChB,MAAM,aACJa,EAAY,KACZ1tC,EAAI,KACJ4Q,EAAI,KACJlK,GACEmmC,EACJ,OAAO9rC,MAAK,EAAK,GAAG2sC,KAAgB1tC,KAAQ4Q,KAAQlK,IAAQmmC,EAC9D,CACA,gBAAMc,CAAWjxB,GACf,OAAO3b,MAAK,EAAK2b,EAAKA,EACxB,CACA,iBAAMkxB,CAAYr9B,EAAIs9B,GACpB,MAAMxN,QAAawN,EACnB,OAAO9sC,MAAK,EAAKwP,EAAI8vB,EACvB,CACA,eAAMyN,CAAUv9B,GACdxP,MAAK,IAAW,IAAIi9B,IACpB,MAAM3vB,EAAOtN,MAAK,EAAO7B,IAAIqR,GAC7B,IAAKlC,EACH,OAAO,KAET,GAAIA,EAAK0Q,OAEP,OADA1Q,EAAKq+B,YAAc,EACZr+B,EAET,GAAIA,EAAKw+B,KACP,OAAO9rC,KAAK0sC,YAAYp/B,EAAKw+B,MAE/B,GAAIx+B,EAAKw/B,YAAa,CACpB,MAAM,YACJA,GACEx/B,EAEJ,cADOA,EAAKw/B,YACL9sC,KAAK6sC,YAAYv/B,EAAKkC,GAAIs9B,EACnC,CACA,OAAO9sC,KAAK4sC,WAAWt/B,EAAKqO,IAC9B,CACA,aAAAqxB,CAAcx9B,EAAIy9B,GAChBjtC,MAAK,IAAW,IAAIi9B,IACpB,IAAI3vB,EAAOtN,MAAK,EAAO7B,IAAIqR,GAC3B,GAAIlC,GAAM0Q,OAER,OADA1Q,EAAKq+B,YAAc,EACZr+B,EAET,MAAM4/B,EAAY,IAAI5V,gBAAgB2V,EAAOjM,MAAOiM,EAAOhM,QAW3D,OAVYiM,EAAU/B,WAAW,MAC7BK,UAAUyB,EAAQ,EAAG,GACzB3/B,EAAO,CACL0Q,OAAQkvB,EAAUC,wBAClB39B,GAAI,SAASxP,MAAK,KAAWA,MAAK,MAClC2rC,WAAY,EACZC,OAAO,GAET5rC,MAAK,EAAO0E,IAAI8K,EAAIlC,GACpBtN,MAAK,EAAO0E,IAAI4I,EAAKkC,GAAIlC,GAClBA,CACT,CACA,SAAA8/B,CAAU59B,GACR,MAAMlC,EAAOtN,MAAK,EAAO7B,IAAIqR,GAC7B,OAAKlC,GAAMs+B,MAGJt+B,EAAKg/B,OAFH,IAGX,CACA,QAAAe,CAAS79B,GACPxP,MAAK,IAAW,IAAIi9B,IACpB,MAAM3vB,EAAOtN,MAAK,EAAO7B,IAAIqR,GAC7B,IAAKlC,EACH,OAGF,GADAA,EAAKq+B,YAAc,EACK,IAApBr+B,EAAKq+B,WACP,OAEF,MAAM,OACJ3tB,GACE1Q,EACJ,IAAKA,EAAKqO,MAAQrO,EAAKw+B,KAAM,CAC3B,MAAMmB,EAAS,IAAI3V,gBAAgBtZ,EAAOgjB,MAAOhjB,EAAOijB,QAC5CgM,EAAO9B,WAAW,kBAC1BmC,wBAAwBtvB,GAC5B1Q,EAAKw/B,YAAcG,EAAOM,eAC5B,CACAvvB,EAAO5T,UACPkD,EAAK0Q,OAAS,IAChB,CACA,SAAAwvB,CAAUh+B,GACR,OAAOA,EAAGslB,WAAW,SAAS90B,MAAK,KACrC,EAEF,MAAMytC,GACJ,GAAY,GACZ,IAAU,EACV,GACA,IAAa,EACb,WAAAluC,CAAYmuC,EAAU,KACpB1tC,MAAK,EAAW0tC,CAClB,CACA,GAAAj9B,EAAI,IACFk9B,EAAG,KACHC,EAAI,KACJC,EAAI,SACJC,EAAQ,KACRnoC,EAAOooC,IAAG,oBACVC,GAAsB,EAAK,SAC3BC,GAAW,IAKX,GAHIH,GACFH,IAEE3tC,MAAK,EACP,OAEF,MAAMwuB,EAAO,CACXmf,MACAC,OACAC,OACAloC,QAEF,IAAwB,IAApB3F,MAAK,EAMP,OALIA,MAAK,EAAUxC,OAAS,IAC1BwC,MAAK,EAAUxC,OAAS,GAE1BwC,MAAK,EAAY,OACjBA,MAAK,EAAUuI,KAAKimB,GAGtB,GAAIwf,GAAuBhuC,MAAK,EAAUA,MAAK,GAAW2F,OAASA,EAKjE,OAJIsoC,IACFzf,EAAKof,KAAO5tC,MAAK,EAAUA,MAAK,GAAW4tC,WAE7C5tC,MAAK,EAAUA,MAAK,GAAawuB,GAGnC,MAAM1tB,EAAOd,MAAK,EAAY,EAC1Bc,IAASd,MAAK,EAChBA,MAAK,EAAUkuC,OAAO,EAAG,IAEzBluC,MAAK,EAAYc,EACbA,EAAOd,MAAK,EAAUxC,QACxBwC,MAAK,EAAUkuC,OAAOptC,IAG1Bd,MAAK,EAAUuI,KAAKimB,EACtB,CACA,IAAAof,GACE,IAAwB,IAApB5tC,MAAK,EACP,OAEFA,MAAK,GAAU,EACf,MAAM,KACJ4tC,EAAI,KACJC,GACE7tC,MAAK,EAAUA,MAAK,GACxB4tC,IACAC,MACA7tC,MAAK,GAAU,EACfA,MAAK,GAAa,CACpB,CACA,IAAAmuC,GACE,GAAInuC,MAAK,EAAYA,MAAK,EAAUxC,OAAS,EAAG,CAC9CwC,MAAK,GAAa,EAClBA,MAAK,GAAU,EACf,MAAM,IACJ2tC,EAAG,KACHE,GACE7tC,MAAK,EAAUA,MAAK,GACxB2tC,IACAE,MACA7tC,MAAK,GAAU,CACjB,CACF,CACA,kBAAAouC,GACE,OAA2B,IAApBpuC,MAAK,CACd,CACA,kBAAAquC,GACE,OAAOruC,MAAK,EAAYA,MAAK,EAAUxC,OAAS,CAClD,CACA,SAAA8wC,CAAU3oC,GACR,IAAwB,IAApB3F,MAAK,EAAT,CAGA,IAAK,IAAI+F,EAAI/F,MAAK,EAAW+F,GAAK,EAAGA,IACnC,GAAI/F,MAAK,EAAU+F,GAAGJ,OAASA,EAG7B,OAFA3F,MAAK,EAAUkuC,OAAOnoC,EAAI,EAAG/F,MAAK,EAAY+F,QAC9C/F,MAAK,EAAY+F,GAIrB/F,MAAK,EAAUxC,OAAS,EACxBwC,MAAK,GAAa,CATlB,CAUF,CACA,OAAAoqC,GACEpqC,MAAK,EAAY,IACnB,EAEF,MAAMuuC,GACJ,WAAAhvC,CAAYivC,GACVxuC,KAAKmG,OAAS,GACdnG,KAAKwuC,UAAY,IAAIvR,IACrBj9B,KAAKyuC,QAAU,IAAIj8B,IACnB,MAAM,MACJolB,GACEZ,GAAiBS,SACrB,IAAK,MAAO1zB,EAAMuS,EAAUpX,EAAU,CAAC,KAAMsvC,EAC3C,IAAK,MAAM9lC,KAAO3E,EAAM,CACtB,MAAM2qC,EAAWhmC,EAAIosB,WAAW,QAC5B8C,GAAS8W,GACX1uC,KAAKwuC,UAAU9pC,IAAIgE,EAAIjK,MAAM,GAAI,CAC/B6X,WACApX,YAEFc,KAAKyuC,QAAQh+B,IAAI/H,EAAI3J,MAAM,KAAKgiB,IAAI,KAC1B6W,GAAU8W,IACpB1uC,KAAKwuC,UAAU9pC,IAAIgE,EAAK,CACtB4N,WACApX,YAEFc,KAAKyuC,QAAQh+B,IAAI/H,EAAI3J,MAAM,KAAKgiB,IAAI,IAExC,CAEJ,CACA,GAAW4tB,GACLA,EAAMC,QACR5uC,KAAKmG,OAAOoC,KAAK,OAEfomC,EAAME,SACR7uC,KAAKmG,OAAOoC,KAAK,QAEfomC,EAAMG,SACR9uC,KAAKmG,OAAOoC,KAAK,QAEfomC,EAAMI,UACR/uC,KAAKmG,OAAOoC,KAAK,SAEnBvI,KAAKmG,OAAOoC,KAAKomC,EAAMjmC,KACvB,MAAMouB,EAAM92B,KAAKmG,OAAOxH,KAAK,KAE7B,OADAqB,KAAKmG,OAAO3I,OAAS,EACds5B,CACT,CACA,IAAA7yB,CAAK8P,EAAM46B,GACT,IAAK3uC,KAAKyuC,QAAQ9pC,IAAIgqC,EAAMjmC,KAC1B,OAEF,MAAMyrB,EAAOn0B,KAAKwuC,UAAUrwC,IAAI6B,MAAK,EAAW2uC,IAChD,IAAKxa,EACH,OAEF,MAAM,SACJ7d,EACApX,SAAS,QACP8vC,GAAU,EAAK,KACfznC,EAAO,GAAE,QACT0nC,EAAU,OAEV9a,EACA8a,IAAYA,EAAQl7B,EAAM46B,KAG9Br4B,EAAShU,KAAKyR,KAASxM,EAAMonC,EAA7Br4B,GACK04B,GACHpL,GAAU+K,GAEd,EAEF,MAAMO,GACJtQ,sBAAwB,IAAI3B,IAAI,CAAC,CAAC,aAAc,CAAC,EAAG,EAAG,IAAK,CAAC,SAAU,CAAC,IAAK,IAAK,QAClF,WAAIkS,GACF,MAAMC,EAAS,IAAInS,IAAI,CAAC,CAAC,aAAc,MAAO,CAAC,SAAU,QAEzD,OAzsBJ,SAAwBmS,GACtB,MAAMvE,EAAOjgC,SAAS0G,cAAc,QACpCu5B,EAAK//B,MAAMukC,WAAa,SACxBxE,EAAK//B,MAAMwkC,YAAc,aACzB1kC,SAAS2kC,KAAKj7B,OAAOu2B,GACrB,IAAK,MAAM5rC,KAAQmwC,EAAOrrC,OAAQ,CAChC8mC,EAAK//B,MAAMi6B,MAAQ9lC,EACnB,MAAMuwC,EAAgBr9B,OAAOs9B,iBAAiB5E,GAAM9F,MACpDqK,EAAO1qC,IAAIzF,EAAM6lC,GAAO0K,GAC1B,CACA3E,EAAK56B,QACP,CA6rBIy/B,CAAeN,GACR3Z,EAAOz1B,KAAM,UAAWovC,EACjC,CACA,OAAAO,CAAQ5K,GACN,MAAM6K,EAAM9K,GAAOC,GACnB,IAAK5yB,OAAO09B,WAAW,2BAA2B5L,QAChD,OAAO2L,EAET,IAAK,MAAO3wC,EAAM6wC,KAAQ9vC,KAAKmvC,QAC7B,GAAIW,EAAI1rC,OAAM,CAAClB,EAAG6C,IAAM7C,IAAM0sC,EAAI7pC,KAChC,OAAOmpC,GAAaa,eAAe5xC,IAAIc,GAG3C,OAAO2wC,CACT,CACA,UAAAI,CAAW/wC,GACT,MAAM2wC,EAAM5vC,KAAKmvC,QAAQhxC,IAAIc,GAC7B,OAAK2wC,EAGExX,GAAKC,gBAAgBuX,GAFnB3wC,CAGX,EAEF,MAAMgxC,GACJ,GAAmB,IAAI7R,gBACvB,GAAgB,KAChB,GAAc,IAAInB,IAClB,GAAa,IAAIA,IACjB,GAAkB,KAClB,GAAqB,KACrB,GAA8B,KAC9B,GAAkB,IAAIwQ,GACtB,GAAe,KACf,GAAyB,KACzB,GAAoB,EACpB,GAAgC,IAAIj7B,IACpC,GAAmB,KACnB,GAAe,KACf,GAAoB,IAAIA,IACxB09B,eAAiB,KACjB,IAAiC,EACjC,IAAyB,EACzB,IAAmC,EACnC,GAAiB,KACjB,GAA+B,KAC/B,GAAkB,KAClB,GAAmB,KACnB,IAAwB,EACxB,GAAoB,KACpB,GAAa,IAAIlF,GACjB,IAAa,EACb,KAAa,EACb,IAAqB,KACrB,IAAqB,KACrB,IAA4B,KAC5B,IAAmB,KACnB,IAAa,KACb,IAAQlhB,EAAqBC,KAC7B,IAAmB,IAAIvX,IACvB,IAAoB,KACpB,IAAoB,KACpB,IAAc,KACd,IAAiB,KACjB,IAAkB,CAChB29B,WAAW,EACXC,SAAS,EACThC,oBAAoB,EACpBC,oBAAoB,EACpBgC,mBAAmB,EACnBC,iBAAiB,GAEnB,IAAe,CAAC,EAAG,GACnB,IAAwB,KACxB,IAAa,KACb,IAAU,KACV,IAAe,KACf,IAAwB,KACxB1R,uBAAyB,EACzBA,qBAAuB,GACvB,2BAAW2R,GACT,MAAMtuC,EAAQguC,GAA0BxwC,UAClC+wC,EAAez8B,GAAQA,GAAK,GAAW08B,SAAS7lC,SAAS8lC,gBAAqD,WAAnC9lC,SAAS8lC,cAAcC,SAAwB58B,EAAK68B,wBAC/HC,EAAmB,CAACC,GACxB9uC,OAAQumB,MAER,GAAIA,aAAcwoB,iBAAkB,CAClC,MAAM,KACJprC,GACE4iB,EACJ,MAAgB,SAAT5iB,GAA4B,WAATA,CAC5B,CACA,OAAO,CAAI,EAEPqrC,EAAQhxC,KAAKixC,gBACbC,EAAMlxC,KAAKmxC,cACjB,OAAO1b,EAAOz1B,KAAM,mBAAoB,IAAIuuC,GAAgB,CAAC,CAAC,CAAC,SAAU,cAAetsC,EAAMmvC,UAAW,CACvGnC,QAAS4B,IACP,CAAC,CAAC,SAAU,cAAe5uC,EAAM2rC,KAAM,CACzCqB,QAAS4B,IACP,CAAC,CAAC,SAAU,eAAgB,mBAAoB,eAAgB,oBAAqB5uC,EAAMksC,KAAM,CACnGc,QAAS4B,IACP,CAAC,CAAC,YAAa,gBAAiB,iBAAkB,kBAAmB,gBAAiB,oBAAqB,qBAAsB,SAAU,cAAe,eAAgB,cAAe5uC,EAAMonC,OAAQ,CACzM4F,QAAS4B,IACP,CAAC,CAAC,QAAS,aAAc5uC,EAAMovC,yBAA0B,CAC3DpC,QAAS,CAACl7B,GACR/R,OAAQumB,OACFA,aAAc+oB,oBAAsBv9B,GAAK,GAAW08B,SAASloB,KAAQxU,EAAKw9B,iBAChF,CAAC,CAAC,IAAK,SAAUtvC,EAAMovC,yBAA0B,CACnDpC,QAAS,CAACl7B,GACR/R,OAAQumB,OACFA,aAAc+oB,oBAAsBv9B,GAAK,GAAW08B,SAAS7lC,SAAS8lC,iBAC5E,CAAC,CAAC,SAAU,cAAezuC,EAAMuvC,aAAc,CAAC,CAAC,YAAa,iBAAkBvvC,EAAMwvC,yBAA0B,CAClHlqC,KAAM,EAAEypC,EAAO,GACf/B,QAASuB,IACP,CAAC,CAAC,iBAAkB,uBAAwBvuC,EAAMwvC,yBAA0B,CAC9ElqC,KAAM,EAAE2pC,EAAK,GACbjC,QAASuB,IACP,CAAC,CAAC,aAAc,kBAAmBvuC,EAAMwvC,yBAA0B,CACrElqC,KAAM,CAACypC,EAAO,GACd/B,QAASuB,IACP,CAAC,CAAC,kBAAmB,wBAAyBvuC,EAAMwvC,yBAA0B,CAChFlqC,KAAM,CAAC2pC,EAAK,GACZjC,QAASuB,IACP,CAAC,CAAC,UAAW,eAAgBvuC,EAAMwvC,yBAA0B,CAC/DlqC,KAAM,CAAC,GAAIypC,GACX/B,QAASuB,IACP,CAAC,CAAC,eAAgB,qBAAsBvuC,EAAMwvC,yBAA0B,CAC1ElqC,KAAM,CAAC,GAAI2pC,GACXjC,QAASuB,IACP,CAAC,CAAC,YAAa,iBAAkBvuC,EAAMwvC,yBAA0B,CACnElqC,KAAM,CAAC,EAAGypC,GACV/B,QAASuB,IACP,CAAC,CAAC,iBAAkB,uBAAwBvuC,EAAMwvC,yBAA0B,CAC9ElqC,KAAM,CAAC,EAAG2pC,GACVjC,QAASuB,MAEb,CACA,WAAAjxC,CAAYmyC,EAAWC,EAAQC,EAAaC,EAAgBhI,EAAkBiI,EAAUC,EAAaC,EAAYC,EAAiBC,EAA+BC,EAAuBC,EAAiCC,EAAWC,EAAeC,GACjP,MAAMlU,EAASr+B,KAAKkoC,QAAUloC,MAAK,EAAiBq+B,OACpDr+B,MAAK,GAAa0xC,EAClB1xC,MAAK,GAAU2xC,EACf3xC,MAAK,GAAe4xC,EACpB5xC,MAAK,EAAkB6xC,EACvB7xC,MAAK,GAAoB6pC,EACzB7pC,KAAKwyC,UAAYV,EACjBA,EAASW,IAAI,gBAAiBzyC,KAAK0yC,gBAAgBpwC,KAAKtC,MAAO,CAC7Dq+B,WAEFyT,EAASW,IAAI,eAAgBzyC,KAAK2yC,eAAerwC,KAAKtC,MAAO,CAC3Dq+B,WAEFyT,EAASW,IAAI,gBAAiBzyC,KAAK4yC,gBAAgBtwC,KAAKtC,MAAO,CAC7Dq+B,WAEFyT,EAASW,IAAI,mBAAoBzyC,KAAK6yC,mBAAmBvwC,KAAKtC,MAAO,CACnEq+B,WAEFyT,EAASW,IAAI,gBAAiBzyC,KAAK8yC,gBAAgBxwC,KAAKtC,MAAO,CAC7Dq+B,WAEFyT,EAASW,IAAI,gCAAgCM,GAAO/yC,KAAKgzC,aAAaD,EAAIptC,KAAMotC,EAAIl0C,QAAQ,CAC1Fw/B,WAEFr+B,MAAK,KACLA,MAAK,KACLA,MAAK,KACLA,MAAK,EAAqB+xC,EAAYkB,kBACtCjzC,MAAK,EAAiB+xC,EAAYmB,cAClClzC,MAAK,GAAcgyC,EACnBhyC,MAAK,EAAmBiyC,GAAmB,KAC3CjyC,MAAK,EAAiCkyC,EACtClyC,MAAK,EAAyBmyC,EAC9BnyC,MAAK,EAAmCoyC,EACxCpyC,MAAK,GAAaqyC,GAAa,KAC/BryC,KAAKmzC,eAAiB,CACpBC,UAAWzU,GAAc0U,iBACzBjT,SAAU,GAEZpgC,KAAKszC,gBAAiB,EACtBtzC,KAAKkwC,eAAiBoC,GAAiB,KACvCtyC,KAAKuzC,sBAA+C,IAAxBhB,CAC9B,CACA,OAAAnI,GACEpqC,MAAK,IAAuB2H,UAC5B3H,MAAK,GAAwB,KAC7BA,MAAK,GAAkBu+B,QACvBv+B,MAAK,EAAmB,KACxBA,KAAKkoC,QAAU,KACf,IAAK,MAAMsL,KAASxzC,MAAK,EAAW+e,SAClCy0B,EAAMpJ,UAERpqC,MAAK,EAAWwf,QAChBxf,MAAK,EAAYwf,QACjBxf,MAAK,EAAkBwf,QACvBxf,MAAK,IAAkBwf,QACvBxf,MAAK,EAAgB,KACrBA,MAAK,GAAiBwf,QACtBxf,MAAK,EAAgBoqC,UACrBpqC,MAAK,GAAiBoqC,UACtBpqC,MAAK,IAAmBoqC,UACxBpqC,MAAK,GAAmB6oC,OACxB7oC,MAAK,EAAoB,KACzBA,MAAK,IAA2BoqC,UAChCpqC,MAAK,GAA4B,KAC7BA,MAAK,IACPyzC,aAAazzC,MAAK,GAClBA,MAAK,EAA+B,MAElCA,MAAK,KACPyzC,aAAazzC,MAAK,IAClBA,MAAK,GAAwB,MAE/BA,KAAKkwC,gBAAgB9F,SACvB,CACA,cAAAsJ,CAAevV,GACb,OAAOF,YAAYC,IAAI,CAACl+B,KAAKkoC,QAAS/J,EAAGE,QAC3C,CACA,aAAIgU,GACF,OAAOryC,MAAK,EACd,CACA,qBAAI2zC,GACF,OAAO3zC,MAAK,CACd,CACA,gCAAI4zC,GACF,OAAO5zC,MAAK,CACd,CACA,aAAI6zC,GACF,OAAOpe,EAAOz1B,KAAM,YAAaA,MAAK,GAAcA,MAAK,EAAe8zC,aAAa9zC,MAAK,GAAY+zC,WAAY/zC,MAAK,GAAYg0C,YAAc,OACnJ,CACA,aAAIzL,GACF,OAAO9S,EAAOz1B,KAAM,YAAayvC,iBAAiBzvC,MAAK,IAAYuoC,UACrE,CACA,mBAAI0J,GACF,OAAOxc,EAAOz1B,KAAM,kBAAmBA,MAAK,EAAmB,IAAIi9B,IAAIj9B,MAAK,EAAiBjB,MAAM,KAAKoJ,KAAI8rC,KAC1GA,EAAOA,EAAKl1C,MAAM,KAAKoJ,KAAIjF,GAAKA,EAAE++B,UAC7B,GAAKgS,EAAK,GAAGC,cACXD,MACH,KACR,CACA,uBAAIE,GACF,OAAO1e,EAAOz1B,KAAM,sBAAuBA,KAAKiyC,gBAAkB,IAAIhV,IAAInuB,MAAMqR,KAAKngB,KAAKiyC,iBAAiB7hC,GAAKA,EAAE0yB,aAAc,KAClI,CACA,wBAAAsR,CAAyBZ,GACnBA,GACFxzC,KAAKwxC,cACLxxC,KAAKq0C,mBAAkB,IAEvBr0C,KAAKq0C,mBAAkB,GAEzBr0C,MAAK,EAAyBwzC,CAChC,CACA,2BAAAc,CAA4B5K,GAC1B1pC,MAAK,GAA4B0pC,CACnC,CACA,WAAA6K,CAAYhN,EAAQiN,GAAY,GAC9Bx0C,MAAK,GAAiBu0C,YAAYv0C,KAAMunC,EAAQiN,EAClD,CACA,YAAAC,CAAalN,GACXvnC,MAAK,IAAmBy0C,aAAa,CACnCnK,UAAWtqC,KACXunC,UAEJ,CACA,oBAAIsC,GACF,OAAO7pC,MAAK,EACd,CACA,YAAA00C,CAAax1B,EAAM5I,GACjBtW,KAAKwyC,UAAUmC,GAAG,8BAA+Br+B,EAAU,CACzDs+B,MAAM,EACNvW,OAAQr+B,KAAKkoC,UAEfloC,KAAKwyC,UAAUqC,SAAS,yBAA0B,CAChDh1C,OAAQG,KACRkf,QAEJ,CACA,aAAA41B,CAAc71C,EAAMJ,GAClBmB,KAAKwyC,UAAUqC,SAAS,gBAAiB,CACvCh1C,OAAQG,KACRf,OACAJ,SAEJ,CACA,eAAAi0C,EAAgB,KACd7zC,EAAI,MACJJ,IAEA,GACO,oCADCI,EAEJe,MAAK,EAAmCnB,CAG9C,CACA,cAAA8zC,EAAe,WACboC,IAEA/0C,MAAK,EAAoB+0C,EAAa,CACxC,CACA,kBAAAC,GACEh1C,MAAK,GAAWi1C,OAClB,CACA,UAAAC,CAAWhyC,EAAG04B,GACZ,IAAK,MAAM4X,KAASxzC,MAAK,EAAW+e,SAAU,CAC5C,MACE7b,EAAGiyC,EACHvZ,EAAGwZ,EAAM,MACTpU,EAAK,OACLC,GACEuS,EAAMjO,IAAI8P,wBACd,GAAInyC,GAAKiyC,GAAUjyC,GAAKiyC,EAASnU,GAASpF,GAAKwZ,GAAUxZ,GAAKwZ,EAASnU,EACrE,OAAOuS,CAEX,CACA,OAAO,IACT,CACA,iBAAAa,CAAkBx1C,GAAQ,GACxBmB,MAAK,GAAQgoC,UAAUsN,OAAO,eAAgBz2C,EAChD,CACA,gBAAA02C,CAAiBhO,GACfvnC,MAAK,EAAkByQ,IAAI82B,EAC7B,CACA,mBAAAiO,CAAoBjO,GAClBvnC,MAAK,EAAkBqpC,OAAO9B,EAChC,CACA,eAAAqL,EAAgB,MACdzS,IAEAngC,KAAKy1C,iBACLz1C,KAAKmzC,eAAeC,UAAYjT,EAAQxB,GAAc0U,iBACtD,IAAK,MAAM9L,KAAUvnC,MAAK,EACxBunC,EAAOqL,kBAET5yC,MAAK,GAAwB4yC,iBAC/B,CACA,kBAAAC,EAAmB,cACjB6C,IAEA11C,KAAKy1C,iBACLz1C,KAAKmzC,eAAe/S,SAAWsV,CACjC,CACA,KAA8B,WAC5BC,IAEA,OAAOA,EAAWC,WAAa3yB,KAAK4yB,UAAYF,EAAWG,cAAgBH,CAC7E,CACA,IAAsBI,GACpB,MAAM,aACJC,GACEh2C,KACJ,GAAIg2C,EAAaC,aAAaF,GAC5B,OAAOC,EAET,IAAK,MAAMxC,KAASxzC,MAAK,EAAW+e,SAClC,GAAIy0B,EAAMyC,aAAaF,GACrB,OAAOvC,EAGX,OAAO,IACT,CACA,kBAAA1I,CAAmBoL,EAAmB,IACpC,MAAMC,EAAYvrC,SAASwrC,eAC3B,IAAKD,GAAaA,EAAUE,YAC1B,OAEF,MAAM,WACJV,EAAU,aACVW,EAAY,UACZC,EAAS,YACTC,GACEL,EACE/xB,EAAO+xB,EAAUp2C,WAEjBg2C,EADgB/1C,MAAK,GAA8Bm2C,GACzBM,QAAQ,cAClClM,EAAQvqC,KAAK02C,kBAAkBX,GACrC,IAAKxL,EACH,OAEF4L,EAAUQ,QACV,MAAMnD,EAAQxzC,MAAK,GAAsB+1C,GACnCa,EAAa52C,MAAK,KAAU8pB,EAAqBC,KACjDzT,EAAW,KACfk9B,GAAOqD,sBAAsB,CAC3B3zC,EAAG,EACH04B,EAAG,IACF,EAAO,CACRsa,mBACA3L,QACAoL,aACAW,eACAC,YACAC,cACApyB,SAEEwyB,GACF52C,KAAK82C,eAAe,aAAa,GAAM,EACzC,EAEEF,EACF52C,KAAK00C,aAAa5qB,EAAqBG,UAAW3T,GAGpDA,GACF,CACA,MACE,MAAM6/B,EAAYvrC,SAASwrC,eAC3B,IAAKD,GAAaA,EAAUE,YAC1B,OAEF,MACMN,EADgB/1C,MAAK,GAA8Bm2C,GACzBM,QAAQ,cAClClM,EAAQvqC,KAAK02C,kBAAkBX,GAChCxL,IAGLvqC,MAAK,IAAsB,IAAIqqC,GAAiBrqC,MAChDA,MAAK,EAAkB+oC,KAAKgN,EAAWxL,EAA0B,QAAnBvqC,KAAKuoC,WACrD,CACA,sBAAAwO,CAAuBxP,GAChBA,EAAO6I,YAAapwC,MAAK,GAAuBA,MAAK,EAAmB2E,IAAI4iC,EAAO/3B,KACtFxP,MAAK,EAAmBg3C,SAASzP,EAAO/3B,GAAI+3B,EAEhD,CACA,SAAA0P,CAAUC,EAAW3vC,EAAO,MAC1B,MAAMqqC,EAAc5xC,MAAK,GACpB4xC,IAGLA,EAAY5L,aAAa,eAAgBkR,GACrC3vC,EACFqqC,EAAY5L,aAAa,iBAAkBjkB,KAAKo1B,UAAU5vC,IAE1DqqC,EAAYwF,gBAAgB,kBAEhC,CACA,MACE,MAAMjB,EAAYvrC,SAASwrC,eAC3B,IAAKD,GAAaA,EAAUE,YAQ1B,YAPIr2C,MAAK,KACPA,MAAK,GAAmB6oC,OACxB7oC,MAAK,GAAoB,KACzBA,MAAK,GAAsB,CACzBswC,iBAAiB,MAKvB,MAAM,WACJqF,GACEQ,EACJ,GAAIR,IAAe31C,MAAK,GACtB,OAEF,MACM+1C,EADgB/1C,MAAK,GAA8Bm2C,GACzBM,QAAQ,cACxC,GAAKV,GAeL,GALA/1C,MAAK,GAAmB6oC,OACxB7oC,MAAK,GAAoB21C,EACzB31C,MAAK,GAAsB,CACzBswC,iBAAiB,KAEftwC,MAAK,KAAU8pB,EAAqBG,WAAajqB,MAAK,KAAU8pB,EAAqBC,QAGrF/pB,MAAK,KAAU8pB,EAAqBG,WACtCjqB,KAAK82C,eAAe,aAAa,GAAM,GAEzC92C,MAAK,EAAwBA,KAAKszC,gBAC7BtzC,KAAKszC,gBAAgB,CACxB,MAAM+D,EAAcr3C,MAAK,KAAU8pB,EAAqBG,UAAYjqB,MAAK,GAAsB+1C,GAAa,KAC5GsB,GAAaC,gBACb,MAAMnZ,EAAK,IAAIC,gBACTC,EAASr+B,KAAK0zC,eAAevV,GAC7BoZ,EAAYnnC,IACD,cAAXA,EAAEzK,MAAqC,IAAbyK,EAAE+4B,SAGhChL,EAAGI,QACH8Y,GAAaC,eAAc,GACZ,cAAXlnC,EAAEzK,MACJ3F,MAAK,GAAa,gBACpB,EAEFmS,OAAOssB,iBAAiB,YAAa8Y,EAAW,CAC9ClZ,WAEFlsB,OAAOssB,iBAAiB,OAAQ8Y,EAAW,CACzClZ,UAEJ,OA1CMr+B,MAAK,KACPA,MAAK,GAAmB6oC,OACxB7oC,MAAK,GAAoB,KACzBA,MAAK,GAAsB,CACzBswC,iBAAiB,IAuCzB,CACA,IAAa4F,EAAmB,IAC1Bl2C,MAAK,KAAU8pB,EAAqBG,UACtCjqB,KAAK8qC,mBAAmBoL,GACfl2C,MAAK,GACdA,MAAK,IAET,CACA,MACE4K,SAAS6zB,iBAAiB,kBAAmBz+B,MAAK,GAAiBsC,KAAKtC,MAAO,CAC7Eq+B,OAAQr+B,KAAKkoC,SAEjB,CACA,MACE,GAAIloC,MAAK,EACP,OAEFA,MAAK,EAAkB,IAAIo+B,gBAC3B,MAAMC,EAASr+B,KAAK0zC,eAAe1zC,MAAK,GACxCmS,OAAOssB,iBAAiB,QAASz+B,KAAKi1C,MAAM3yC,KAAKtC,MAAO,CACtDq+B,WAEFlsB,OAAOssB,iBAAiB,OAAQz+B,KAAKw3C,KAAKl1C,KAAKtC,MAAO,CACpDq+B,UAEJ,CACA,MACEr+B,MAAK,GAAiBu+B,QACtBv+B,MAAK,EAAkB,IACzB,CACA,IAAAw3C,GAME,GALAx3C,KAAKszC,gBAAiB,EAClBtzC,MAAK,IACPA,MAAK,GAAwB,EAC7BA,MAAK,GAAa,kBAEfA,KAAKy3C,aACR,OAEF,MAAM,cACJ/G,GACE9lC,SACJ,IAAK,MAAM28B,KAAUvnC,MAAK,GACxB,GAAIunC,EAAOhC,IAAIkL,SAASC,GAAgB,CACtC1wC,MAAK,GAAqB,CAACunC,EAAQmJ,GACnCnJ,EAAOmB,qBAAsB,EAC7B,KACF,CAEJ,CACA,KAAAuM,GACE,IAAKj1C,MAAK,GACR,OAEF,MAAO03C,EAAYC,GAAqB33C,MAAK,GAC7CA,MAAK,GAAqB,KAC1B23C,EAAkBlZ,iBAAiB,WAAW,KAC5CiZ,EAAWhP,qBAAsB,CAAI,GACpC,CACDkM,MAAM,EACNvW,OAAQr+B,KAAKkoC,UAEfyP,EAAkB1C,OACpB,CACA,MACE,GAAIj1C,MAAK,GACP,OAEFA,MAAK,GAAqB,IAAIo+B,gBAC9B,MAAMC,EAASr+B,KAAK0zC,eAAe1zC,MAAK,IACxCmS,OAAOssB,iBAAiB,UAAWz+B,KAAK43C,QAAQt1C,KAAKtC,MAAO,CAC1Dq+B,WAEFlsB,OAAOssB,iBAAiB,QAASz+B,KAAK63C,MAAMv1C,KAAKtC,MAAO,CACtDq+B,UAEJ,CACA,MACEr+B,MAAK,IAAoBu+B,QACzBv+B,MAAK,GAAqB,IAC5B,CACA,MACE,GAAIA,MAAK,EACP,OAEFA,MAAK,EAAe,IAAIo+B,gBACxB,MAAMC,EAASr+B,KAAK0zC,eAAe1zC,MAAK,GACxC4K,SAAS6zB,iBAAiB,OAAQz+B,KAAK83C,KAAKx1C,KAAKtC,MAAO,CACtDq+B,WAEFzzB,SAAS6zB,iBAAiB,MAAOz+B,KAAK+3C,IAAIz1C,KAAKtC,MAAO,CACpDq+B,WAEFzzB,SAAS6zB,iBAAiB,QAASz+B,KAAKg4C,MAAM11C,KAAKtC,MAAO,CACxDq+B,UAEJ,CACA,MACEr+B,MAAK,GAAcu+B,QACnBv+B,MAAK,EAAe,IACtB,CACA,MACE,MAAMq+B,EAASr+B,KAAKkoC,QACpBt9B,SAAS6zB,iBAAiB,WAAYz+B,KAAKi4C,SAAS31C,KAAKtC,MAAO,CAC9Dq+B,WAEFzzB,SAAS6zB,iBAAiB,OAAQz+B,KAAKymB,KAAKnkB,KAAKtC,MAAO,CACtDq+B,UAEJ,CACA,gBAAA6Z,GACEl4C,MAAK,KACLA,MAAK,IACP,CACA,mBAAAm4C,GACEn4C,MAAK,KACLA,MAAK,IACP,CACA,QAAAi4C,CAAStJ,GACP,IAAK,MAAM,KACThpC,KACGgpC,EAAMyJ,aAAaC,MACtB,IAAK,MAAMnP,KAAclpC,MAAK,EAC5B,GAAIkpC,EAAWoP,yBAAyB3yC,GAGtC,OAFAgpC,EAAMyJ,aAAaG,WAAa,YAChC5J,EAAMhL,gBAKd,CACA,IAAAld,CAAKkoB,GACH,IAAK,MAAMj9B,KAAQi9B,EAAMyJ,aAAaC,MACpC,IAAK,MAAMnP,KAAclpC,MAAK,EAC5B,GAAIkpC,EAAWoP,yBAAyB5mC,EAAK/L,MAG3C,OAFAujC,EAAW8O,MAAMtmC,EAAM1R,KAAKg2C,mBAC5BrH,EAAMhL,gBAKd,CACA,IAAAmU,CAAKnJ,GAGH,GAFAA,EAAMhL,iBACN3jC,MAAK,GAAey1C,kBACfz1C,KAAKy3C,aACR,OAEF,MAAMe,EAAU,GAChB,IAAK,MAAMjR,KAAUvnC,MAAK,GAAkB,CAC1C,MAAMy4C,EAAalR,EAAOmR,WAAU,GAChCD,GACFD,EAAQjwC,KAAKkwC,EAEjB,CACuB,IAAnBD,EAAQh7C,QAGZmxC,EAAMgK,cAAcC,QAAQ,oBAAqB72B,KAAKo1B,UAAUqB,GAClE,CACA,GAAAT,CAAIpJ,GACF3uC,KAAK83C,KAAKnJ,GACV3uC,KAAKqpC,QACP,CACA,WAAM2O,CAAMrJ,GACVA,EAAMhL,iBACN,MAAM,cACJgV,GACEhK,EACJ,IAAK,MAAMj9B,KAAQinC,EAAcN,MAC/B,IAAK,MAAMnP,KAAclpC,MAAK,EAC5B,GAAIkpC,EAAWoP,yBAAyB5mC,EAAK/L,MAE3C,YADAujC,EAAW8O,MAAMtmC,EAAM1R,KAAKg2C,cAKlC,IAAI1oC,EAAOqrC,EAAcE,QAAQ,qBACjC,IAAKvrC,EACH,OAEF,IACEA,EAAOyU,KAAKrG,MAAMpO,EACpB,CAAE,MAAOwrC,GAEP,YADAvkB,EAAK,WAAWukB,EAAG3hC,YAErB,CACA,IAAKrI,MAAMwD,QAAQhF,GACjB,OAEFtN,KAAKwxC,cACL,MAAMgC,EAAQxzC,KAAKg2C,aACnB,IACE,MAAM+C,EAAa,GACnB,IAAK,MAAMxR,KAAUj6B,EAAM,CACzB,MAAM0rC,QAA2BxF,EAAMyF,YAAY1R,GACnD,IAAKyR,EACH,OAEFD,EAAWxwC,KAAKywC,EAClB,CACA,MAAMrL,EAAM,KACV,IAAK,MAAMpG,KAAUwR,EACnB/4C,MAAK,GAAkBunC,GAEzBvnC,MAAK,GAAe+4C,EAAW,EAE3BnL,EAAO,KACX,IAAK,MAAMrG,KAAUwR,EACnBxR,EAAOt3B,QACT,EAEFjQ,KAAKk5C,YAAY,CACfvL,MACAC,OACAE,UAAU,GAEd,CAAE,MAAOgL,GACPvkB,EAAK,WAAWukB,EAAG3hC,YACrB,CACF,CACA,OAAAygC,CAAQjJ,GACD3uC,KAAKszC,gBAAgC,UAAd3E,EAAMjmC,MAChC1I,KAAKszC,gBAAiB,GAEpBtzC,MAAK,KAAU8pB,EAAqBC,MAAS/pB,KAAKm5C,0BACpDlJ,GAA0BM,iBAAiBtsC,KAAKjE,KAAM2uC,EAE1D,CACA,KAAAkJ,CAAMlJ,GACA3uC,KAAKszC,gBAAgC,UAAd3E,EAAMjmC,MAC/B1I,KAAKszC,gBAAiB,EAClBtzC,MAAK,IACPA,MAAK,GAAwB,EAC7BA,MAAK,GAAa,iBAGxB,CACA,eAAA0yC,EAAgB,KACdzzC,IAEA,OAAQA,GACN,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACHe,KAAKf,KACL,MACF,IAAK,qBACHe,KAAK8qC,mBAAmB,gBAG9B,CACA,IAAsB7U,GACD13B,OAAOoW,QAAQshB,GAASzlB,MAAK,EAAE9H,EAAK7J,KAAWmB,MAAK,GAAgB0I,KAAS7J,MAE9FmB,KAAKwyC,UAAUqC,SAAS,gCAAiC,CACvDh1C,OAAQG,KACRi2B,QAAS13B,OAAO66C,OAAOp5C,MAAK,GAAiBi2B,KAE3Cj2B,MAAK,KAAU8pB,EAAqBG,YAA2C,IAA9BgM,EAAQoa,mBAC3DrwC,MAAK,GAAkB,CAAC,CAACqqB,EAA2BY,gBAAgB,KAG1E,CACA,IAAkBgL,GAChBj2B,KAAKwyC,UAAUqC,SAAS,gCAAiC,CACvDh1C,OAAQG,KACRi2B,WAEJ,CACA,eAAAojB,CAAgBlJ,GACVA,GACFnwC,MAAK,KACLA,MAAK,KACLA,MAAK,GAAsB,CACzBmwC,UAAWnwC,MAAK,KAAU8pB,EAAqBC,KAC/CqmB,QAASpwC,MAAK,KACdouC,mBAAoBpuC,MAAK,EAAgBouC,qBACzCC,mBAAoBruC,MAAK,EAAgBquC,qBACzCgC,mBAAmB,MAGrBrwC,MAAK,KACLA,MAAK,KACLA,MAAK,GAAsB,CACzBmwC,WAAW,IAEbnwC,KAAKq0C,mBAAkB,GAE3B,CACA,mBAAAiF,CAAoBC,GAClB,IAAIv5C,MAAK,EAAT,CAGAA,MAAK,EAAeu5C,EACpB,IAAK,MAAMrQ,KAAclpC,MAAK,EAC5BA,MAAK,GAAkBkpC,EAAWsQ,0BAHpC,CAKF,CACA,KAAAC,GACE,OAAOz5C,MAAK,EAAWwP,EACzB,CACA,gBAAIwmC,GACF,OAAOh2C,MAAK,EAAW7B,IAAI6B,MAAK,EAClC,CACA,QAAA05C,CAASC,GACP,OAAO35C,MAAK,EAAW7B,IAAIw7C,EAC7B,CACA,oBAAIC,GACF,OAAO55C,MAAK,CACd,CACA,QAAA65C,CAASrG,GACPxzC,MAAK,EAAW0E,IAAI8uC,EAAMmG,UAAWnG,GACjCxzC,MAAK,EACPwzC,EAAMsG,SAENtG,EAAMuG,SAEV,CACA,WAAAC,CAAYxG,GACVxzC,MAAK,EAAWqpC,OAAOmK,EAAMmG,UAC/B,CACA,gBAAMM,CAAW/6B,EAAMg7B,EAAS,KAAMC,GAAiB,EAAOC,GAAsB,GAClF,GAAIp6C,MAAK,KAAUkf,KAGflf,MAAK,WACDA,MAAK,GAAsB4H,QAC5B5H,MAAK,KAFZ,CASA,GAHAA,MAAK,GAAwBmH,QAAQiO,gBACrCpV,MAAK,GAAwBy1C,iBAC7Bz1C,MAAK,GAAQkf,EACTA,IAAS4K,EAAqBC,KAKhC,OAJA/pB,KAAKq5C,iBAAgB,GACrBr5C,MAAK,KACLA,KAAKkwC,gBAAgBrH,YACrB7oC,MAAK,GAAsB2H,UAGzBuX,IAAS4K,EAAqBM,iBAC1BpqB,MAAK,IAAmBq6C,kBAEhCr6C,KAAKq5C,iBAAgB,SACfr5C,MAAK,KACXA,KAAKwxC,cACL,IAAK,MAAMgC,KAASxzC,MAAK,EAAW+e,SAClCy0B,EAAMyG,WAAW/6B,GAEnB,IAAKg7B,EAKH,OAJIC,GACFn6C,KAAKqxC,gCAEPrxC,MAAK,GAAsB2H,UAG7B,IAAK,MAAM4/B,KAAUvnC,MAAK,EAAY+e,SAChCwoB,EAAO+S,sBAAwBJ,GAAU3S,EAAO/3B,KAAO0qC,GACzDl6C,KAAKu6C,YAAYhT,GACb6S,GACF7S,EAAOiT,mBAGTjT,EAAOkT,WAGXz6C,MAAK,GAAsB2H,SArC3B,CAsCF,CACA,wBAAA0pC,GACMrxC,KAAKg2C,aAAa0E,2BACpB16C,KAAKg2C,aAAa2E,cAEtB,CACA,aAAAC,CAAc17C,GACRA,EAAQggB,OAASlf,MAAK,IAG1BA,KAAKwyC,UAAUqC,SAAS,6BAA8B,CACpDh1C,OAAQG,QACLd,GAEP,CACA,YAAA8zC,CAAartC,EAAM9G,GACjB,GAAKmB,MAAK,EAAV,CAGA,OAAQ2F,GACN,KAAK0kB,EAA2BE,OAE9B,YADAvqB,KAAKg2C,aAAa2E,aAAa97C,GAEjC,KAAKwrB,EAA2BU,wBAC9B/qB,MAAK,IAA2B66C,YAAYh8C,GAC5C,MACF,KAAKwrB,EAA2Ba,mBAC9BlrB,KAAKwyC,UAAUqC,SAAS,kBAAmB,CACzCh1C,OAAQG,KACRi2B,QAAS,CACPtwB,KAAM,UACN2H,KAAM,CACJ3H,KAAM,YACNm1C,OAAQ,yBAIb96C,MAAK,KAAmB,IAAIi9B,KAAOv4B,IAAIiB,EAAM9G,GAC9CmB,KAAK82C,eAAe,YAAaj4C,GAGrC,IAAK,MAAM0oC,KAAUvnC,MAAK,GACxBunC,EAAOyL,aAAartC,EAAM9G,GAE5B,IAAK,MAAMqqC,KAAclpC,MAAK,EAC5BkpC,EAAW6R,oBAAoBp1C,EAAM9G,EA3BvC,CA6BF,CACA,cAAAi4C,CAAenxC,EAAMq1C,EAASC,GAAe,GAC3C,IAAK,MAAM1T,KAAUvnC,MAAK,EAAY+e,SAChCwoB,EAAO2B,aAAevjC,GACxB4hC,EAAOwB,KAAKiS,IAGFh7C,MAAK,IAAgB7B,IAAIksB,EAA2Ba,sBAAuB,KAC3E8vB,GACZh7C,MAAK,GAAkB,CAAC,CAACqqB,EAA2Ba,mBAAoB8vB,IAE5E,CACA,aAAAE,CAAcC,GAAW,GACvB,GAAIn7C,MAAK,KAAem7C,EAAxB,CAGAn7C,MAAK,GAAam7C,EAClB,IAAK,MAAM3H,KAASxzC,MAAK,EAAW+e,SAC9Bo8B,EACF3H,EAAM4H,eAEN5H,EAAM6H,cAER7H,EAAMjO,IAAIyC,UAAUsN,OAAO,UAAW6F,EARxC,CAUF,CACA,QAAM,GACJ,IAAKn7C,MAAK,EAAY,CACpBA,MAAK,GAAa,EAClB,MAAMs7C,EAAW,GACjB,IAAK,MAAM9H,KAASxzC,MAAK,EAAW+e,SAClCu8B,EAAS/yC,KAAKirC,EAAMsG,gBAEhB3yC,QAAQqO,IAAI8lC,GAClB,IAAK,MAAM/T,KAAUvnC,MAAK,EAAY+e,SACpCwoB,EAAOuS,QAEX,CACF,CACA,MAEE,GADA95C,KAAKwxC,cACDxxC,MAAK,EAAY,CACnBA,MAAK,GAAa,EAClB,IAAK,MAAMwzC,KAASxzC,MAAK,EAAW+e,SAClCy0B,EAAMuG,UAER,IAAK,MAAMxS,KAAUvnC,MAAK,EAAY+e,SACpCwoB,EAAOwS,SAEX,CACF,CACA,UAAAwB,CAAW5B,GACT,MAAMnB,EAAU,GAChB,IAAK,MAAMjR,KAAUvnC,MAAK,EAAY+e,SAChCwoB,EAAOoS,YAAcA,GACvBnB,EAAQjwC,KAAKg/B,GAGjB,OAAOiR,CACT,CACA,SAAAgD,CAAUhsC,GACR,OAAOxP,MAAK,EAAY7B,IAAIqR,EAC9B,CACA,SAAAisC,CAAUlU,GACRvnC,MAAK,EAAY0E,IAAI6iC,EAAO/3B,GAAI+3B,EAClC,CACA,YAAAmU,CAAanU,GACPA,EAAOhC,IAAIkL,SAAS7lC,SAAS8lC,iBAC3B1wC,MAAK,GACPyzC,aAAazzC,MAAK,GAEpBA,MAAK,EAA+B27C,YAAW,KAC7C37C,KAAKg1C,qBACLh1C,MAAK,EAA+B,IAAI,GACvC,IAELA,MAAK,EAAYqpC,OAAO9B,EAAO/3B,IAC3B+3B,EAAO+S,qBACTt6C,MAAK,IAAkBqpC,OAAO9B,EAAO+S,qBAEvCt6C,KAAKy6C,SAASlT,GACTA,EAAO+S,qBAAwBt6C,MAAK,EAA8B2E,IAAI4iC,EAAO+S,sBAChFt6C,MAAK,GAAoBiQ,OAAOs3B,EAAO/3B,GAE3C,CACA,2BAAAosC,CAA4BrU,GAC1BvnC,MAAK,EAA8ByQ,IAAI82B,EAAO+S,qBAC9Ct6C,KAAK67C,6BAA6BtU,GAClCA,EAAOuU,SAAU,CACnB,CACA,0BAAAC,CAA2BzB,GACzB,OAAOt6C,MAAK,EAA8B2E,IAAI21C,EAChD,CACA,8BAAA0B,CAA+BzU,GAC7BvnC,MAAK,EAA8BqpC,OAAO9B,EAAO+S,qBACjDt6C,KAAKi8C,gCAAgC1U,GACrCA,EAAOuU,SAAU,CACnB,CACA,IAAkBvU,GAChB,MAAMiM,EAAQxzC,MAAK,EAAW7B,IAAIopC,EAAOoS,WACrCnG,EACFA,EAAM0I,aAAa3U,IAEnBvnC,KAAKy7C,UAAUlU,GACfvnC,KAAK+2C,uBAAuBxP,GAEhC,CACA,eAAA4U,CAAgB5U,GACVvnC,MAAK,IAAkBunC,IAG3BvnC,MAAK,EAAgBunC,EACjBA,GACFvnC,MAAK,GAAkBunC,EAAO6U,oBAElC,CACA,MAAI,GACF,IAAIC,EAAK,KACT,IAAKA,KAAMr8C,MAAK,IAChB,OAAOq8C,CACT,CACA,QAAAC,CAAS/U,GACHvnC,MAAK,KAAwBunC,GAC/BvnC,MAAK,GAAkBunC,EAAO6U,mBAElC,CACA,4BAAAG,CAA6BrT,GAC3BlpC,MAAK,GAAkBkpC,EAAWsQ,0BACpC,CACA,cAAAgD,CAAejV,GACb,GAAIvnC,MAAK,GAAiB2E,IAAI4iC,GAM5B,OALAvnC,MAAK,GAAiBqpC,OAAO9B,GAC7BA,EAAOkT,gBACPz6C,MAAK,GAAsB,CACzBqwC,kBAAmBrwC,KAAKy3C,eAI5Bz3C,MAAK,GAAiByQ,IAAI82B,GAC1BA,EAAOkV,SACPz8C,MAAK,GAAkBunC,EAAO6U,oBAC9Bp8C,MAAK,GAAsB,CACzBqwC,mBAAmB,GAEvB,CACA,WAAAkK,CAAYhT,GACVvnC,KAAK46C,cAAc,CACjB17B,KAAMqoB,EAAOroB,KACbg7B,OAAQ3S,EAAO/3B,KAEjBxP,MAAK,GAAwBy1C,iBAC7B,IAAK,MAAM4G,KAAMr8C,MAAK,GAChBq8C,IAAO9U,GACT8U,EAAG5B,WAGPz6C,MAAK,GAAiBwf,QACtBxf,MAAK,GAAiByQ,IAAI82B,GAC1BA,EAAOkV,SACPz8C,MAAK,GAAkBunC,EAAO6U,oBAC9Bp8C,MAAK,GAAsB,CACzBqwC,mBAAmB,GAEvB,CACA,UAAAqM,CAAWnV,GACT,OAAOvnC,MAAK,GAAiB2E,IAAI4iC,EACnC,CACA,uBAAIoV,GACF,OAAO38C,MAAK,GAAiB+e,SAASje,OAAOjC,KAC/C,CACA,QAAA47C,CAASlT,GACPA,EAAOkT,WACPz6C,MAAK,GAAiBqpC,OAAO9B,GAC7BvnC,MAAK,GAAsB,CACzBqwC,kBAAmBrwC,KAAKy3C,cAE5B,CACA,gBAAIA,GACF,OAAsC,IAA/Bz3C,MAAK,GAAiB6P,IAC/B,CACA,kBAAI0hC,GACF,OAAsC,IAA/BvxC,MAAK,GAAiB6P,MAAc7P,KAAK28C,oBAAoBpL,cACtE,CACA,IAAA3D,GACE5tC,MAAK,EAAgB4tC,OACrB5tC,MAAK,GAAsB,CACzBouC,mBAAoBpuC,MAAK,EAAgBouC,qBACzCC,oBAAoB,EACpB+B,QAASpwC,MAAK,OAEhBA,KAAKkwC,gBAAgBrH,MACvB,CACA,IAAAsF,GACEnuC,MAAK,EAAgBmuC,OACrBnuC,MAAK,GAAsB,CACzBouC,oBAAoB,EACpBC,mBAAoBruC,MAAK,EAAgBquC,qBACzC+B,QAASpwC,MAAK,MAElB,CACA,WAAAk5C,CAAYzkC,GACVzU,MAAK,EAAgByQ,IAAIgE,GACzBzU,MAAK,GAAsB,CACzBouC,oBAAoB,EACpBC,oBAAoB,EACpB+B,QAASpwC,MAAK,MAElB,CACA,cAAA48C,CAAej3C,GACb3F,MAAK,EAAgBsuC,UAAU3oC,EACjC,CACA,MACE,GAA8B,IAA1B3F,MAAK,EAAY6P,KACnB,OAAO,EAET,GAA8B,IAA1B7P,MAAK,EAAY6P,KACnB,IAAK,MAAM03B,KAAUvnC,MAAK,EAAY+e,SACpC,OAAOwoB,EAAO6I,UAGlB,OAAO,CACT,CACA,SACEpwC,KAAKy1C,iBACL,MAAMoH,EAAgB78C,KAAKg2C,cAAc8G,mBAAkB,GAC3D,IAAK98C,KAAKy3C,eAAiBoF,EACzB,OAEF,MAAMrE,EAAUqE,EAAgB,CAACA,GAAiB,IAAI78C,MAAK,IAOrD4tC,EAAO,KACX,IAAK,MAAMrG,KAAUiR,EACnBx4C,MAAK,GAAkBunC,EACzB,EAEFvnC,KAAKk5C,YAAY,CACfvL,IAZU,KACV3tC,KAAKkwC,gBAAgBnH,KAAK6E,EAAyB,IAAnB4K,EAAQh7C,OAAeg7C,EAAQ,GAAGtP,WAAasP,EAAQh7C,QACvF,IAAK,MAAM+pC,KAAUiR,EACnBjR,EAAOt3B,QACT,EASA29B,OACAE,UAAU,GAEd,CACA,cAAA2H,GACEz1C,MAAK,GAAey1C,gBACtB,CACA,qBAAA7E,GACE,OAAO5wC,MAAK,GAAiBA,KAAKy3C,YACpC,CACA,IAAee,GACb,IAAK,MAAMjR,KAAUvnC,MAAK,GACxBunC,EAAOkT,WAETz6C,MAAK,GAAiBwf,QACtB,IAAK,MAAM+nB,KAAUiR,EACfjR,EAAO6I,YAGXpwC,MAAK,GAAiByQ,IAAI82B,GAC1BA,EAAOkV,UAETz8C,MAAK,GAAsB,CACzBqwC,kBAAmBrwC,KAAKy3C,cAE5B,CACA,SAAArG,GACE,IAAK,MAAM7J,KAAUvnC,MAAK,GACxBunC,EAAOwV,SAET/8C,MAAK,GAAeA,MAAK,EAAY+e,SACvC,CACA,WAAAyyB,GACE,KAAIxxC,MAAK,IACPA,MAAK,EAAcy1C,iBACfz1C,MAAK,KAAU8pB,EAAqBC,SAItC/pB,MAAK,GAAwBy1C,kBAG5Bz1C,KAAKy3C,aAAV,CAGA,IAAK,MAAMlQ,KAAUvnC,MAAK,GACxBunC,EAAOkT,WAETz6C,MAAK,GAAiBwf,QACtBxf,MAAK,GAAsB,CACzBqwC,mBAAmB,GANrB,CAQF,CACA,wBAAAoB,CAAyBvuC,EAAG04B,EAAGohB,GAAW,GAIxC,GAHKA,GACHh9C,KAAKy1C,kBAEFz1C,KAAKy3C,aACR,OAEFz3C,MAAK,GAAa,IAAMkD,EACxBlD,MAAK,GAAa,IAAM47B,EACxB,MAAOqhB,EAAQC,GAAUl9C,MAAK,GACxBw4C,EAAU,IAAIx4C,MAAK,IAErBA,MAAK,IACPyzC,aAAazzC,MAAK,IAEpBA,MAAK,GAAwB27C,YAAW,KACtC37C,MAAK,GAAwB,KAC7BA,MAAK,GAAa,GAAKA,MAAK,GAAa,GAAK,EAC9CA,KAAKk5C,YAAY,CACfvL,IAAK,KACH,IAAK,MAAMpG,KAAUiR,EACfx4C,MAAK,EAAY2E,IAAI4iC,EAAO/3B,MAC9B+3B,EAAO4V,gBAAgBF,EAAQC,GAC/B3V,EAAO6V,kBAEX,EAEFxP,KAAM,KACJ,IAAK,MAAMrG,KAAUiR,EACfx4C,MAAK,EAAY2E,IAAI4iC,EAAO/3B,MAC9B+3B,EAAO4V,iBAAiBF,GAASC,GACjC3V,EAAO6V,kBAEX,EAEFtP,UAAU,GACV,GAzBiB,KA2BrB,IAAK,MAAMvG,KAAUiR,EACnBjR,EAAO4V,gBAAgBj6C,EAAG04B,GAC1B2L,EAAO6V,iBAEX,CACA,gBAAAC,GACE,GAAKr9C,KAAKy3C,aAAV,CAGAz3C,KAAKq0C,mBAAkB,GACvBr0C,MAAK,EAAmB,IAAIi9B,IAC5B,IAAK,MAAMsK,KAAUvnC,MAAK,GACxBA,MAAK,EAAiB0E,IAAI6iC,EAAQ,CAChC+V,OAAQ/V,EAAOrkC,EACfq6C,OAAQhW,EAAO3L,EACf4hB,eAAgBjW,EAAOoS,UACvB8D,KAAM,EACNC,KAAM,EACNC,cAAe,GAVnB,CAaF,CACA,cAAAC,GACE,IAAK59C,MAAK,EACR,OAAO,EAETA,KAAKq0C,mBAAkB,GACvB,MAAMlsC,EAAMnI,MAAK,EACjBA,MAAK,EAAmB,KACxB,IAAI69C,GAAyB,EAC7B,IAAK,OAAO,EACV36C,EAAC,EACD04B,EAAC,UACD+d,GACC96C,KAAUsJ,EACXtJ,EAAM4+C,KAAOv6C,EACbrE,EAAM6+C,KAAO9hB,EACb/8B,EAAM8+C,aAAehE,EACrBkE,IAA2B36C,IAAMrE,EAAMy+C,QAAU1hB,IAAM/8B,EAAM0+C,QAAU5D,IAAc96C,EAAM2+C,eAE7F,IAAKK,EACH,OAAO,EAET,MAAMC,EAAO,CAACvW,EAAQrkC,EAAG04B,EAAG+d,KAC1B,GAAI35C,MAAK,EAAY2E,IAAI4iC,EAAO/3B,IAAK,CACnC,MAAMo7B,EAAS5qC,MAAK,EAAW7B,IAAIw7C,GAC/B/O,EACFrD,EAAOwW,sBAAsBnT,EAAQ1nC,EAAG04B,IAExC2L,EAAOoS,UAAYA,EACnBpS,EAAOrkC,EAAIA,EACXqkC,EAAO3L,EAAIA,EAEf,GAuBF,OArBA57B,KAAKk5C,YAAY,CACfvL,IAAK,KACH,IAAK,MAAOpG,GAAQ,KAClBkW,EAAI,KACJC,EAAI,aACJC,MACIx1C,EACJ21C,EAAKvW,EAAQkW,EAAMC,EAAMC,EAC3B,EAEF/P,KAAM,KACJ,IAAK,MAAOrG,GAAQ,OAClB+V,EAAM,OACNC,EAAM,eACNC,MACIr1C,EACJ21C,EAAKvW,EAAQ+V,EAAQC,EAAQC,EAC/B,EAEF1P,UAAU,KAEL,CACT,CACA,mBAAAkQ,CAAoBC,EAAIC,GACtB,GAAKl+C,MAAK,EAGV,IAAK,MAAMunC,KAAUvnC,MAAK,EAAiB+D,OACzCwjC,EAAO4W,KAAKF,EAAIC,EAEpB,CACA,OAAAE,CAAQ7W,GACN,GAAsB,OAAlBA,EAAOqD,OAAiB,CAC1B,MAAMA,EAAS5qC,KAAK05C,SAASnS,EAAOoS,WAChC/O,GACFA,EAAOyT,aAAa9W,GACpBqD,EAAOsR,aAAa3U,KAEpBvnC,KAAKy7C,UAAUlU,GACfvnC,KAAK+2C,uBAAuBxP,GAC5BA,EAAO6W,UAEX,MACE7W,EAAOqD,OAAOsR,aAAa3U,EAE/B,CACA,4BAAI4R,GACF,OAAOn5C,KAAKs+C,aAAaC,2BAA4D,IAA/Bv+C,MAAK,GAAiB6P,MAAc7P,KAAK28C,oBAAoB4B,yBACrH,CACA,QAAAC,CAASjX,GACP,OAAOvnC,MAAK,IAAkBunC,CAChC,CACA,SAAA+W,GACE,OAAOt+C,MAAK,CACd,CACA,OAAAy+C,GACE,OAAOz+C,MAAK,EACd,CACA,gBAAI0+C,GACF,OAAOjpB,EAAOz1B,KAAM,eAAgB,IAAIirC,GAC1C,CACA,iBAAAyL,CAAkBX,GAChB,IAAKA,EACH,OAAO,KAET,MAAMI,EAAYvrC,SAASwrC,eAC3B,IAAK,IAAIrwC,EAAI,EAAGi8B,EAAKmU,EAAUwI,WAAY54C,EAAIi8B,EAAIj8B,IACjD,IAAKgwC,EAAUtF,SAAS0F,EAAUyI,WAAW74C,GAAG84C,yBAC9C,OAAO,KAGX,MACE37C,EAAGiyC,EACHvZ,EAAGwZ,EACHpU,MAAO8d,EACP7d,OAAQ8d,GACNhJ,EAAUV,wBACd,IAAI2J,EACJ,OAAQjJ,EAAUkJ,aAAa,uBAC7B,IAAK,KACHD,EAAU,CAAC97C,EAAG04B,EAAGgK,EAAGC,KAAM,CACxB3iC,GAAI04B,EAAIwZ,GAAU2J,EAClBnjB,EAAG,GAAK14B,EAAI0iC,EAAIuP,GAAU2J,EAC1B9d,MAAO6E,EAAIkZ,EACX9d,OAAQ2E,EAAIkZ,IAEd,MACF,IAAK,MACHE,EAAU,CAAC97C,EAAG04B,EAAGgK,EAAGC,KAAM,CACxB3iC,EAAG,GAAKA,EAAI0iC,EAAIuP,GAAU2J,EAC1BljB,EAAG,GAAKA,EAAIiK,EAAIuP,GAAU2J,EAC1B/d,MAAO4E,EAAIkZ,EACX7d,OAAQ4E,EAAIkZ,IAEd,MACF,IAAK,MACHC,EAAU,CAAC97C,EAAG04B,EAAGgK,EAAGC,KAAM,CACxB3iC,EAAG,GAAK04B,EAAIiK,EAAIuP,GAAU2J,EAC1BnjB,GAAI14B,EAAIiyC,GAAU2J,EAClB9d,MAAO6E,EAAIkZ,EACX9d,OAAQ2E,EAAIkZ,IAEd,MACF,QACEE,EAAU,CAAC97C,EAAG04B,EAAGgK,EAAGC,KAAM,CACxB3iC,GAAIA,EAAIiyC,GAAU2J,EAClBljB,GAAIA,EAAIwZ,GAAU2J,EAClB/d,MAAO4E,EAAIkZ,EACX7d,OAAQ4E,EAAIkZ,IAIlB,MAAMxU,EAAQ,GACd,IAAK,IAAIxkC,EAAI,EAAGi8B,EAAKmU,EAAUwI,WAAY54C,EAAIi8B,EAAIj8B,IAAK,CACtD,MAAMm5C,EAAQ/I,EAAUyI,WAAW74C,GACnC,IAAIm5C,EAAMC,UAGV,IAAK,MAAM,EACTj8C,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,KACGie,EAAME,iBACK,IAAVpe,GAA0B,IAAXC,GAGnBsJ,EAAMhiC,KAAKy2C,EAAQ97C,EAAG04B,EAAGoF,EAAOC,GAEpC,CACA,OAAwB,IAAjBsJ,EAAM/sC,OAAe,KAAO+sC,CACrC,CACA,4BAAAsR,EAA6B,oBAC3BvB,EAAmB,GACnB9qC,KAECxP,MAAK,IAAgC,IAAIi9B,KAAOv4B,IAAI41C,EAAqB9qC,EAC5E,CACA,+BAAAysC,EAAgC,oBAC9B3B,IAEAt6C,MAAK,GAA6BqpC,OAAOiR,EAC3C,CACA,uBAAA+E,CAAwBC,GACtB,MAAMC,EAAWv/C,MAAK,GAA6B7B,IAAImhD,EAAWhyC,KAAKkC,IACvE,IAAK+vC,EACH,OAEF,MAAMhY,EAASvnC,MAAK,EAAmBw/C,YAAYD,GAC9ChY,IAGDvnC,MAAK,KAAU8pB,EAAqBC,MAASwd,EAAOkY,kBAGxDlY,EAAO8X,wBAAwBC,EACjC,CACA,gBAAAI,CAAiBC,EAAcrF,EAAqBrN,GAClD,MAAM1F,EAASvnC,MAAK,IAAkB7B,IAAIwhD,GACrCpY,IAGLA,EAAOqY,UAAUtF,EAAqBrN,GACtCjtC,MAAK,GAAiBqpC,OAAOsW,GAC/B,CACA,gBAAAE,CAAiBF,EAAcpY,IAC5BvnC,MAAK,KAAqB,IAAIi9B,KAAOv4B,IAAIi7C,EAAcpY,EAC1D,EAKF,MAAMuY,GACJ,GAAW,KACX,KAAqB,EACrB,IAAiB,KACjB,IAAsB,KACtB,IAAkB,KAClB,IAAyB,KACzB,KAA0B,EAC1B,IAAS,KACT,GAAU,KACV,IAAe,KACf,IAAsB,KACtB,KAAqB,EACrBlhB,UAAwB,KACxBA,aAAe,KACf,WAAAr/B,CAAYgoC,GACVvnC,MAAK,EAAUunC,EACfvnC,MAAK,GAAqBunC,EAAOU,WAAW0L,kBAC5CmM,IAAQ,KAAmBvhD,OAAOipC,OAAO,CACvCuY,MAAO,yCACP,cAAe,+CACf1pB,QAAS,2CACT,gBAAiB,iDACjB2pB,OAAQ,6CACR,eAAgB,oDAEpB,CACA,iBAAOC,CAAWC,GAChBJ,GAAQK,QAAUD,CACpB,CACA,YAAMpY,GACJ,MAAM0B,EAAUxpC,MAAK,GAAiB4K,SAAS0G,cAAc,UAC7Dk4B,EAAQpB,UAAY,UACpBoB,EAAQJ,SAAW,IACnB,MAAMgX,EAAQpgD,MAAK,GAAsB4K,SAAS0G,cAAc,QAChEk4B,EAAQl1B,OAAO8rC,GACXpgD,MAAK,IACPwpC,EAAQxB,UAAUv3B,IAAI,OACtB+4B,EAAQxD,aAAa,eAAgB8Z,IAAQ,GAAezpB,SAC5D+pB,EAAMpa,aAAa,eAAgB8Z,IAAQ,GAAe,oBAE1DtW,EAAQxD,aAAa,eAAgB,gCACrCoa,EAAMpa,aAAa,eAAgB,uCAErC,MAAM3H,EAASr+B,MAAK,EAAQioC,WAAWC,QACvCsB,EAAQ/K,iBAAiB,cAAeiF,GAAe,CACrDrF,WAEFmL,EAAQ/K,iBAAiB,eAAekQ,GAASA,EAAM9K,mBAAmB,CACxExF,WAEF,MAAMgiB,EAAU1R,IACdA,EAAMhL,iBACN3jC,MAAK,EAAQioC,WAAWsM,YAAYv0C,MAAK,GACrCA,MAAK,IACPA,MAAK,EAAQsgD,iBAAiB,CAC5BxF,OAAQ,kDACRxtC,KAAM,CACJ8yC,MAAOpgD,MAAK,KAGlB,EAeF,OAbAwpC,EAAQ/K,iBAAiB,QAAS4hB,EAAS,CACzCzX,SAAS,EACTvK,WAEFmL,EAAQ/K,iBAAiB,WAAWkQ,IAC9BA,EAAM3sC,SAAWwnC,GAAyB,UAAdmF,EAAMjmC,MACpC1I,MAAK,IAA0B,EAC/BqgD,EAAQ1R,GACV,GACC,CACDtQ,iBAEIr+B,MAAK,KACJwpC,CACT,CACA,MAAI,GACF,OAAOxpC,MAAK,EAAY,QAA6B,OAAlBA,MAAK,GAAqBA,KAAKugD,aAAe,WAAY,SAC/F,CACA,MAAAC,GACOxgD,MAAK,KAGVA,MAAK,GAAei1C,MAAM,CACxBwL,aAAczgD,MAAK,KAErBA,MAAK,IAA0B,EACjC,CACA,OAAAowC,GACE,OAAIpwC,MAAK,GACkB,OAAlBA,MAAK,GAENA,MAAK,IAAaA,MAAK,EACjC,CACA,OAAA0gD,GACE,OAAI1gD,MAAK,GACkB,OAAlBA,MAAK,KAAuBA,MAAK,GAEnCA,KAAKowC,SACd,CACA,eAAImQ,GACF,OAAOvgD,MAAK,EACd,CACA,oBAAM2gD,CAAeJ,GACG,OAAlBvgD,MAAK,IAGTA,MAAK,GAAeugD,EACpBvgD,MAAK,SAA4B8/C,GAAQK,MAAMhiD,IAAI,+DAAgE,CACjHyiD,iBAAkBL,IAEpBvgD,MAAK,KACP,CACA,kBAAA6gD,CAAmBxR,GAAa,GAC9B,IAAKrvC,MAAK,IAAsBA,MAAK,EAGnC,OAFAA,MAAK,IAAQiQ,cACbjQ,MAAK,GAAS,MAGhB,IAAKA,MAAK,GAAQ,CAChB,MAAM8gD,EAAQ9gD,MAAK,GAAS4K,SAAS0G,cAAc,OACnDwvC,EAAM1Y,UAAY,iBAClBpoC,MAAK,EAAQulC,IAAIjxB,OAAOwsC,EAC1B,CACA9gD,MAAK,GAAOgoC,UAAUsN,OAAO,UAAWjG,EAC1C,CACA,SAAAqJ,CAAUqI,GACR,IAAIvX,EAAUxpC,MAAK,EAInB,OAHK+gD,GAAgB/gD,MAAK,KAAiBwpC,IACzCA,EAAUxpC,MAAK,IAEV,CACLwpC,UACAwX,WAAYhhD,MAAK,GACjBugD,YAAavgD,MAAK,GAClBihD,mBAAoBjhD,MAAK,GAE7B,CACA,QAAIsN,GACF,MAAO,CACLk8B,QAASxpC,MAAK,EACdghD,WAAYhhD,MAAK,GAErB,CACA,QAAIsN,EAAK,QACPk8B,EAAO,WACPwX,EAAU,YACVT,EAAW,mBACXU,EAAkB,OAClBC,GAAS,IAELX,IACFvgD,MAAK,GAAeugD,EACpBvgD,MAAK,GAAsBihD,GAEzBjhD,MAAK,IAAawpC,GAAWxpC,MAAK,KAAuBghD,IAGxDE,IACHlhD,MAAK,EAAWwpC,EAChBxpC,MAAK,GAAqBghD,GAE5BhhD,MAAK,KACP,CACA,MAAAs1C,CAAO6L,GAAU,GACVnhD,MAAK,MAGLmhD,GAAWnhD,MAAK,KACnByzC,aAAazzC,MAAK,IAClBA,MAAK,GAAyB,MAEhCA,MAAK,GAAeohD,UAAYD,EAClC,CACA,KAAAnY,GACEhpC,MAAK,EAAQsgD,iBAAiB,CAC5BxF,OAAQ,oDACRxtC,KAAM,CACJ8yC,MAAOpgD,MAAK,KAGlB,CACA,OAAAoqC,GACEpqC,MAAK,IAAgBiQ,SACrBjQ,MAAK,GAAiB,KACtBA,MAAK,GAAsB,KAC3BA,MAAK,GAAkB,KACvBA,MAAK,IAAQiQ,SACbjQ,MAAK,GAAS,IAChB,CACA,QAAM,GACJ,MAAMmpC,EAASnpC,MAAK,GACpB,IAAKmpC,EACH,OAEF,GAAInpC,MAAK,IAIP,GAHAmpC,EAAOnB,UAAUsN,OAAO,SAAUt1C,MAAK,GACvCmpC,EAAOnD,aAAa,eAAgB8Z,IAAQ,GAAe9/C,MAAK,KAChEA,MAAK,IAAqBgmC,aAAa,eAAgB8Z,IAAQ,GAAe,GAAG9/C,MAAK,cACjFA,MAAK,EAER,YADAA,MAAK,IAAiBiQ,aAGnB,CACL,IAAKjQ,MAAK,IAAaA,MAAK,GAG1B,OAFAmpC,EAAOnB,UAAU/3B,OAAO,aACxBjQ,MAAK,IAAiBiQ,SAGxBk5B,EAAOnB,UAAUv3B,IAAI,QACrB04B,EAAOnD,aAAa,eAAgB,oCACtC,CACA,IAAIqb,EAAUrhD,MAAK,GACnB,IAAKqhD,EAAS,CACZrhD,MAAK,GAAkBqhD,EAAUz2C,SAAS0G,cAAc,QACxD+vC,EAAQjZ,UAAY,UACpBiZ,EAAQrb,aAAa,OAAQ,WAC7Bqb,EAAQ7xC,GAAK,oBAAoBxP,MAAK,EAAQwP,KAC9C,MAAM8xC,EAAwB,IACxBjjB,EAASr+B,MAAK,EAAQioC,WAAWC,QACvC7J,EAAOI,iBAAiB,SAAS,KAC/BgV,aAAazzC,MAAK,IAClBA,MAAK,GAAyB,IAAI,GACjC,CACD40C,MAAM,IAERzL,EAAO1K,iBAAiB,cAAc,KACpCz+B,MAAK,GAAyB27C,YAAW,KACvC37C,MAAK,GAAyB,KAC9BA,MAAK,GAAgBgoC,UAAUv3B,IAAI,QACnCzQ,MAAK,EAAQsgD,iBAAiB,CAC5BxF,OAAQ,oBACR,GACDwG,EAAsB,GACxB,CACDjjB,WAEF8K,EAAO1K,iBAAiB,cAAc,KAChCz+B,MAAK,KACPyzC,aAAazzC,MAAK,IAClBA,MAAK,GAAyB,MAEhCA,MAAK,IAAiBgoC,UAAU/3B,OAAO,OAAO,GAC7C,CACDouB,UAEJ,CACIr+B,MAAK,GACPqhD,EAAQrb,aAAa,eAAgB,6CAErCqb,EAAQjK,gBAAgB,gBACxBiK,EAAQE,YAAcvhD,MAAK,GAExBqhD,EAAQG,YACXrY,EAAO70B,OAAO+sC,GAEhB,MAAM1Y,EAAU3oC,MAAK,EAAQyhD,uBAC7B9Y,GAAS3C,aAAa,mBAAoBqb,EAAQ7xC,GACpD,EAKF,MAAMkyC,GACJ,IACA,KAAc,EACd,IAAqB,KACrB,IACA,IACA,IACA,IACA,IAAiB,KACjB,IACA,IAAa,KACb,IACA,IAAe,KACf,WAAAniD,EAAY,UACVmyC,EAAS,mBACTiQ,EAAqB,KAAI,kBACzBC,EAAoB,KAAI,aACxBC,EAAe,KAAI,WACnBC,EAAa,KAAI,WACjBC,EAAa,KAAI,OACjB1jB,IAEAr+B,MAAK,GAAa0xC,EAClB1xC,MAAK,GAAqB4hD,EAC1B5hD,MAAK,GAAsB2hD,EAC3B3hD,MAAK,GAAgB6hD,EACrB7hD,MAAK,GAAc8hD,EACnB9hD,MAAK,GAAc+hD,EACnB/hD,MAAK,GAAkB,IAAIo+B,gBAC3Bp+B,MAAK,GAAUi+B,YAAYC,IAAI,CAACG,EAAQr+B,MAAK,GAAgBq+B,SAC7DqT,EAAUjT,iBAAiB,aAAcz+B,MAAK,GAAcsC,KAAKtC,MAAO,CACtEgiD,SAAS,EACT3jB,OAAQr+B,MAAK,IAEjB,CACA,+BAAIiiD,GACF,OAAO,GAAKhc,GAAYC,UAC1B,CACA,IAAc6M,GACZ,GAAI/yC,MAAK,OACP,OAEF,GAA2B,IAAvB+yC,EAAImP,QAAQ1kD,OAAc,CAC5B,GAAIwC,MAAK,GACP,OAEF,MAAMmiD,EAAgBniD,MAAK,GAAiB,IAAIo+B,gBAC1CC,EAASJ,YAAYC,IAAI,CAACl+B,MAAK,GAASmiD,EAAc9jB,SACtDqT,EAAY1xC,MAAK,GACjBoiD,EAAO,CACXxZ,SAAS,EACTvK,SACA2jB,SAAS,GAELK,EAAoBjyC,IACF,UAAlBA,EAAEkyC,cACJtiD,MAAK,IAAgBu+B,QACrBv+B,MAAK,GAAiB,KACxB,EAUF,OARA0xC,EAAUjT,iBAAiB,eAAeruB,IAClB,UAAlBA,EAAEkyC,cACJ1e,GAAUxzB,GACViyC,EAAkBjyC,GACpB,GACCgyC,GACH1Q,EAAUjT,iBAAiB,YAAa4jB,EAAmBD,QAC3D1Q,EAAUjT,iBAAiB,gBAAiB4jB,EAAmBD,EAEjE,CACA,IAAKpiD,MAAK,GAAc,CACtBA,MAAK,GAAe,IAAIo+B,gBACxB,MAAMC,EAASJ,YAAYC,IAAI,CAACl+B,MAAK,GAASA,MAAK,GAAaq+B,SAC1DqT,EAAY1xC,MAAK,GACjBuiD,EAAM,CACVlkB,SACAuK,SAAS,EACToZ,SAAS,GAEXtQ,EAAUjT,iBAAiB,YAAaz+B,MAAK,GAAasC,KAAKtC,MAAOuiD,GACtE,MAAMC,EAAaxiD,MAAK,GAAYsC,KAAKtC,MACzC0xC,EAAUjT,iBAAiB,WAAY+jB,EAAYD,GACnD7Q,EAAUjT,iBAAiB,cAAe+jB,EAAYD,GACtDA,EAAI3Z,SAAU,EACd8I,EAAUjT,iBAAiB,cAAemF,GAAW2e,GACrD7Q,EAAUjT,iBAAiB,cAAemF,GAAW2e,GACrD7Q,EAAUjT,iBAAiB,gBAAiBmF,GAAW2e,GACvD7Q,EAAUjT,iBAAiB,YAAamF,GAAW2e,GACnDviD,MAAK,MACP,CAEA,GADA4jC,GAAUmP,GACiB,IAAvBA,EAAImP,QAAQ1kD,QAAgBwC,MAAK,OAEnC,YADAA,MAAK,GAAa,MAGpB,IAAKyiD,EAAQC,GAAU3P,EAAImP,QACvBO,EAAOE,WAAaD,EAAOC,cAC5BF,EAAQC,GAAU,CAACA,EAAQD,IAE9BziD,MAAK,GAAa,CAChB4iD,QAASH,EAAOI,QAChBC,QAASL,EAAOM,QAChBC,QAASN,EAAOG,QAChBI,QAASP,EAAOK,QAEpB,CACA,IAAahQ,GACX,IAAK/yC,MAAK,IAAqC,IAAvB+yC,EAAImP,QAAQ1kD,OAClC,OAEFomC,GAAUmP,GACV,IAAK0P,EAAQC,GAAU3P,EAAImP,QACvBO,EAAOE,WAAaD,EAAOC,cAC5BF,EAAQC,GAAU,CAACA,EAAQD,IAE9B,MACEI,QAASK,EACTH,QAASI,GACPV,GAEFI,QAASO,EACTL,QAASM,GACPX,EACEY,EAAYtjD,MAAK,IAErB4iD,QAASW,EACTT,QAASU,EACTR,QAASS,EACTR,QAASS,GACPJ,EACEK,EAAWF,EAAWF,EACtBK,EAAWF,EAAWF,EACtBK,EAAWT,EAAWF,EACtBY,EAAWT,EAAWF,EACtBY,EAAWhhD,KAAKihD,MAAMH,EAAUC,IAAa,EAC7CG,EAAYlhD,KAAKihD,MAAML,EAAUC,IAAa,EACpD,IAAK5jD,MAAK,IAAe+C,KAAK25B,IAAIunB,EAAYF,IAAarC,GAAaO,4BACtE,OAMF,GAJAqB,EAAUV,QAAUM,EACpBI,EAAUR,QAAUK,EACpBG,EAAUN,QAAUI,EACpBE,EAAUL,QAAUI,GACfrjD,MAAK,GAER,YADAA,MAAK,IAAc,GAGrB,MAAMkkD,EAAS,EAAEhB,EAAWE,GAAY,GAAID,EAAWE,GAAY,GACnErjD,MAAK,KAAckkD,EAAQD,EAAWF,EACxC,CACA,IAAYhR,GACNA,EAAImP,QAAQ1kD,QAAU,IAGtBwC,MAAK,KACPA,MAAK,GAAau+B,QAClBv+B,MAAK,GAAe,KACpBA,MAAK,QAEFA,MAAK,KAGV4jC,GAAUmP,GACV/yC,MAAK,GAAa,KAClBA,MAAK,IAAc,GACrB,CACA,OAAAoqC,GACEpqC,MAAK,IAAiBu+B,QACtBv+B,MAAK,GAAkB,KACvBA,MAAK,IAAgBu+B,QACrBv+B,MAAK,GAAiB,IACxB,EAUF,MAAMmkD,GACJ,IAAqB,KACrB,IAAkB,KAClB,GAAW,KACX,KAAY,EACZ,IAAiB,KACjB,IAAmB,GACnB,KAAmB,EACnB,IAAe,KACf,IAAqB,KACrB,IAAmB,KACnB,IAAW,KACX,IAAsB,GACtB,KAAkB,EAClB,IAAe,KACf,KAAa,EACb,KAAgB,EAChB,KAA+B,EAC/B,IAAoB,KACpB,IAAa,EACb,IAAa,EACb,IAAqB,KACrB,IAAgB,KAChBzH,YAAa,EACb0H,SAAU,EACVC,aAAe,KACfC,gBAAkB/lD,OAAO6M,OAAO,MAChCm5C,aAAe,KACfC,YAAa,EACbvc,WAAa,KACbS,qBAAsB,EACtB9J,aAAe,KACfA,oBAAsB,KACtB,KAAe,EACf,IAAUulB,GAAiBM,UAC3B7lB,yBAA2B,EAC3BA,qBAAuB,IAAIsQ,GAC3BtQ,eAAiB,EACjBA,yBAA2B,IAC3B,kCAAW8lB,GACT,MAAMC,EAASR,GAAiB1kD,UAAUmlD,oBACpC5T,EAAQf,GAA0BgB,gBAClCC,EAAMjB,GAA0BkB,cACtC,OAAO1b,EAAOz1B,KAAM,0BAA2B,IAAIuuC,GAAgB,CAAC,CAAC,CAAC,YAAa,iBAAkBoW,EAAQ,CAC3Gp9C,KAAM,EAAEypC,EAAO,KACb,CAAC,CAAC,iBAAkB,uBAAwB2T,EAAQ,CACtDp9C,KAAM,EAAE2pC,EAAK,KACX,CAAC,CAAC,aAAc,kBAAmByT,EAAQ,CAC7Cp9C,KAAM,CAACypC,EAAO,KACZ,CAAC,CAAC,kBAAmB,wBAAyB2T,EAAQ,CACxDp9C,KAAM,CAAC2pC,EAAK,KACV,CAAC,CAAC,UAAW,eAAgByT,EAAQ,CACvCp9C,KAAM,CAAC,GAAIypC,KACT,CAAC,CAAC,eAAgB,qBAAsB2T,EAAQ,CAClDp9C,KAAM,CAAC,GAAI2pC,KACT,CAAC,CAAC,YAAa,iBAAkByT,EAAQ,CAC3Cp9C,KAAM,CAAC,EAAGypC,KACR,CAAC,CAAC,iBAAkB,uBAAwB2T,EAAQ,CACtDp9C,KAAM,CAAC,EAAG2pC,KACR,CAAC,CAAC,SAAU,cAAeiT,GAAiB1kD,UAAUolD,6BAC5D,CACA,WAAAtlD,CAAYulD,GACV9kD,KAAK4qC,OAASka,EAAWla,OACzB5qC,KAAKwP,GAAKs1C,EAAWt1C,GACrBxP,KAAKghC,MAAQhhC,KAAKihC,OAAS,KAC3BjhC,KAAK25C,UAAYmL,EAAWla,OAAO+O,UACnC35C,KAAKf,KAAO6lD,EAAW7lD,KACvBe,KAAKulC,IAAM,KACXvlC,KAAKioC,WAAa6c,EAAWxa,UAC7BtqC,KAAKs6C,oBAAsB,KAC3Bt6C,KAAK+kD,sBAAuB,EAC5B/kD,KAAKskD,gBAAgBU,WAAaF,EAAWE,WAC7ChlD,KAAKilD,oBAAsB,KAC3BjlD,KAAKs6C,oBAAsBwK,EAAWxK,qBAAuB,KAC7D,MAAM,SACJla,EACAc,SAAS,UACPE,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,IAEAvhC,KAAK4qC,OAAOpF,SAChBxlC,KAAKogC,SAAWA,EAChBpgC,KAAKklD,cAAgB,IAAM9kB,EAAWpgC,KAAKioC,WAAWkL,eAAe/S,UAAY,IACjFpgC,KAAKmlD,eAAiB,CAAC/jB,EAAWC,GAClCrhC,KAAKolD,gBAAkB,CAAC9jB,EAAOC,GAC/B,MAAOP,EAAOC,GAAUjhC,KAAKqlD,iBAC7BrlD,KAAKkD,EAAI4hD,EAAW5hD,EAAI89B,EACxBhhC,KAAK47B,EAAIkpB,EAAWlpB,EAAIqF,EACxBjhC,KAAKslD,iBAAkB,EACvBtlD,KAAK87C,SAAU,CACjB,CACA,cAAI5S,GACF,OAAO3qC,OAAOsK,eAAe7I,MAAMT,YAAYgmD,KACjD,CACA,QAAIrmC,GACF,OAAO3gB,OAAOsK,eAAe7I,MAAMT,YAAYimD,WACjD,CACA,mBAAWC,GACT,OAAO,CACT,CACA,4BAAWC,GACT,OAAOjwB,EAAOz1B,KAAM,oBAAqBA,KAAK2lD,cAAc3V,WAAW,cACzE,CACA,8BAAO4V,CAAwBre,GAC7B,MAAMse,EAAa,IAAIC,GAAW,CAChCt2C,GAAI+3B,EAAOqD,OAAOmb,YAClBnb,OAAQrD,EAAOqD,OACfN,UAAW/C,EAAOU,aAEpB4d,EAAWvL,oBAAsB/S,EAAO+S,oBACxCuL,EAAW/J,SAAU,EACrB+J,EAAW5d,WAAW8O,uBAAuB8O,EAC/C,CACA,iBAAO5F,CAAWC,EAAMjY,GAYtB,GAXAkc,GAAiBhE,QAAUD,EAC3BiE,GAAiB6B,eAAiBznD,OAAOipC,OAAO,CAC9C9F,QAAS,gCACTukB,UAAW,kCACXC,SAAU,iCACVC,YAAa,oCACbxkB,YAAa,oCACbykB,aAAc,qCACdC,WAAY,mCACZC,WAAY,sCAE6B,IAAvCnC,GAAiBoC,iBACnB,OAEF,MAAMz7C,EAAQ2kC,iBAAiB7kC,SAAS47C,iBACxCrC,GAAiBoC,iBAAmBE,WAAW37C,EAAM47C,iBAAiB,qBAAuB,CAC/F,CACA,0BAAO3L,CAAoBwK,EAAOoB,GAAS,CAC3C,oCAAWnN,GACT,MAAO,EACT,CACA,+BAAOlB,CAAyBsO,GAC9B,OAAO,CACT,CACA,YAAO5O,CAAMtmC,EAAMk5B,GACjBpW,EAAY,kBACd,CACA,sBAAI4nB,GACF,MAAO,EACT,CACA,gBAAIyK,GACF,OAAO7mD,MAAK,EACd,CACA,gBAAI6mD,CAAahoD,GACfmB,MAAK,GAAenB,EACpBmB,KAAKulC,KAAKyC,UAAUsN,OAAO,YAAaz2C,EAC1C,CACA,kBAAI0yC,GACF,OAAO,CACT,CACA,MAAAuV,GACE,MAAO1lB,EAAWC,GAAcrhC,KAAKmlD,eACrC,OAAQnlD,KAAK+mD,gBACX,KAAK,GACH/mD,KAAKkD,GAAKlD,KAAKihC,OAASI,GAA0B,EAAZD,GACtCphC,KAAK47B,GAAK57B,KAAKghC,MAAQI,GAA0B,EAAbC,GACpC,MACF,KAAK,IACHrhC,KAAKkD,GAAKlD,KAAKghC,MAAQ,EACvBhhC,KAAK47B,GAAK57B,KAAKihC,OAAS,EACxB,MACF,KAAK,IACHjhC,KAAKkD,GAAKlD,KAAKihC,OAASI,GAA0B,EAAZD,GACtCphC,KAAK47B,GAAK57B,KAAKghC,MAAQI,GAA0B,EAAbC,GACpC,MACF,QACErhC,KAAKkD,GAAKlD,KAAKghC,MAAQ,EACvBhhC,KAAK47B,GAAK57B,KAAKihC,OAAS,EAG5BjhC,KAAKgnD,mBACP,CACA,WAAA9N,CAAYzkC,GACVzU,KAAKioC,WAAWiR,YAAYzkC,EAC9B,CACA,gBAAIuhC,GACF,OAAOh2C,KAAKioC,WAAW+N,YACzB,CACA,eAAAiR,GACEjnD,KAAKulC,IAAIz6B,MAAMo8C,OAAS,CAC1B,CACA,eAAAC,GACEnnD,KAAKulC,IAAIz6B,MAAMo8C,OAASlnD,MAAK,EAC/B,CACA,SAAAonD,CAAUxc,GACO,OAAXA,GACF5qC,KAAK25C,UAAY/O,EAAO+O,UACxB35C,KAAKmlD,eAAiBva,EAAOua,gBAE7BnlD,MAAK,KAEPA,KAAK4qC,OAASA,CAChB,CACA,OAAAyc,CAAQ1Y,GACD3uC,KAAK0oC,sBAGL1oC,MAAK,GAGRA,MAAK,IAAkB,EAFvBA,KAAK4qC,OAAO2P,YAAYv6C,MAI5B,CACA,QAAAsnD,CAAS3Y,GACP,IAAK3uC,KAAK0oC,oBACR,OAEF,IAAK1oC,KAAKslD,gBACR,OAEF,MAAMtjD,EAAS2sC,EAAM4Y,cACjBvlD,GAAQy0C,QAAQ,IAAIz2C,KAAKwP,QAG7Bm/B,EAAMhL,iBACD3jC,KAAK4qC,QAAQ4c,qBAChBxnD,KAAKy1C,iBAET,CACA,cAAAA,GACMz1C,KAAKowC,UACPpwC,KAAKiQ,SAELjQ,KAAK+8C,QAET,CACA,MAAAA,GACO/8C,KAAKynD,gBAGVznD,KAAK+2C,wBACP,CACA,sBAAAA,GACE/2C,KAAKioC,WAAW8O,uBAAuB/2C,KACzC,CACA,KAAA0nD,CAAMxkD,EAAG04B,EAAGqiB,EAAIC,GACd,MAAOld,EAAOC,GAAUjhC,KAAKqlD,kBAC5BpH,EAAIC,GAAMl+C,KAAK2nD,wBAAwB1J,EAAIC,GAC5Cl+C,KAAKkD,GAAKA,EAAI+6C,GAAMjd,EACpBhhC,KAAK47B,GAAKA,EAAIsiB,GAAMjd,EACpBjhC,KAAKgnD,mBACP,CACA,eAAAY,CAAgBC,EAAOC,GACrB,MAAOhJ,EAAaC,GAAgB/+C,KAAKqlD,iBACzCrlD,KAAK0nD,MAAMG,EAAQ/I,EAAagJ,EAAQ/I,EAAc/+C,KAAKghC,MAAQ8d,EAAa9+C,KAAKihC,OAAS8d,GAC9F/+C,KAAK+nD,eACP,CACA,KAAY/mB,EAAOC,GAAS/9B,EAAG04B,IAC5B14B,EAAG04B,GAAK57B,KAAK2nD,wBAAwBzkD,EAAG04B,GACzC57B,KAAKkD,GAAKA,EAAI89B,EACdhhC,KAAK47B,GAAKA,EAAIqF,EACdjhC,KAAKgoD,eAAehoD,KAAKkD,EAAGlD,KAAK47B,GACjC57B,KAAKgnD,mBACP,CACA,SAAAiB,CAAU/kD,EAAG04B,GACX57B,MAAK,GAAWA,KAAKqlD,iBAAkBniD,EAAG04B,EAC5C,CACA,eAAAuhB,CAAgBj6C,EAAG04B,GACjB57B,MAAK,KAAiB,CAACA,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QACxDjhC,MAAK,GAAWA,KAAKmlD,eAAgBjiD,EAAG04B,GACxC57B,KAAKulC,IAAI2iB,eAAe,CACtBC,MAAO,WAEX,CACA,eAAA/K,GACEp9C,KAAK+nD,cAAc/nD,KAAKkD,EAAGlD,KAAK47B,EAClC,CACA,IAAAuiB,CAAKF,EAAIC,GACPl+C,MAAK,KAAiB,CAACA,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QACxD,MAAM,IACJsE,EACA8f,kBAAmBvG,EAAaC,IAC9B/+C,KAGJ,GAFAA,KAAKkD,GAAK+6C,EAAKa,EACf9+C,KAAK47B,GAAKsiB,EAAKa,EACX/+C,KAAK4qC,SAAW5qC,KAAKkD,EAAI,GAAKlD,KAAKkD,EAAI,GAAKlD,KAAK47B,EAAI,GAAK57B,KAAK47B,EAAI,GAAI,CACzE,MAAM,EACJ14B,EAAC,EACD04B,GACE57B,KAAKulC,IAAI8P,wBACTr1C,KAAK4qC,OAAOwd,cAAcpoD,KAAMkD,EAAG04B,KACrC57B,KAAKkD,GAAKH,KAAKC,MAAMhD,KAAKkD,GAC1BlD,KAAK47B,GAAK74B,KAAKC,MAAMhD,KAAK47B,GAE9B,CACA,IAAI,EACF14B,EAAC,EACD04B,GACE57B,KACJ,MAAOqoD,EAAIC,GAAMtoD,KAAKuoD,qBACtBrlD,GAAKmlD,EACLzsB,GAAK0sB,EACL,MAAM,MACJx9C,GACEy6B,EACJz6B,EAAM09C,KAAO,IAAI,IAAMtlD,GAAGulD,QAAQ,MAClC39C,EAAM29B,IAAM,IAAI,IAAM7M,GAAG6sB,QAAQ,MACjCzoD,KAAKgoD,eAAe9kD,EAAG04B,GACvB2J,EAAI2iB,eAAe,CACjBC,MAAO,WAEX,CACA,cAAAH,CAAe9kD,EAAG04B,GAAI,CACtB,aAAAmsB,CAAc7kD,EAAG04B,GAAI,CACrB,iBAAI8sB,GACF,QAAS1oD,MAAK,KAAiBA,MAAK,GAAa,KAAOA,KAAKkD,GAAKlD,MAAK,GAAa,KAAOA,KAAK47B,EAClG,CACA,mBAAI+sB,GACF,QAAS3oD,MAAK,KAAiBA,MAAK,GAAa,KAAOA,KAAKghC,OAAShhC,MAAK,GAAa,KAAOA,KAAKihC,OACtG,CACA,kBAAAsnB,GACE,MAAOzJ,EAAaC,GAAgB/+C,KAAKqlD,kBACnC,iBACJkB,GACEpC,GACEjhD,EAAIqjD,EAAmBzH,EACvBljB,EAAI2qB,EAAmBxH,EAC7B,OAAQ/+C,KAAKogC,UACX,KAAK,GACH,MAAO,EAAEl9B,EAAG04B,GACd,KAAK,IACH,MAAO,CAAC14B,EAAG04B,GACb,KAAK,IACH,MAAO,CAAC14B,GAAI04B,GACd,QACE,MAAO,EAAE14B,GAAI04B,GAEnB,CACA,oBAAIgtB,GACF,OAAO,CACT,CACA,iBAAA5B,CAAkB5mB,EAAWpgC,KAAKogC,UAChC,MACEmF,KAAK,MACHz6B,GAEFq6C,gBAAiB/jB,EAAWC,IAC1BrhC,KACJ,IAAI,EACFkD,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,GACEjhC,KAKJ,GAJAghC,GAASI,EACTH,GAAUI,EACVn+B,GAAKk+B,EACLxF,GAAKyF,EACDrhC,KAAK4oD,iBACP,OAAQxoB,GACN,KAAK,EACHl9B,EAAIy6B,GAAUz6B,EAAG,EAAGk+B,EAAYJ,GAChCpF,EAAI+B,GAAU/B,EAAG,EAAGyF,EAAaJ,GACjC,MACF,KAAK,GACH/9B,EAAIy6B,GAAUz6B,EAAG,EAAGk+B,EAAYH,GAChCrF,EAAI+B,GAAU/B,EAAGoF,EAAOK,GACxB,MACF,KAAK,IACHn+B,EAAIy6B,GAAUz6B,EAAG89B,EAAOI,GACxBxF,EAAI+B,GAAU/B,EAAGqF,EAAQI,GACzB,MACF,KAAK,IACHn+B,EAAIy6B,GAAUz6B,EAAG+9B,EAAQG,GACzBxF,EAAI+B,GAAU/B,EAAG,EAAGyF,EAAaL,GAIvChhC,KAAKkD,EAAIA,GAAKk+B,EACdphC,KAAK47B,EAAIA,GAAKyF,EACd,MAAOgnB,EAAIC,GAAMtoD,KAAKuoD,qBACtBrlD,GAAKmlD,EACLzsB,GAAK0sB,EACLx9C,EAAM09C,KAAO,IAAI,IAAMtlD,GAAGulD,QAAQ,MAClC39C,EAAM29B,IAAM,IAAI,IAAM7M,GAAG6sB,QAAQ,MACjCzoD,KAAK6oD,WACP,CACA,SAAO,CAAa3lD,EAAG04B,EAAGktB,GACxB,OAAQA,GACN,KAAK,GACH,MAAO,CAACltB,GAAI14B,GACd,KAAK,IACH,MAAO,EAAEA,GAAI04B,GACf,KAAK,IACH,MAAO,EAAEA,EAAG14B,GACd,QACE,MAAO,CAACA,EAAG04B,GAEjB,CACA,uBAAA+rB,CAAwBzkD,EAAG04B,GACzB,OAAOuoB,IAAiB,GAAajhD,EAAG04B,EAAG57B,KAAK+mD,eAClD,CACA,uBAAAgC,CAAwB7lD,EAAG04B,GACzB,OAAOuoB,IAAiB,GAAajhD,EAAG04B,EAAG,IAAM57B,KAAK+mD,eACxD,CACA,IAAmB3mB,GACjB,OAAQA,GACN,KAAK,GACH,CACE,MAAOgB,EAAWC,GAAcrhC,KAAKmlD,eACrC,MAAO,CAAC,GAAI/jB,EAAYC,EAAYA,EAAaD,EAAW,EAC9D,CACF,KAAK,IACH,MAAO,EAAE,EAAG,EAAG,GAAI,GACrB,KAAK,IACH,CACE,MAAOA,EAAWC,GAAcrhC,KAAKmlD,eACrC,MAAO,CAAC,EAAG/jB,EAAYC,GAAaA,EAAaD,EAAW,EAC9D,CACF,QACE,MAAO,CAAC,EAAG,EAAG,EAAG,GAEvB,CACA,eAAI4nB,GACF,OAAOhpD,KAAKioC,WAAWkL,eAAeC,SACxC,CACA,kBAAI2T,GACF,OAAQ/mD,KAAKioC,WAAWkL,eAAe/S,SAAWpgC,KAAKklD,cAAgB,GACzE,CACA,oBAAIG,GACF,MAAM,YACJ2D,EACA7D,gBAAiB/jB,EAAWC,IAC1BrhC,KACJ,MAAO,CAACohC,EAAY4nB,EAAa3nB,EAAa2nB,EAChD,CACA,OAAAC,CAAQjoB,EAAOC,GACb,MAAO6d,EAAaC,GAAgB/+C,KAAKqlD,kBACnC,MACJv6C,GACE9K,KAAKulC,IACTz6B,EAAMk2B,MAAQ,IAAI,IAAMA,EAAQ8d,GAAa2J,QAAQ,MAChDzoD,MAAK,KACR8K,EAAMm2B,OAAS,IAAI,IAAMA,EAAS8d,GAAc0J,QAAQ,MAE5D,CACA,OAAAS,GACE,MAAM,MACJp+C,GACE9K,KAAKulC,KACH,OACJtE,EAAM,MACND,GACEl2B,EACEq+C,EAAenoB,EAAMooB,SAAS,KAC9BC,GAAiBrpD,MAAK,IAAoBihC,EAAOmoB,SAAS,KAChE,GAAID,GAAgBE,EAClB,OAEF,MAAOvK,EAAaC,GAAgB/+C,KAAKqlD,iBACpC8D,IACHr+C,EAAMk2B,MAAQ,IAAI,IAAMylB,WAAWzlB,GAAS8d,GAAa2J,QAAQ,OAE9DzoD,MAAK,IAAqBqpD,IAC7Bv+C,EAAMm2B,OAAS,IAAI,IAAMwlB,WAAWxlB,GAAU8d,GAAc0J,QAAQ,MAExE,CACA,qBAAAa,GACE,MAAO,CAAC,EAAG,EACb,CACA,MACE,GAAItpD,MAAK,GACP,OAEFA,MAAK,GAAe4K,SAAS0G,cAAc,OAC3CtR,MAAK,GAAagoC,UAAUv3B,IAAI,YAChC,MAAM84C,EAAUvpD,KAAK+kD,qBAAuB,CAAC,UAAW,WAAY,cAAe,cAAgB,CAAC,UAAW,YAAa,WAAY,cAAe,cAAe,eAAgB,aAAc,cAC9L1mB,EAASr+B,KAAKioC,WAAWC,QAC/B,IAAK,MAAMjpC,KAAQsqD,EAAS,CAC1B,MAAMhkB,EAAM36B,SAAS0G,cAAc,OACnCtR,MAAK,GAAasU,OAAOixB,GACzBA,EAAIyC,UAAUv3B,IAAI,UAAWxR,GAC7BsmC,EAAIS,aAAa,oBAAqB/mC,GACtCsmC,EAAI9G,iBAAiB,cAAez+B,MAAK,GAAoBsC,KAAKtC,KAAMf,GAAO,CAC7Eo/B,WAEFkH,EAAI9G,iBAAiB,cAAeiF,GAAe,CACjDrF,WAEFkH,EAAI6D,UAAY,CAClB,CACAppC,KAAKulC,IAAIikB,QAAQxpD,MAAK,GACxB,CACA,IAAoBf,EAAM0vC,GACxBA,EAAMhL,iBACN,MAAM,MACJ/L,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBkX,EAAMxF,QAAgBwF,EAAME,SAAWjX,EACzC,OAEF53B,MAAK,GAAUs1C,QAAO,GACtB,MAAMmU,EAAiBzpD,KAAK6mD,aAC5B7mD,KAAK6mD,cAAe,EACpB7mD,MAAK,GAAqB,CAAC2uC,EAAMkU,QAASlU,EAAMoU,SAChD,MAAM5kB,EAAK,IAAIC,gBACTC,EAASr+B,KAAKioC,WAAWyL,eAAevV,GAC9Cn+B,KAAK4qC,OAAO8e,qBAAoB,GAChCv3C,OAAOssB,iBAAiB,cAAez+B,MAAK,GAAoBsC,KAAKtC,KAAMf,GAAO,CAChF+iD,SAAS,EACTpZ,SAAS,EACTvK,WAEFlsB,OAAOssB,iBAAiB,YAAamF,GAAW,CAC9Coe,SAAS,EACT3jB,WAEFlsB,OAAOssB,iBAAiB,cAAeiF,GAAe,CACpDrF,WAEFr+B,MAAK,GAAmB,CACtBs9C,OAAQt9C,KAAKkD,EACbq6C,OAAQv9C,KAAK47B,EACb+tB,WAAY3pD,KAAKghC,MACjB4oB,YAAa5pD,KAAKihC,QAEpB,MAAM4oB,EAAoB7pD,KAAK4qC,OAAOrF,IAAIz6B,MAAMg/C,OAC1CC,EAAc/pD,KAAKulC,IAAIz6B,MAAMg/C,OACnC9pD,KAAKulC,IAAIz6B,MAAMg/C,OAAS9pD,KAAK4qC,OAAOrF,IAAIz6B,MAAMg/C,OAAS33C,OAAOs9B,iBAAiBd,EAAM3sC,QAAQ8nD,OAC7F,MAAME,EAAoB,KACxB7rB,EAAGI,QACHv+B,KAAK4qC,OAAO8e,qBAAoB,GAChC1pD,MAAK,GAAUs1C,QAAO,GACtBt1C,KAAK6mD,aAAe4C,EACpBzpD,KAAK4qC,OAAOrF,IAAIz6B,MAAMg/C,OAASD,EAC/B7pD,KAAKulC,IAAIz6B,MAAMg/C,OAASC,EACxB/pD,MAAK,IAAuB,EAE9BmS,OAAOssB,iBAAiB,YAAaurB,EAAmB,CACtD3rB,WAEFlsB,OAAOssB,iBAAiB,OAAQurB,EAAmB,CACjD3rB,UAEJ,CACA,IAAQn7B,EAAG04B,EAAGoF,EAAOC,GACnBjhC,KAAKghC,MAAQA,EACbhhC,KAAKihC,OAASA,EACdjhC,KAAKkD,EAAIA,EACTlD,KAAK47B,EAAIA,EACT,MAAOkjB,EAAaC,GAAgB/+C,KAAKqlD,iBACzCrlD,KAAKipD,QAAQnK,EAAc9d,EAAO+d,EAAe9d,GACjDjhC,KAAKgnD,oBACLhnD,KAAKiqD,YACP,CACA,UAAAA,GAAc,CACd,MACE,IAAKjqD,MAAK,GACR,OAEF,MAAM,OACJs9C,EAAM,OACNC,EAAM,WACNoM,EAAU,YACVC,GACE5pD,MAAK,GACTA,MAAK,GAAmB,KACxB,MAAMy9C,EAAOz9C,KAAKkD,EACZw6C,EAAO19C,KAAK47B,EACZsuB,EAAWlqD,KAAKghC,MAChBmpB,EAAYnqD,KAAKihC,OACnBwc,IAASH,GAAUI,IAASH,GAAU2M,IAAaP,GAAcQ,IAAcP,GAGnF5pD,KAAKk5C,YAAY,CACfvL,IAAK3tC,MAAK,GAAQsC,KAAKtC,KAAMy9C,EAAMC,EAAMwM,EAAUC,GACnDvc,KAAM5tC,MAAK,GAAQsC,KAAKtC,KAAMs9C,EAAQC,EAAQoM,EAAYC,GAC1D9b,UAAU,GAEd,CACA,aAAOsc,CAAOlnD,GACZ,OAAOH,KAAKsnD,MAAU,IAAJnnD,GAAa,GACjC,CACA,IAAoBjE,EAAM0vC,GACxB,MAAOmQ,EAAaC,GAAgB/+C,KAAKqlD,iBACnC/H,EAASt9C,KAAKkD,EACdq6C,EAASv9C,KAAK47B,EACd+tB,EAAa3pD,KAAKghC,MAClB4oB,EAAc5pD,KAAKihC,OACnBqpB,EAAWnG,GAAiBoG,SAAWzL,EACvC0L,EAAYrG,GAAiBoG,SAAWxL,EACxC0L,EAAiBzqD,MAAK,GAAmBA,KAAKogC,UAC9CsqB,EAAS,CAACxnD,EAAG04B,IAAM,CAAC6uB,EAAe,GAAKvnD,EAAIunD,EAAe,GAAK7uB,EAAG6uB,EAAe,GAAKvnD,EAAIunD,EAAe,GAAK7uB,GAC/G+uB,EAAoB3qD,MAAK,GAAmB,IAAMA,KAAKogC,UAE7D,IAAIwqB,EACAC,EACAC,GAAa,EACbC,GAAe,EACnB,OAAQ9rD,GACN,IAAK,UACH6rD,GAAa,EACbF,EAAW,CAAChlB,EAAGC,IAAM,CAAC,EAAG,GACzBglB,EAAc,CAACjlB,EAAGC,IAAM,CAACD,EAAGC,GAC5B,MACF,IAAK,YACH+kB,EAAW,CAAChlB,EAAGC,IAAM,CAACD,EAAI,EAAG,GAC7BilB,EAAc,CAACjlB,EAAGC,IAAM,CAACD,EAAI,EAAGC,GAChC,MACF,IAAK,WACHilB,GAAa,EACbF,EAAW,CAAChlB,EAAGC,IAAM,CAACD,EAAG,GACzBilB,EAAc,CAACjlB,EAAGC,IAAM,CAAC,EAAGA,GAC5B,MACF,IAAK,cACHklB,GAAe,EACfH,EAAW,CAAChlB,EAAGC,IAAM,CAACD,EAAGC,EAAI,GAC7BglB,EAAc,CAACjlB,EAAGC,IAAM,CAAC,EAAGA,EAAI,GAChC,MACF,IAAK,cACHilB,GAAa,EACbF,EAAW,CAAChlB,EAAGC,IAAM,CAACD,EAAGC,GACzBglB,EAAc,CAACjlB,EAAGC,IAAM,CAAC,EAAG,GAC5B,MACF,IAAK,eACH+kB,EAAW,CAAChlB,EAAGC,IAAM,CAACD,EAAI,EAAGC,GAC7BglB,EAAc,CAACjlB,EAAGC,IAAM,CAACD,EAAI,EAAG,GAChC,MACF,IAAK,aACHklB,GAAa,EACbF,EAAW,CAAChlB,EAAGC,IAAM,CAAC,EAAGA,GACzBglB,EAAc,CAACjlB,EAAGC,IAAM,CAACD,EAAG,GAC5B,MACF,IAAK,aACHmlB,GAAe,EACfH,EAAW,CAAChlB,EAAGC,IAAM,CAAC,EAAGA,EAAI,GAC7BglB,EAAc,CAACjlB,EAAGC,IAAM,CAACD,EAAGC,EAAI,GAGpC,MAAMmlB,EAAQJ,EAASjB,EAAYC,GAC7BqB,EAAgBJ,EAAYlB,EAAYC,GAC9C,IAAIsB,EAAsBR,KAAUO,GACpC,MAAME,EAAYhH,GAAiBiG,OAAO9M,EAAS4N,EAAoB,IACjEE,EAAYjH,GAAiBiG,OAAO7M,EAAS2N,EAAoB,IACvE,IAEIG,EAAQC,EAFRC,EAAS,EACTC,EAAS,EAEb,GAAK7c,EAAM8c,eAWPJ,SACAC,UACE3c,OAbmB,CACvB,MAAM,QACJkU,EAAO,QACPE,GACEpU,GACG+c,EAAaC,GAAe3rD,MAAK,IACvCqrD,EAAQC,GAAUtrD,KAAK2nD,wBAAwB9E,EAAU6I,EAAa3I,EAAU4I,GACjF3rD,MAAK,GAAmB,GAAK6iD,EAC7B7iD,MAAK,GAAmB,GAAK+iD,CAC/B,CA9DkB,IAAC7/C,EAAG04B,EAqEtB,IADCyvB,EAAQC,IApEUpoD,EAoEUmoD,EAASvM,EApEhBljB,EAoE6B0vB,EAASvM,EApEhC,CAAC4L,EAAkB,GAAKznD,EAAIynD,EAAkB,GAAK/uB,EAAG+uB,EAAkB,GAAKznD,EAAIynD,EAAkB,GAAK/uB,IAqEhIkvB,EAAY,CACd,MAAMc,EAAU7oD,KAAKihD,MAAM2F,EAAYC,GACvC2B,EAASC,EAASzoD,KAAKkO,IAAIlO,KAAKiG,IAAIjG,KAAKihD,MAAMiH,EAAc,GAAKD,EAAM,GAAKK,EAAQJ,EAAc,GAAKD,EAAM,GAAKM,GAAUM,EAAS,EAAIjC,EAAY,EAAIC,GAAcU,EAAWX,EAAYa,EAAYZ,EAC7M,MAAWmB,EACTQ,EAAS5tB,GAAU56B,KAAK25B,IAAIuuB,EAAc,GAAKD,EAAM,GAAKK,GAASf,EAAU,GAAKX,EAElF6B,EAAS7tB,GAAU56B,KAAK25B,IAAIuuB,EAAc,GAAKD,EAAM,GAAKM,GAASd,EAAW,GAAKZ,EAErF,MAAMM,EAAW/F,GAAiBiG,OAAOT,EAAa4B,GAChDpB,EAAYhG,GAAiBiG,OAAOR,EAAc4B,GACxDN,EAAsBR,KAAUG,EAAYX,EAAUC,IACtD,MAAM1M,EAAO0N,EAAYD,EAAoB,GACvCxN,EAAO0N,EAAYF,EAAoB,GAC7ClrD,MAAK,KAAiB,CAACA,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QACxDjhC,KAAKghC,MAAQkpB,EACblqD,KAAKihC,OAASkpB,EACdnqD,KAAKkD,EAAIu6C,EACTz9C,KAAK47B,EAAI8hB,EACT19C,KAAKipD,QAAQnK,EAAcoL,EAAUnL,EAAeoL,GACpDnqD,KAAKgnD,oBACLhnD,KAAK6rD,aACP,CACA,WAAAA,GAAe,CACf,aAAAC,GACE9rD,MAAK,GAAUwgD,QACjB,CACA,kBAAIuL,GACF,OAAO,IACT,CACA,oBAAMC,GACJ,GAAIhsD,KAAKqkD,cAAgBrkD,MAAK,GAC5B,OAAOA,KAAKqkD,aAEdrkD,KAAKqkD,aAAe,IAAI/c,GAActnC,MACtCA,KAAKulC,IAAIjxB,OAAOtU,KAAKqkD,aAAavc,UAClC,MAAM,eACJikB,GACE/rD,KACJ,GAAI+rD,EACF,IAAK,MAAO9sD,EAAM+qC,KAAS+hB,QACnB/rD,KAAKqkD,aAAata,UAAU9qC,EAAM+qC,GAI5C,OADAhqC,KAAKqkD,aAAata,UAAU,UACrB/pC,KAAKqkD,YACd,CACA,iBAAA4H,GACOjsD,KAAKqkD,eAGVrkD,KAAKqkD,aAAap0C,SAClBjQ,KAAKqkD,aAAe,KACpBrkD,MAAK,GAAUoqC,UACjB,CACA,YAAA8hB,CAAaxa,GACX,MAAMya,EAAiBnsD,KAAKqkD,cAAc9e,IACtC4mB,EACFA,EAAeC,OAAO1a,GAEtB1xC,KAAKulC,IAAIjxB,OAAOo9B,EAEpB,CACA,mBAAA2a,GACE,OAAOrsD,KAAKulC,IAAI8P,uBAClB,CACA,aAAAiX,GASE,OARKtsD,MAAK,IACR8/C,GAAQG,WAAWkE,GAAiBhE,OACpCngD,MAAK,EAAW,IAAI8/C,GAAQ9/C,MACxBA,MAAK,KACPA,MAAK,EAASsN,KAAOtN,MAAK,GAC1BA,MAAK,GAAqB,OAGvBA,MAAK,CACd,CACA,eAAIusD,GACF,OAAOvsD,MAAK,GAAUsN,IACxB,CACA,eAAIi/C,CAAYj/C,GACTtN,MAAK,IAGVA,MAAK,EAASsN,KAAOA,EACvB,CACA,kBAAIk/C,GACF,OAAOxsD,MAAK,GAAUugD,WACxB,CACA,uBAAMkM,CAAkBroC,SAChBpkB,MAAK,GAAU2gD,eAAev8B,GACtC,CACA,gBAAAsoC,CAAiB3L,GACf,OAAO/gD,MAAK,GAAU04C,UAAUqI,EAClC,CACA,UAAA4L,GACE,QAAS3sD,MAAK,IAAaA,MAAK,EAASowC,SAC3C,CACA,cAAAwc,GACE,OAAO5sD,MAAK,GAAU0gD,YAAa,CACrC,CACA,MAAA5Y,GACE,MAAMvC,EAAMvlC,KAAKulC,IAAM36B,SAAS0G,cAAc,OAC9Ci0B,EAAIS,aAAa,wBAAyB,IAAMhmC,KAAKogC,UAAY,KACjEmF,EAAI6C,UAAYpoC,KAAKf,KACrBsmC,EAAIS,aAAa,KAAMhmC,KAAKwP,IAC5B+1B,EAAI6D,SAAWppC,MAAK,IAAa,EAAI,EACrCulC,EAAIS,aAAa,OAAQ,eACrBhmC,KAAK6sD,eACPtnB,EAAIS,aAAa,eAAgBhmC,KAAK6sD,eAEnC7sD,KAAKwkD,YACRjf,EAAIyC,UAAUv3B,IAAI,UAEpBzQ,KAAKmnD,kBACLnnD,MAAK,KACL,MAAO8+C,EAAaC,GAAgB/+C,KAAKqlD,iBACrCrlD,KAAK+mD,eAAiB,KAAQ,IAChCxhB,EAAIz6B,MAAMgiD,SAAW,IAAI,IAAM/N,EAAeD,GAAa2J,QAAQ,MACnEljB,EAAIz6B,MAAMiiD,UAAY,IAAI,IAAMjO,EAAcC,GAAc0J,QAAQ,OAEtE,MAAOxK,EAAIC,GAAMl+C,KAAKspD,wBActB,OAbAtpD,KAAKioD,UAAUhK,EAAIC,GACnBnT,GAAW/qC,KAAMulC,EAAK,CAAC,UAAW,cAAe,aAC7CvlC,KAAK2a,aAAe3a,KAAKioC,WAAWsL,uBACtCvzC,MAAK,KAAkB,IAAI0hD,GAAa,CACtChQ,UAAWnM,EACXoc,mBAAoB,KAAO3hD,KAAK08C,WAChCmF,aAAc7hD,MAAK,GAAyBsC,KAAKtC,MACjD8hD,WAAY9hD,MAAK,GAAoBsC,KAAKtC,MAC1C+hD,WAAY/hD,MAAK,GAAuBsC,KAAKtC,MAC7Cq+B,OAAQr+B,KAAKioC,WAAWC,WAG5BloC,KAAKioC,WAAWiI,gBAAgBrH,OACzBtD,CACT,CACA,MACEvlC,MAAK,GAAmB,CACtBs9C,OAAQt9C,KAAKkD,EACbq6C,OAAQv9C,KAAK47B,EACb+tB,WAAY3pD,KAAKghC,MACjB4oB,YAAa5pD,KAAKihC,QAEpBjhC,MAAK,GAAUs1C,QAAO,GACtBt1C,KAAK4qC,OAAO8e,qBAAoB,EAClC,CACA,IAAoBsD,EAASC,EAAclJ,GAEzC,IAAImJ,EAA2BnJ,EAAWkJ,EADnB,GACmC,EADnC,GAEvB,GAAe,IAAXC,EACF,OAEF,MAAMzC,EAAiBzqD,MAAK,GAAmBA,KAAKogC,UAC9CsqB,EAAS,CAACxnD,EAAG04B,IAAM,CAAC6uB,EAAe,GAAKvnD,EAAIunD,EAAe,GAAK7uB,EAAG6uB,EAAe,GAAKvnD,EAAIunD,EAAe,GAAK7uB,IAC9GkjB,EAAaC,GAAgB/+C,KAAKqlD,iBACnC/H,EAASt9C,KAAKkD,EACdq6C,EAASv9C,KAAK47B,EACd+tB,EAAa3pD,KAAKghC,MAClB4oB,EAAc5pD,KAAKihC,OACnBqpB,EAAWnG,GAAiBoG,SAAWzL,EACvC0L,EAAYrG,GAAiBoG,SAAWxL,EAC9CmO,EAASnqD,KAAKkO,IAAIlO,KAAKiG,IAAIkkD,EAAQ,EAAIvD,EAAY,EAAIC,GAAcU,EAAWX,EAAYa,EAAYZ,GACxG,MAAMM,EAAW/F,GAAiBiG,OAAOT,EAAauD,GAChD/C,EAAYhG,GAAiBiG,OAAOR,EAAcsD,GACxD,GAAIhD,IAAaP,GAAcQ,IAAcP,EAC3C,OAEF5pD,MAAK,KAAiB,CAACs9C,EAAQC,EAAQoM,EAAYC,GACnD,MAAMuD,EAAoBzC,EAAOf,EAAa,EAAGC,EAAc,GACzDppB,EAAU2jB,GAAiBiG,OAAO9M,EAAS6P,EAAkB,IAC7D1sB,EAAU0jB,GAAiBiG,OAAO7M,EAAS4P,EAAkB,IAC7DC,EAAuB1C,EAAOR,EAAW,EAAGC,EAAY,GAC9DnqD,KAAKkD,EAAIs9B,EAAU4sB,EAAqB,GACxCptD,KAAK47B,EAAI6E,EAAU2sB,EAAqB,GACxCptD,KAAKghC,MAAQkpB,EACblqD,KAAKihC,OAASkpB,EACdnqD,KAAKipD,QAAQnK,EAAcoL,EAAUnL,EAAeoL,GACpDnqD,KAAKgnD,oBACLhnD,KAAK6rD,aACP,CACA,MACE7rD,MAAK,GAAUs1C,QAAO,GACtBt1C,KAAK4qC,OAAO8e,qBAAoB,GAChC1pD,MAAK,IACP,CACA,WAAAqtD,CAAY1e,GACV,MAAM,MACJ/W,GACEZ,GAAiBS,SACA,IAAjBkX,EAAMxF,QAAgBwF,EAAME,SAAWjX,EACzC+W,EAAMhL,kBAGR3jC,MAAK,IAAkB,EACnBA,KAAK6mD,aACP7mD,MAAK,GAAkB2uC,GAGzB3uC,MAAK,GAAsB2uC,GAC7B,CACA,IAAsBA,GACpB,MAAM,MACJ/W,GACEZ,GAAiBS,SACjBkX,EAAME,UAAYjX,GAAS+W,EAAMI,UAAYJ,EAAMG,SAAWlX,EAChE53B,KAAK4qC,OAAO4R,eAAex8C,MAE3BA,KAAK4qC,OAAO2P,YAAYv6C,KAE5B,CACA,IAAkB2uC,GAChB,MAAM,WACJ+N,GACE18C,KACJA,KAAKioC,WAAWoV,mBAChB,IAAIiQ,GAAqB,EACzB,MAAMnvB,EAAK,IAAIC,gBACTC,EAASr+B,KAAKioC,WAAWyL,eAAevV,GACxCikB,EAAO,CACXxZ,SAAS,EACToZ,SAAS,EACT3jB,UAEIkvB,EAAan9C,IACjB+tB,EAAGI,QACHv+B,MAAK,GAAiB,KACtBA,MAAK,IAAkB,EAClBA,KAAKioC,WAAW2V,kBACnB59C,MAAK,GAAsBoQ,GAEzBk9C,GACFttD,KAAKwtD,iBACP,EAEE9Q,IACF18C,MAAK,GAAa2uC,EAAM8e,QACxBztD,MAAK,GAAa2uC,EAAM+e,QACxB1tD,MAAK,GAAiB2uC,EAAMgf,UAC5B3tD,MAAK,GAAmB2uC,EAAM2T,YAC9BnwC,OAAOssB,iBAAiB,eAAeruB,IAChCk9C,IACHA,GAAqB,EACrBttD,KAAK4tD,oBAEP,MACEH,QAASvqD,EACTwqD,QAAS9xB,EAAC,UACV+xB,GACEv9C,EACJ,GAAIu9C,IAAc3tD,MAAK,GAErB,YADA4jC,GAAUxzB,GAGZ,MAAO6tC,EAAIC,GAAMl+C,KAAK2nD,wBAAwBzkD,EAAIlD,MAAK,GAAY47B,EAAI57B,MAAK,IAC5EA,MAAK,GAAakD,EAClBlD,MAAK,GAAa47B,EAClB57B,KAAKioC,WAAW+V,oBAAoBC,EAAIC,EAAG,GAC1CkE,GACHjwC,OAAOssB,iBAAiB,YAAamF,GAAWwe,GAChDjwC,OAAOssB,iBAAiB,eAAeruB,IACjCA,EAAEkyC,cAAgBtiD,MAAK,KACrBA,MAAK,IAAiBoQ,EAAEy9C,YAC1BN,EAAWn9C,GAGfwzB,GAAUxzB,EAAE,GACXgyC,IAEL,MAAM4H,EAAoB55C,IACnBpQ,MAAK,IAAkBA,MAAK,KAAmBoQ,EAAEu9C,UAItD/pB,GAAUxzB,GAHRm9C,EAAWn9C,EAGD,EAEd+B,OAAOssB,iBAAiB,YAAaurB,EAAmB,CACtD3rB,WAEFlsB,OAAOssB,iBAAiB,OAAQurB,EAAmB,CACjD3rB,UAEJ,CACA,gBAAAuvB,GAAoB,CACpB,eAAAJ,GAAmB,CACnB,SAAA3E,GACM7oD,MAAK,IACPyzC,aAAazzC,MAAK,IAEpBA,MAAK,GAAoB27C,YAAW,KAClC37C,MAAK,GAAoB,KACzBA,KAAK4qC,QAAQkjB,gBAAgB9tD,KAAK,GACjC,EACL,CACA,qBAAA+9C,CAAsBnT,EAAQ1nC,EAAG04B,GAC/BgP,EAAOyT,aAAar+C,MACpBA,KAAKkD,EAAIA,EACTlD,KAAK47B,EAAIA,EACT57B,KAAKgnD,oBACLhnD,KAAK+nD,eACP,CACA,OAAAgG,CAAQ9P,EAAIC,EAAI9d,EAAWpgC,KAAKogC,UAC9B,MAAMD,EAAQngC,KAAKgpD,aACZ5nB,EAAWC,GAAcrhC,KAAKmlD,gBAC9B7jB,EAAOC,GAASvhC,KAAKolD,gBACtB4I,EAAS/P,EAAK9d,EACd8tB,EAAS/P,EAAK/d,EACdj9B,EAAIlD,KAAKkD,EAAIk+B,EACbxF,EAAI57B,KAAK47B,EAAIyF,EACbL,EAAQhhC,KAAKghC,MAAQI,EACrBH,EAASjhC,KAAKihC,OAASI,EAC7B,OAAQjB,GACN,KAAK,EACH,MAAO,CAACl9B,EAAI8qD,EAAS1sB,EAAOD,EAAazF,EAAIqyB,EAAShtB,EAASM,EAAOr+B,EAAI8qD,EAAShtB,EAAQM,EAAOD,EAAazF,EAAIqyB,EAAS1sB,GAC9H,KAAK,GACH,MAAO,CAACr+B,EAAI+qD,EAAS3sB,EAAOD,EAAazF,EAAIoyB,EAASzsB,EAAOr+B,EAAI+qD,EAAShtB,EAASK,EAAOD,EAAazF,EAAIoyB,EAAShtB,EAAQO,GAC9H,KAAK,IACH,MAAO,CAACr+B,EAAI8qD,EAAShtB,EAAQM,EAAOD,EAAazF,EAAIqyB,EAAS1sB,EAAOr+B,EAAI8qD,EAAS1sB,EAAOD,EAAazF,EAAIqyB,EAAShtB,EAASM,GAC9H,KAAK,IACH,MAAO,CAACr+B,EAAI+qD,EAAShtB,EAASK,EAAOD,EAAazF,EAAIoyB,EAAShtB,EAAQO,EAAOr+B,EAAI+qD,EAAS3sB,EAAOD,EAAazF,EAAIoyB,EAASzsB,GAC9H,QACE,MAAM,IAAIlrB,MAAM,oBAEtB,CACA,sBAAA63C,CAAuBv0B,EAAM0H,GAC3B,MAAOrF,EAAIC,EAAIC,EAAIE,GAAMzC,EACnBqH,EAAQ9E,EAAKF,EACbiF,EAAS7E,EAAKH,EACpB,OAAQj8B,KAAKogC,UACX,KAAK,EACH,MAAO,CAACpE,EAAIqF,EAAajF,EAAI4E,EAAOC,GACtC,KAAK,GACH,MAAO,CAACjF,EAAIqF,EAAapF,EAAIgF,EAAQD,GACvC,KAAK,IACH,MAAO,CAAC9E,EAAImF,EAAapF,EAAI+E,EAAOC,GACtC,KAAK,IACH,MAAO,CAAC/E,EAAImF,EAAajF,EAAI6E,EAAQD,GACvC,QACE,MAAM,IAAI3qB,MAAM,oBAEtB,CACA,SAAA83C,CAAUlZ,GAAQ,CAClB,OAAA7E,GACE,OAAO,CACT,CACA,cAAAge,GACE,OAAIpuD,KAAKynD,iBAGTznD,KAAK4qC,OAAOyO,iBAAgB,GAC5Br5C,MAAK,IAAgB,GACd,EACT,CACA,eAAAquD,GACE,QAAKruD,KAAKynD,iBAGVznD,KAAK4qC,OAAOyO,iBAAgB,GAC5Br5C,MAAK,IAAgB,GACd,EACT,CACA,YAAAynD,GACE,OAAOznD,MAAK,EACd,CACA,uBAAAu+C,GACE,OAAOv+C,MAAK,EACd,CACA,gBAAAsuD,GACE,OAAOtuD,KAAKulC,MAAQvlC,KAAKslD,eAC3B,CACA,cAAIiJ,GACF,MAAM,IACJ9lB,EAAG,KACH+f,EAAI,OACJgG,EAAM,MACNC,GACEzuD,KAAKqsD,uBACH,YACJqC,EAAW,WACXC,GACEx8C,OACJ,OAAOq2C,EAAOmG,GAAcF,EAAQ,GAAKhmB,EAAMimB,GAAeF,EAAS,CACzE,CACA,MACE,GAAIxuD,MAAK,KAAaA,KAAKulC,IACzB,OAEFvlC,MAAK,GAAW,IAAIo+B,gBACpB,MAAMC,EAASr+B,KAAKioC,WAAWyL,eAAe1zC,MAAK,IACnDA,KAAKulC,IAAI9G,iBAAiB,UAAWz+B,KAAKqnD,QAAQ/kD,KAAKtC,MAAO,CAC5Dq+B,WAEFr+B,KAAKulC,IAAI9G,iBAAiB,WAAYz+B,KAAKsnD,SAAShlD,KAAKtC,MAAO,CAC9Dq+B,UAEJ,CACA,OAAA+f,GACEp+C,MAAK,IACP,CACA,MAAA4uD,CAAOC,GAAS,CAChB,MAAAlK,GAAU,CACV,gBAAAmK,GACE,MAAO,CACLt/C,GAAIxP,KAAKs6C,oBACTwB,SAAS,EACTnC,UAAW35C,KAAK25C,UAChBoV,SAAU/uD,KAAKukD,cAAcwK,UAAY,GAE7C,CACA,SAAArW,CAAUqI,GAAe,EAAOl+B,EAAU,MACxC2R,EAAY,iCACd,CACA,wBAAaykB,CAAY3rC,EAAMs9B,EAAQN,GACrC,MAAM/C,EAAS,IAAIvnC,KAAKP,UAAUF,YAAY,CAC5CqrC,SACAp7B,GAAIo7B,EAAOmb,YACXzb,YACAgQ,oBAAqBhtC,EAAKgtC,sBAE5B/S,EAAOnH,SAAW9yB,EAAK8yB,SACvBmH,GAAO,GAAqBj6B,EAAK0hD,kBACjCznB,EAAO6c,QAAU92C,EAAK2hD,SAAU,EAChC,MAAO7tB,EAAWC,GAAckG,EAAO4d,gBAChCjiD,EAAG04B,EAAGoF,EAAOC,GAAUsG,EAAO2mB,uBAAuB5gD,EAAKqsB,KAAM0H,GAKvE,OAJAkG,EAAOrkC,EAAIA,EAAIk+B,EACfmG,EAAO3L,EAAIA,EAAIyF,EACfkG,EAAOvG,MAAQA,EAAQI,EACvBmG,EAAOtG,OAASA,EAASI,EAClBkG,CACT,CACA,mBAAIkY,GACF,QAASz/C,KAAKs6C,sBAAwBt6C,KAAK87C,SAAgC,OAArB97C,KAAK04C,YAC7D,CACA,MAAAzoC,GAiBE,GAhBAjQ,MAAK,IAAUu+B,QACfv+B,MAAK,GAAW,KACXA,KAAKowC,WACRpwC,KAAK+8C,SAEH/8C,KAAK4qC,OACP5qC,KAAK4qC,OAAO36B,OAAOjQ,MAEnBA,KAAKioC,WAAWyT,aAAa17C,MAE3BA,MAAK,KACPyzC,aAAazzC,MAAK,IAClBA,MAAK,GAAoB,MAE3BA,MAAK,KACLA,KAAKisD,oBACDjsD,MAAK,GAAoB,CAC3B,IAAK,MAAMkvD,KAAWlvD,MAAK,GAAmB+e,SAC5C00B,aAAayb,GAEflvD,MAAK,GAAqB,IAC5B,CACAA,KAAK4qC,OAAS,KACd5qC,MAAK,IAAeoqC,UACpBpqC,MAAK,GAAgB,IACvB,CACA,eAAI2a,GACF,OAAO,CACT,CACA,aAAAw0C,GACMnvD,KAAK2a,cACP3a,MAAK,KACLA,MAAK,GAAagoC,UAAU/3B,OAAO,UAEvC,CACA,mBAAIq4B,GACF,OAAO,IACT,CACA,OAAAsP,CAAQjJ,GACN,IAAK3uC,KAAK2a,aAAeg0B,EAAM3sC,SAAWhC,KAAKulC,KAAqB,UAAdoJ,EAAMjmC,IAC1D,OAEF1I,KAAKioC,WAAWsS,YAAYv6C,MAC5BA,MAAK,GAAmB,CACtBs9C,OAAQt9C,KAAKkD,EACbq6C,OAAQv9C,KAAK47B,EACb+tB,WAAY3pD,KAAKghC,MACjB4oB,YAAa5pD,KAAKihC,QAEpB,MAAMmuB,EAAWpvD,MAAK,GAAaovD,SACnC,IAAKpvD,MAAK,GAAiB,CACzBA,MAAK,GAAkB8O,MAAMqR,KAAKivC,GAClC,MAAMC,EAAsBrvD,MAAK,GAAgBsC,KAAKtC,MAChDsvD,EAAmBtvD,MAAK,GAAasC,KAAKtC,MAC1Cq+B,EAASr+B,KAAKioC,WAAWC,QAC/B,IAAK,MAAM3C,KAAOvlC,MAAK,GAAiB,CACtC,MAAMf,EAAOsmC,EAAI0Z,aAAa,qBAC9B1Z,EAAIS,aAAa,OAAQ,cACzBT,EAAI9G,iBAAiB,UAAW4wB,EAAqB,CACnDhxB,WAEFkH,EAAI9G,iBAAiB,OAAQ6wB,EAAkB,CAC7CjxB,WAEFkH,EAAI9G,iBAAiB,QAASz+B,MAAK,GAAcsC,KAAKtC,KAAMf,GAAO,CACjEo/B,WAEFkH,EAAIS,aAAa,eAAgBme,GAAiB6B,aAAa/mD,GACjE,CACF,CACA,MAAM+7B,EAAQh7B,MAAK,GAAgB,GACnC,IAAIuvD,EAAgB,EACpB,IAAK,MAAMhqB,KAAO6pB,EAAU,CAC1B,GAAI7pB,IAAQvK,EACV,MAEFu0B,GACF,CACA,MAAMC,GAAqB,IAAMxvD,KAAKogC,SAAWpgC,KAAK+mD,gBAAkB,IAAM,IAAM/mD,MAAK,GAAgBxC,OAAS,GAClH,GAAIgyD,IAAsBD,EAAe,CACvC,GAAIC,EAAoBD,EACtB,IAAK,IAAIxpD,EAAI,EAAGA,EAAIwpD,EAAgBC,EAAmBzpD,IACrD/F,MAAK,GAAasU,OAAOtU,MAAK,GAAayvD,iBAExC,GAAID,EAAoBD,EAC7B,IAAK,IAAIxpD,EAAI,EAAGA,EAAIypD,EAAoBD,EAAexpD,IACrD/F,MAAK,GAAayvD,WAAWrD,OAAOpsD,MAAK,GAAa0vD,WAG1D,IAAI3pD,EAAI,EACR,IAAK,MAAM4pD,KAASP,EAAU,CAC5B,MACMnwD,EADMe,MAAK,GAAgB+F,KAChBk5C,aAAa,qBAC9B0Q,EAAM3pB,aAAa,eAAgBme,GAAiB6B,aAAa/mD,GACnE,CACF,CACAe,MAAK,GAAoB,GACzBA,MAAK,IAA+B,EACpCA,MAAK,GAAayvD,WAAWxa,MAAM,CACjCwL,cAAc,IAEhB9R,EAAMhL,iBACNgL,EAAMihB,0BACR,CACA,IAAgBjhB,GACdwV,GAAiBO,wBAAwBzgD,KAAKjE,KAAM2uC,EACtD,CACA,IAAaA,GACP3uC,MAAK,IAAgC2uC,EAAM4Y,eAAe/F,aAAexhD,MAAK,IAChFA,MAAK,IAET,CACA,IAAcf,GACZe,MAAK,GAAsBA,MAAK,GAA+Bf,EAAO,EACxE,CACA,IAAoBJ,GAClB,GAAKmB,MAAK,GAGV,IAAK,MAAMulC,KAAOvlC,MAAK,GACrBulC,EAAI6D,SAAWvqC,CAEnB,CACA,mBAAA+lD,CAAoB1hD,EAAG04B,GAChB57B,MAAK,IAGVA,MAAK,GAAoBA,MAAK,GAAqB,CACjDqrD,OAAQnoD,EACRooD,OAAQ1vB,EACR6vB,cAAc,GAElB,CACA,MACEzrD,MAAK,IAA+B,EACpCA,MAAK,IAAqB,GAC1BA,MAAK,IACP,CACA,yBAAA6kD,GACE7kD,MAAK,KACLA,KAAKulC,IAAI0P,OACX,CACA,MAAAwH,GACMz8C,KAAK08C,YAAc18C,KAAKqkD,eAG5BrkD,KAAK08C,YAAa,EAClB18C,KAAKmvD,gBACLnvD,KAAKulC,KAAKyC,UAAUv3B,IAAI,kBACnBzQ,KAAKqkD,cAQVrkD,KAAKqkD,cAActb,OACnB/oC,MAAK,GAAU6gD,oBAAmB,IARhC7gD,KAAKgsD,iBAAiBzgB,MAAK,KACrBvrC,KAAKulC,KAAKyC,UAAUyI,SAAS,mBAC/BzwC,KAAKqkD,cAActb,MACrB,IAMN,CACA,QAAA0R,GACOz6C,KAAK08C,aAGV18C,KAAK08C,YAAa,EAClB18C,MAAK,IAAcgoC,UAAUv3B,IAAI,UACjCzQ,KAAKulC,KAAKyC,UAAU/3B,OAAO,kBACvBjQ,KAAKulC,KAAKkL,SAAS7lC,SAAS8lC,gBAC9B1wC,KAAKioC,WAAW+N,aAAazQ,IAAI0P,MAAM,CACrC4a,eAAe,IAGnB7vD,KAAKqkD,cAAcxb,OACnB7oC,MAAK,GAAU6gD,oBAAmB,GACpC,CACA,YAAA7N,CAAartC,EAAM9G,GAAQ,CAC3B,cAAAixD,GAAkB,CAClB,aAAAC,GAAiB,CACjB,oBAAIC,GACF,OAAO,CACT,CACA,eAAAxV,GACOx6C,KAAKgwD,mBAGVhwD,KAAKouD,iBACLpuD,KAAKulC,IAAI0P,QACX,CACA,QAAAgb,CAASthB,GACP3uC,KAAKw6C,kBACLx6C,KAAK4qC,OAAOgQ,cAAc,CACxB17B,KAAMlf,KAAKT,YAAYimD,YACvBtL,OAAQl6C,KAAKwP,IAEjB,CACA,oBAAAiyC,GACE,OAAOzhD,KAAKulC,GACd,CACA,cAAI2qB,GACF,OAAOlwD,KAAKulC,GACd,CACA,aAAI4K,GACF,OAAOnwC,MAAK,EACd,CACA,aAAImwC,CAAUtxC,GACZmB,MAAK,GAAanB,EACbmB,KAAK4qC,SAGN/rC,GACFmB,KAAK4qC,OAAO2P,YAAYv6C,MACxBA,KAAK4qC,OAAOuR,gBAAgBn8C,OAE5BA,KAAK4qC,OAAOuR,gBAAgB,MAEhC,CACA,cAAAgU,CAAenvB,EAAOC,GACpBjhC,MAAK,IAAmB,EACxB,MAAMowD,EAAcpvB,EAAQC,GACtB,MACJn2B,GACE9K,KAAKulC,IACTz6B,EAAMslD,YAAcA,EACpBtlD,EAAMm2B,OAAS,MACjB,CACA,mBAAWspB,GACT,OAAO,EACT,CACA,8BAAO7P,GACL,OAAO,CACT,CACA,wBAAI2V,GACF,MAAO,CACLvV,OAAQ,QAEZ,CACA,sBAAIwV,GACF,OAAO,IACT,CACA,gBAAAhQ,CAAiBhzC,EAAM6tC,GAAW,GAChC,GAAIA,EAAU,CACZn7C,MAAK,KAAuB,IAAIi9B,IAChC,MAAM,OACJ6d,GACExtC,EACJ,IAAI4hD,EAAUlvD,MAAK,GAAmB7B,IAAI28C,GAY1C,OAXIoU,GACFzb,aAAayb,GAEfA,EAAUvT,YAAW,KACnB37C,KAAKsgD,iBAAiBhzC,GACtBtN,MAAK,GAAmBqpC,OAAOyR,GACM,IAAjC96C,MAAK,GAAmB6P,OAC1B7P,MAAK,GAAqB,KAC5B,GACCmkD,GAAiBoM,wBACpBvwD,MAAK,GAAmB0E,IAAIo2C,EAAQoU,EAEtC,CACA5hD,EAAK3H,OAAS3F,KAAKkpC,WACnBlpC,KAAKioC,WAAWuK,UAAUqC,SAAS,kBAAmB,CACpDh1C,OAAQG,KACRi2B,QAAS,CACPtwB,KAAM,UACN2H,SAGN,CACA,IAAAy7B,CAAKiS,EAAUh7C,KAAKwkD,YAClBxkD,KAAKulC,IAAIyC,UAAUsN,OAAO,UAAW0F,GACrCh7C,KAAKwkD,WAAaxJ,CACpB,CACA,MAAAlB,GACM95C,KAAKulC,MACPvlC,KAAKulC,IAAI6D,SAAW,GAEtBppC,MAAK,IAAY,CACnB,CACA,OAAA+5C,GACM/5C,KAAKulC,MACPvlC,KAAKulC,IAAI6D,UAAY,GAEvBppC,MAAK,IAAY,CACnB,CACA,uBAAAq/C,CAAwBC,GACtB,IAAIt1C,EAAUs1C,EAAW5N,UAAU8e,cAAc,sBACjD,GAAKxmD,GAIE,GAAyB,WAArBA,EAAQymD,SAAuB,CACxC,MAAMxjB,EAASjjC,EACfA,EAAUY,SAAS0G,cAAc,OACjCtH,EAAQg+B,UAAUv3B,IAAI,oBAAqBzQ,KAAKkpC,YAChD+D,EAAOmf,OAAOpiD,EAChB,OAREA,EAAUY,SAAS0G,cAAc,OACjCtH,EAAQg+B,UAAUv3B,IAAI,oBAAqBzQ,KAAKkpC,YAChDoW,EAAW5N,UAAU8X,QAAQx/C,GAO/B,OAAOA,CACT,CACA,sBAAA0mD,CAAuBpR,GACrB,MAAM,WACJmQ,GACEnQ,EAAW5N,UACc,QAAzB+d,GAAYgB,UAAsBhB,EAAWznB,UAAUyI,SAAS,sBAClEgf,EAAWx/C,QAEf,EAEF,MAAM61C,WAAmB3B,GACvB,WAAA5kD,CAAYkV,GACVshB,MAAMthB,GACNzU,KAAKs6C,oBAAsB7lC,EAAO6lC,oBAClCt6C,KAAK87C,SAAU,CACjB,CACA,SAAApD,GACE,OAAO14C,KAAK8uD,kBACd,EAWF,MAAM6B,GAAO,WACPC,GAAY,WACZC,GAAW,MACjB,MAAMC,GACJ,WAAAvxD,CAAYwxD,GACV/wD,KAAKgxD,GAAKD,EAAc,WAAPA,EAAoBJ,GACrC3wD,KAAKixD,GAAKF,EAAc,WAAPA,EAAoBJ,EACvC,CACA,MAAAO,CAAOtkD,GACL,IAAIU,EAAM9P,EACV,GAAqB,iBAAVoP,EAAoB,CAC7BU,EAAO,IAAI5G,WAA0B,EAAfkG,EAAMpP,QAC5BA,EAAS,EACT,IAAK,IAAIuI,EAAI,EAAGi8B,EAAKp1B,EAAMpP,OAAQuI,EAAIi8B,EAAIj8B,IAAK,CAC9C,MAAM+vB,EAAOlpB,EAAMmqB,WAAWhxB,GAC1B+vB,GAAQ,IACVxoB,EAAK9P,KAAYs4B,GAEjBxoB,EAAK9P,KAAYs4B,IAAS,EAC1BxoB,EAAK9P,KAAmB,IAAPs4B,EAErB,CACF,KAAO,KAAI1vB,YAAY+qD,OAAOvkD,GAI5B,MAAM,IAAIyJ,MAAM,wDAHhB/I,EAAOV,EAAMnO,QACbjB,EAAS8P,EAAK/G,UAGhB,CACA,MAAM6qD,EAAc5zD,GAAU,EACxB6zD,EAAa7zD,EAAuB,EAAd4zD,EACtBE,EAAa,IAAIn6B,YAAY7pB,EAAKnH,OAAQ,EAAGirD,GACnD,IAAIG,EAAK,EACPC,EAAK,EACHR,EAAKhxD,KAAKgxD,GACZC,EAAKjxD,KAAKixD,GACZ,MAAMQ,EAAK,WACTC,EAAK,UACDC,EAASF,MACbG,EAASF,MACX,IAAK,IAAI3rD,EAAI,EAAGA,EAAIqrD,EAAarrD,IACvB,EAAJA,GACFwrD,EAAKD,EAAWvrD,GAChBwrD,EAAKA,EAAKE,EAAKb,GAAYW,EAAKI,EAASd,GACzCU,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKd,GAAYW,EAAKK,EAASf,GACzCG,GAAMO,EACNP,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,aAEdQ,EAAKF,EAAWvrD,GAChByrD,EAAKA,EAAKC,EAAKb,GAAYY,EAAKG,EAASd,GACzCW,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKE,EAAKd,GAAYY,EAAKI,EAASf,GACzCI,GAAMO,EACNP,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAU,EAALA,EAAS,YAIlB,OADAM,EAAK,EACGF,GACN,KAAK,EACHE,GAAMjkD,EAAmB,EAAd8jD,EAAkB,IAAM,GACrC,KAAK,EACHG,GAAMjkD,EAAmB,EAAd8jD,EAAkB,IAAM,EACrC,KAAK,EACHG,GAAMjkD,EAAmB,EAAd8jD,GACXG,EAAKA,EAAKE,EAAKb,GAAYW,EAAKI,EAASd,GACzCU,EAAKA,GAAM,GAAKA,IAAO,GACvBA,EAAKA,EAAKG,EAAKd,GAAYW,EAAKK,EAASf,GACvB,EAAdO,EACFJ,GAAMO,EAENN,GAAMM,EAGZvxD,KAAKgxD,GAAKA,EACVhxD,KAAKixD,GAAKA,CACZ,CACA,SAAAY,GACE,IAAIb,EAAKhxD,KAAKgxD,GACZC,EAAKjxD,KAAKixD,GAQZ,OAPAD,GAAMC,IAAO,EACbD,EAAU,WAALA,EAAkBJ,GAAiB,MAALI,EAAcH,GACjDI,EAAU,WAALA,EAAkBL,IAAsC,YAAxBK,GAAM,GAAKD,IAAO,IAAmBJ,MAAe,GACzFI,GAAMC,IAAO,EACbD,EAAU,UAALA,EAAkBJ,GAAiB,MAALI,EAAcH,GACjDI,EAAU,WAALA,EAAkBL,IAAsC,YAAxBK,GAAM,GAAKD,IAAO,IAAmBJ,MAAe,GACzFI,GAAMC,IAAO,GACLD,IAAO,GAAGjxD,SAAS,IAAIo4B,SAAS,EAAG,MAAQ84B,IAAO,GAAGlxD,SAAS,IAAIo4B,SAAS,EAAG,IACxF,EAkBF,MAAM25B,GAAoBvzD,OAAOipC,OAAO,CACtCr/B,IAAK,KACLyW,KAAM,GACNtY,cAAU5G,IAEZ,MAAMqyD,GACJ,KAAY,EACZ,IAAe,KACf,IAAW,IAAI90B,IACf,WAAA19B,GACES,KAAKgyD,cAAgB,KACrBhyD,KAAKiyD,gBAAkB,KACvBjyD,KAAKkyD,mBAAqB,IAC5B,CACA,QAAAC,CAASzpD,EAAK0pD,GACZ,MAAMvzD,EAAQmB,MAAK,GAAS7B,IAAIuK,GAChC,YAAchJ,IAAVb,EACKuzD,EAEF7zD,OAAO66C,OAAOgZ,EAAcvzD,EACrC,CACA,WAAA2gD,CAAY92C,GACV,OAAO1I,MAAK,GAAS7B,IAAIuK,EAC3B,CACA,MAAAuH,CAAOvH,GAKL,GAJA1I,MAAK,GAASqpC,OAAO3gC,GACM,IAAvB1I,MAAK,GAAS6P,MAChB7P,KAAKqyD,gBAEgC,mBAA5BryD,KAAKkyD,mBAAmC,CACjD,IAAK,MAAMrzD,KAASmB,MAAK,GAAS+e,SAChC,GAAIlgB,aAAiBslD,GACnB,OAGJnkD,KAAKkyD,mBAAmB,KAC1B,CACF,CACA,QAAAlb,CAAStuC,EAAK7J,GACZ,MAAMuJ,EAAMpI,MAAK,GAAS7B,IAAIuK,GAC9B,IAAI4pD,GAAW,EACf,QAAY5yD,IAAR0I,EACF,IAAK,MAAO0M,EAAO1C,KAAQ7T,OAAOoW,QAAQ9V,GACpCuJ,EAAI0M,KAAW1C,IACjBkgD,GAAW,EACXlqD,EAAI0M,GAAS1C,QAIjBkgD,GAAW,EACXtyD,MAAK,GAAS0E,IAAIgE,EAAK7J,GAErByzD,GACFtyD,MAAK,KAEHnB,aAAiBslD,IAAuD,mBAA5BnkD,KAAKkyD,oBACnDlyD,KAAKkyD,mBAAmBrzD,EAAMU,YAAYgmD,MAE9C,CACA,GAAA5gD,CAAI+D,GACF,OAAO1I,MAAK,GAAS2E,IAAI+D,EAC3B,CACA,QAAImH,GACF,OAAO7P,MAAK,GAAS6P,IACvB,CACA,MACO7P,MAAK,KACRA,MAAK,IAAY,EACiB,mBAAvBA,KAAKgyD,eACdhyD,KAAKgyD,gBAGX,CACA,aAAAK,GACMryD,MAAK,KACPA,MAAK,IAAY,EACmB,mBAAzBA,KAAKiyD,iBACdjyD,KAAKiyD,kBAGX,CACA,SAAIM,GACF,OAAO,IAAIC,GAAuBxyD,KACpC,CACA,gBAAIyyD,GACF,GAA2B,IAAvBzyD,MAAK,GAAS6P,KAChB,OAAOiiD,GAET,MAAM3pD,EAAM,IAAI80B,IACdre,EAAO,IAAIkyC,GACXxqD,EAAW,GACPuc,EAAUtkB,OAAO6M,OAAO,MAC9B,IAAIsnD,GAAY,EAChB,IAAK,MAAOhqD,EAAK0J,KAAQpS,MAAK,GAAU,CACtC,MAAMy4C,EAAarmC,aAAe+xC,GAAmB/xC,EAAIsmC,WAAU,EAAO71B,GAAWzQ,EACjFqmC,IACFtwC,EAAIzD,IAAIgE,EAAK+vC,GACb75B,EAAKsyC,OAAO,GAAGxoD,KAAOqZ,KAAKo1B,UAAUsB,MACrCia,MAAgBja,EAAWz6B,OAE/B,CACA,GAAI00C,EACF,IAAK,MAAM7zD,KAASsJ,EAAI4W,SAClBlgB,EAAMmf,QACR1X,EAASiC,KAAK1J,EAAMmf,QAI1B,OAAO7V,EAAI0H,KAAO,EAAI,CACpB1H,MACAyW,KAAMA,EAAKizC,YACXvrD,YACEwrD,EACN,CACA,eAAIa,GACF,IAAIC,EAAQ,KACZ,MAAMC,EAAe,IAAI51B,IACzB,IAAK,MAAMp+B,KAASmB,MAAK,GAAS+e,SAAU,CAC1C,KAAMlgB,aAAiBslD,IACrB,SAEF,MAAMwO,EAAc9zD,EAAMyxD,mBAC1B,IAAKqC,EACH,SAEF,MAAM,KACJhtD,GACEgtD,EACCE,EAAaluD,IAAIgB,IACpBktD,EAAanuD,IAAIiB,EAAMpH,OAAOsK,eAAehK,GAAOU,aAEtDqzD,IAAUr0D,OAAO6M,OAAO,MACxB,MAAMjD,EAAMyqD,EAAMjtD,KAAU,IAAIs3B,IAChC,IAAK,MAAOv0B,EAAK0J,KAAQ7T,OAAOoW,QAAQg+C,GAAc,CACpD,GAAY,SAARjqD,EACF,SAEF,IAAIoqD,EAAW3qD,EAAIhK,IAAIuK,GAClBoqD,IACHA,EAAW,IAAI71B,IACf90B,EAAIzD,IAAIgE,EAAKoqD,IAEf,MAAM9tC,EAAQ8tC,EAAS30D,IAAIiU,IAAQ,EACnC0gD,EAASpuD,IAAI0N,EAAK4S,EAAQ,EAC5B,CACF,CACA,IAAK,MAAOrf,EAAM4hC,KAAWsrB,EAC3BD,EAAMjtD,GAAQ4hC,EAAOwrB,0BAA0BH,EAAMjtD,IAEvD,OAAOitD,CACT,CACA,gBAAAI,GACEhzD,MAAK,GAAe,IACtB,CACA,eAAIizD,GACF,GAAIjzD,MAAK,GACP,OAAOA,MAAK,GAEd,MAAMkzD,EAAM,GACZ,IAAK,MAAMr0D,KAASmB,MAAK,GAAS+e,SAC1BlgB,aAAiBslD,IAAsBtlD,EAAMy7C,qBAAwBz7C,EAAM65C,aAGjFwa,EAAI3qD,KAAK1J,EAAMy7C,qBAEjB,OAAOt6C,MAAK,GAAe,CACzBkzD,IAAK,IAAI1gD,IAAI0gD,GACbt0C,KAAMs0C,EAAIv0D,KAAK,KAEnB,CACA,CAAC4U,OAAO1S,YACN,OAAOb,MAAK,GAAS2U,SACvB,EAEF,MAAM69C,WAA+BT,GACnC,IACA,WAAAxyD,CAAYqrC,GACV7U,QACA,MAAM,IACJ5tB,EAAG,KACHyW,EAAI,SACJtY,GACEskC,EAAO6nB,aACLpsD,EAAQH,gBAAgBiC,EAAK7B,EAAW,CAC5CA,YACE,MACJtG,MAAK,GAAgB,CACnBmI,IAAK9B,EACLuY,OACAtY,WAEJ,CACA,SAAIisD,GACF/9B,EAAY,+CACd,CACA,gBAAIi+B,GACF,OAAOzyD,MAAK,EACd,CACA,eAAIizD,GACF,OAAOx9B,EAAOz1B,KAAM,cAAe,CACjCkzD,IAAK,IAAI1gD,IACToM,KAAM,IAEV,EAcF,MAAMu0C,GACJ,IAAe,IAAI3gD,IACnB,WAAAjT,EAAY,cACV6zD,EAAgBvuD,WAAW+F,SAAQ,aACnCyoD,EAAe,OAEfrzD,KAAKszD,UAAYF,EACjBpzD,KAAKuzD,gBAAkB,IAAI/gD,IAC3BxS,KAAKqzD,aAAe,KACpBrzD,KAAKwzD,gBAAkB,GACvBxzD,KAAKyzD,eAAiB,CACxB,CACA,iBAAAC,CAAkBC,GAChB3zD,KAAKuzD,gBAAgB9iD,IAAIkjD,GACzB3zD,KAAKszD,UAAUM,MAAMnjD,IAAIkjD,EAC3B,CACA,oBAAAE,CAAqBF,GACnB3zD,KAAKuzD,gBAAgBlqB,OAAOsqB,GAC5B3zD,KAAKszD,UAAUM,MAAMvqB,OAAOsqB,EAC9B,CACA,UAAAG,CAAWC,GACJ/zD,KAAKqzD,eACRrzD,KAAKqzD,aAAerzD,KAAKszD,UAAUhiD,cAAc,SACjDtR,KAAKszD,UAAU9M,gBAAgBwN,qBAAqB,QAAQ,GAAG1/C,OAAOtU,KAAKqzD,eAE7E,MAAMY,EAAaj0D,KAAKqzD,aAAaa,MACrCD,EAAWH,WAAWC,EAAME,EAAWE,SAAS32D,OAClD,CACA,KAAAgiB,GACE,IAAK,MAAMm0C,KAAkB3zD,KAAKuzD,gBAChCvzD,KAAKszD,UAAUM,MAAMvqB,OAAOsqB,GAE9B3zD,KAAKuzD,gBAAgB/zC,QACrBxf,MAAK,GAAawf,QACdxf,KAAKqzD,eACPrzD,KAAKqzD,aAAapjD,SAClBjQ,KAAKqzD,aAAe,KAExB,CACA,oBAAMe,EACJC,eAAgBlgC,EAAI,gBACpBmgC,EAAe,aACfC,IAEA,GAAKpgC,IAAQn0B,MAAK,GAAa2E,IAAIwvB,EAAKqgC,YAIxC,GADA//B,GAAQ6/B,EAAiB,qEACrBt0D,KAAKy0D,0BAAT,CACE,MAAM,WACJD,EAAU,IACVvpD,EAAG,MACHH,GACEqpB,EACEugC,EAAW,IAAIC,SAASH,EAAYvpD,EAAKH,GAC/C9K,KAAK0zD,kBAAkBgB,GACvB,UACQA,EAASE,OACf50D,MAAK,GAAayQ,IAAI+jD,GACtBD,IAAepgC,EACjB,CAAE,MACAI,EAAK,4BAA4BJ,EAAK0gC,oEACtC70D,KAAK6zD,qBAAqBa,EAC5B,CAEF,MACAlgC,EAAY,gEACd,CACA,UAAMlyB,CAAKwyD,GACT,GAAIA,EAAKC,UAAYD,EAAKE,cAAgBF,EAAKT,eAC7C,OAGF,GADAS,EAAKC,UAAW,EACZD,EAAKT,eAEP,kBADMr0D,KAAKo0D,eAAeU,GAG5B,GAAI90D,KAAKy0D,0BAA2B,CAClC,MAAMd,EAAiBmB,EAAKG,uBAC5B,GAAItB,EAAgB,CAClB3zD,KAAK0zD,kBAAkBC,GACvB,UACQA,EAAeuB,MACvB,CAAE,MAAOpc,GAGP,MAFAvkB,EAAK,wBAAwBo/B,EAAewB,aAAarc,OACzDgc,EAAKR,iBAAkB,EACjBxb,CACR,CACF,CACA,MACF,CACA,MAAMib,EAAOe,EAAKM,qBAClB,GAAIrB,EAAM,CAER,GADA/zD,KAAK8zD,WAAWC,GACZ/zD,KAAKq1D,2BACP,aAEI,IAAIluD,SAAQQ,IAChB,MAAM63B,EAAUx/B,KAAKs1D,sBAAsB3tD,GAC3C3H,KAAKu1D,sBAAsBT,EAAMt1B,EAAQ,GAE7C,CACF,CACA,6BAAIi1B,GAEF,OAAOh/B,EAAOz1B,KAAM,8BADDA,KAAKszD,WAAWM,MAErC,CACA,8BAAIyB,GACF,OAAO5/B,EAAOz1B,KAAM,6BAA8BkpB,GAAY8N,GAAiBS,SAASK,UAC1F,CACA,qBAAAw9B,CAAsBh/C,GASpB,MAAM,gBACJk9C,GACExzD,KACEw/B,EAAU,CACdz+B,MAAM,EACNy0D,SAbF,WAGE,IAFA/gC,GAAQ+K,EAAQz+B,KAAM,6CACtBy+B,EAAQz+B,MAAO,EACRyyD,EAAgBh2D,OAAS,GAAKg2D,EAAgB,GAAGzyD,MAAM,CAC5D,MAAM00D,EAAejC,EAAgB7qC,QACrCgzB,WAAW8Z,EAAan/C,SAAU,EACpC,CACF,EAOEA,YAGF,OADAk9C,EAAgBjrD,KAAKi3B,GACdA,CACT,CACA,iBAAIk2B,GAEF,OAAOjgC,EAAOz1B,KAAM,gBADH21D,KAAK,49CAExB,CACA,qBAAAJ,CAAsBT,EAAMt1B,GAC1B,SAASo2B,EAAMtoD,EAAMuoD,GACnB,OAAOvoD,EAAKypB,WAAW8+B,IAAW,GAAKvoD,EAAKypB,WAAW8+B,EAAS,IAAM,GAAKvoD,EAAKypB,WAAW8+B,EAAS,IAAM,EAAkC,IAA9BvoD,EAAKypB,WAAW8+B,EAAS,EACzI,CACA,SAASC,EAAah+C,EAAG+9C,EAAQ5lD,EAAQ8lD,GAGvC,OAFej+C,EAAEoqB,UAAU,EAAG2zB,GAEdE,EADDj+C,EAAEoqB,UAAU2zB,EAAS5lD,EAEtC,CACA,IAAIlK,EAAGi8B,EACP,MAAMiL,EAASjtC,KAAKszD,UAAUhiD,cAAc,UAC5C27B,EAAOjM,MAAQ,EACfiM,EAAOhM,OAAS,EAChB,MAAMiE,EAAM+H,EAAO9B,WAAW,MAC9B,IAAI6qB,EAAS,EAgBb,MAAMvC,EAAiB,KAAKrwB,KAAKC,QAAQrjC,KAAKyzD,mBAC9C,IAAInmD,EAAOtN,KAAK01D,cAEhBpoD,EAAOwoD,EAAaxoD,EADG,IACmBmmD,EAAej2D,OAAQi2D,GACjE,MACMwC,EAAa,WACnB,IAAIC,EAAWN,EAAMtoD,EAFO,IAG5B,IAAKvH,EAAI,EAAGi8B,EAAKyxB,EAAej2D,OAAS,EAAGuI,EAAIi8B,EAAIj8B,GAAK,EACvDmwD,EAAWA,EAAWD,EAAaL,EAAMnC,EAAgB1tD,GAAK,EA7xKpE,IAAkBlH,EA+xKVkH,EAAI0tD,EAAej2D,SACrB04D,EAAWA,EAAWD,EAAaL,EAAMnC,EAAiB,MAAO1tD,GAAK,GAExEuH,EAAOwoD,EAAaxoD,EATQ,GASmB,GAlyKjCzO,EAkyK6Cq3D,EAjyKtD73D,OAAOyiB,aAAajiB,GAAS,GAAK,IAAMA,GAAS,GAAK,IAAMA,GAAS,EAAI,IAAc,IAARA,KAkyKpF,MACMk1D,EAAO,4BAA4BN,UAD7B,iCAAiC31B,KAAKxwB,UAElDtN,KAAK8zD,WAAWC,GAChB,MAAMxuB,EAAMvlC,KAAKszD,UAAUhiD,cAAc,OACzCi0B,EAAIz6B,MAAMukC,WAAa,SACvB9J,EAAIz6B,MAAMk2B,MAAQuE,EAAIz6B,MAAMm2B,OAAS,OACrCsE,EAAIz6B,MAAMu9B,SAAW,WACrB9C,EAAIz6B,MAAM29B,IAAMlD,EAAIz6B,MAAM09C,KAAO,MACjC,IAAK,MAAMvpD,IAAQ,CAAC61D,EAAKN,WAAYf,GAAiB,CACpD,MAAM5oB,EAAO7qC,KAAKszD,UAAUhiD,cAAc,QAC1Cu5B,EAAK0W,YAAc,KACnB1W,EAAK//B,MAAMqrD,WAAal3D,EACxBsmC,EAAIjxB,OAAOu2B,EACb,CACA7qC,KAAKszD,UAAU/jB,KAAKj7B,OAAOixB,GA3C3B,SAAS6wB,EAAYn3D,EAAMqX,GACzB,KAAM0/C,EAAS,GAGb,OAFAzhC,EAAK,qCACLje,IAGF4uB,EAAI4vB,KAAO,QAAU71D,EACrBimC,EAAImxB,SAAS,IAAK,EAAG,IACHnxB,EAAIuG,aAAa,EAAG,EAAG,EAAG,GAC9Bn+B,KAAK,GAAK,EACtBgJ,IAGFqlC,WAAWya,EAAY9zD,KAAK,KAAMrD,EAAMqX,GAC1C,CA8BA8/C,CAAY3C,GAAgB,KAC1BluB,EAAIt1B,SACJuvB,EAAQg2B,UAAU,GAEtB,EAEF,MAAMc,GACJ,WAAA/2D,CAAYg3D,EAAgBC,EAAc,MACxCx2D,KAAKy2D,eAAiBl4D,OAAO6M,OAAO,MACpC,IAAK,MAAMrF,KAAKwwD,EACdv2D,KAAK+F,GAAKwwD,EAAexwD,GAE3B/F,KAAKu0D,aAAeiC,CACtB,CACA,oBAAAvB,GACE,IAAKj1D,KAAKsN,MAAQtN,KAAKs0D,gBACrB,OAAO,KAET,IAAIX,EACJ,GAAK3zD,KAAK02D,YAEH,CACL,MAAMC,EAAM,CACVC,OAAQ52D,KAAK02D,YAAYG,YAEvB72D,KAAK02D,YAAYI,cACnBH,EAAI7rD,MAAQ,WAAW9K,KAAK02D,YAAYI,kBAE1CnD,EAAiB,IAAIgB,SAAS30D,KAAK02D,YAAYP,WAAYn2D,KAAKsN,KAAMqpD,EACxE,MATEhD,EAAiB,IAAIgB,SAAS30D,KAAKw0D,WAAYx0D,KAAKsN,KAAM,CAAC,GAW7D,OADAtN,KAAKu0D,eAAev0D,MACb2zD,CACT,CACA,kBAAAyB,GACE,IAAKp1D,KAAKsN,MAAQtN,KAAKs0D,gBACrB,OAAO,KAET,MAAM34C,EAAM,YAAY3b,KAAK+2D,mBAAmBn5B,GAAa59B,KAAKsN,UAClE,IAAIymD,EACJ,GAAK/zD,KAAK02D,YAEH,CACL,IAAIC,EAAM,gBAAgB32D,KAAK02D,YAAYG,cACvC72D,KAAK02D,YAAYI,cACnBH,GAAO,uBAAuB32D,KAAK02D,YAAYI,mBAEjD/C,EAAO,4BAA4B/zD,KAAK02D,YAAYP,eAAeQ,QAAUh7C,IAC/E,MAPEo4C,EAAO,4BAA4B/zD,KAAKw0D,mBAAmB74C,KAS7D,OADA3b,KAAKu0D,eAAev0D,KAAM2b,GACnBo4C,CACT,CACA,gBAAAiD,CAAiBC,EAAMC,GACrB,QAAuCx3D,IAAnCM,KAAKy2D,eAAeS,GACtB,OAAOl3D,KAAKy2D,eAAeS,GAE7B,MAAMC,EAAQn3D,KAAKw0D,WAAa,SAAW0C,EAC3C,IAAIE,EACJ,IACEA,EAAOH,EAAK94D,IAAIg5D,EAClB,CAAE,MAAOre,GACPvkB,EAAK,2CAA2CukB,MAClD,CACA,MAAMue,EAAO,IAAIC,OAAOF,GAAQ,IAIhC,OAHKp3D,KAAKu3D,qBACRN,EAAK5tB,OAAO8tB,GAEPn3D,KAAKy2D,eAAeS,GAAaG,CAC1C,EA+CF,SAASG,GAAkBplD,GACzB,GAAmB,iBAARA,EACT,OAAO,KAET,GAAIA,EAAIg3C,SAAS,KACf,OAAOh3C,EAET,MAAM,IAAIiE,MAAM,yBAAyBjE,kCAC3C,CACA,MAAMqlD,GAAa7iD,GAAkB,iBAANA,GAAkBoN,OAAOiS,UAAUrf,GAAG8iD,MAAQ9iD,EAAE8iD,KAAO,GAAK11C,OAAOiS,UAAUrf,GAAG+iD,MAAQ/iD,EAAE+iD,KAAO,EAE1HC,GAvlKN,SAA8BC,EAAUC,EAAWC,GACjD,IAAKjpD,MAAMwD,QAAQylD,IAASA,EAAKv6D,OAAS,EACxC,OAAO,EAET,MAAOw6D,EAAMC,KAAS1wD,GAAQwwD,EAC9B,IAAKF,EAASG,KAAUh2C,OAAOiS,UAAU+jC,GACvC,OAAO,EAET,IAAKF,EAAUG,GACb,OAAO,EAET,MAAMC,EAAU3wD,EAAK/J,OACrB,IAAI26D,GAAY,EAChB,OAAQF,EAAKh5D,MACX,IAAK,MACH,GAAIi5D,EAAU,GAAKA,EAAU,EAC3B,OAAO,EAET,MACF,IAAK,MACL,IAAK,OACH,OAAmB,IAAZA,EACT,IAAK,OACL,IAAK,QACL,IAAK,OACL,IAAK,QACH,GAAIA,EAAU,EACZ,OAAO,EAET,MACF,IAAK,OACH,GAAgB,IAAZA,EACF,OAAO,EAETC,GAAY,EACZ,MACF,QACE,OAAO,EAEX,IAAK,MAAMC,KAAO7wD,EAChB,KAAmB,iBAAR6wD,GAAoBD,GAAqB,OAARC,GAG5C,OAAO,EAET,OAAO,CACT,EAyiKiD91D,KAAK,KAAMm1D,IADxC7iD,GAAkB,iBAANA,GAAqC,iBAAZA,GAAG3V,OAE5D,MAAMo5D,GACJ,IAAa,IAAIp7B,IACjB,IAAY91B,QAAQQ,UACpB,WAAAyL,CAAYhL,EAAK9B,GACf,MAAMqoC,EAAQ,CACZrhC,KAAMpH,gBAAgBkC,EAAK9B,EAAW,CACpCA,YACE,OAENtG,MAAK,GAAUurC,MAAK,KAClB,IAAK,MAAO+sB,KAAat4D,MAAK,GAC5Bs4D,EAASz7D,KAAKmD,KAAM2uC,EACtB,GAEJ,CACA,gBAAAlQ,CAAiBx/B,EAAMq5D,EAAUp5D,EAAU,MACzC,IAAIq5D,EAAU,KACd,GAAIr5D,GAASm/B,kBAAkBJ,YAAa,CAC1C,MAAM,OACJI,GACEn/B,EACJ,GAAIm/B,EAAOC,QAET,YADA/J,EAAK,kDAGP,MAAMikC,EAAU,IAAMx4D,KAAKy4D,oBAAoBx5D,EAAMq5D,GACrDC,EAAU,IAAMl6B,EAAOo6B,oBAAoB,QAASD,GACpDn6B,EAAOI,iBAAiB,QAAS+5B,EACnC,CACAx4D,MAAK,GAAW0E,IAAI4zD,EAAUC,EAChC,CACA,mBAAAE,CAAoBx5D,EAAMq5D,GACxB,MAAMC,EAAUv4D,MAAK,GAAW7B,IAAIm6D,GACpCC,MACAv4D,MAAK,GAAWqpC,OAAOivB,EACzB,CACA,SAAAI,GACE,IAAK,MAAO,CAAEH,KAAYv4D,MAAK,GAC7Bu4D,MAEFv4D,MAAK,GAAWwf,OAClB,EAOF,MAAMm5C,GACE,EADFA,GAEG,EAEHC,GACI,EADJA,GAEa,EAFbA,GAGG,EAHHA,GAIK,EAJLA,GAKG,EALHA,GAME,EANFA,GAOW,EAPXA,GAQY,EAElB,SAASC,KAAQ,CACjB,SAASC,GAAWhgB,GAClB,GAAIA,aAAcviB,IAAkBuiB,aAAc5iB,IAAuB4iB,aAAcjjB,GAAqBijB,aAAc3iB,IAAqB2iB,aAAc9iB,GAC3J,OAAO8iB,EAKT,OAHMA,aAAcziC,OAAuB,iBAAPyiC,GAA0B,OAAPA,GACrDtkB,EAAY,kEAENskB,EAAG75C,MACT,IAAK,iBACH,OAAO,IAAIs3B,GAAeuiB,EAAG3hC,SAC/B,IAAK,sBACH,OAAO,IAAI+e,GAAoB4iB,EAAG3hC,SACpC,IAAK,oBACH,OAAO,IAAI0e,EAAkBijB,EAAG3hC,QAAS2hC,EAAGhjB,MAC9C,IAAK,oBACH,OAAO,IAAIK,GAAkB2iB,EAAG3hC,QAAS2hC,EAAG1iB,OAAQ0iB,EAAGziB,SACzD,IAAK,wBACH,OAAO,IAAIL,GAAsB8iB,EAAG3hC,QAAS2hC,EAAG7iB,SAEpD,OAAO,IAAID,GAAsB8iB,EAAG3hC,QAAS2hC,EAAG/4C,WAClD,CACA,MAAMg5D,GACJ,IAAa,IAAI36B,gBACjB,WAAA7+B,CAAYy5D,EAAYC,EAAYC,GAClCl5D,KAAKg5D,WAAaA,EAClBh5D,KAAKi5D,WAAaA,EAClBj5D,KAAKk5D,OAASA,EACdl5D,KAAKm5D,WAAa,EAClBn5D,KAAKo5D,SAAW,EAChBp5D,KAAKq5D,YAAc96D,OAAO6M,OAAO,MACjCpL,KAAKs5D,kBAAoB/6D,OAAO6M,OAAO,MACvCpL,KAAKu5D,qBAAuBh7D,OAAO6M,OAAO,MAC1CpL,KAAKw5D,cAAgBj7D,OAAO6M,OAAO,MACnC8tD,EAAOz6B,iBAAiB,UAAWz+B,MAAK,GAAWsC,KAAKtC,MAAO,CAC7Dq+B,OAAQr+B,MAAK,GAAWq+B,QAE5B,CACA,KAAW,KACT/wB,IAEA,GAAIA,EAAK2rD,aAAej5D,KAAKg5D,WAC3B,OAEF,GAAI1rD,EAAKmsD,OAEP,YADAz5D,MAAK,GAAsBsN,GAG7B,GAAIA,EAAKgJ,SAAU,CACjB,MAAM6iD,EAAa7rD,EAAK6rD,WAClBO,EAAa15D,KAAKu5D,qBAAqBJ,GAC7C,IAAKO,EACH,MAAM,IAAIrjD,MAAM,2BAA2B8iD,KAG7C,UADOn5D,KAAKu5D,qBAAqBJ,GAC7B7rD,EAAKgJ,WAAaqiD,GACpBe,EAAW/xD,QAAQ2F,EAAKA,UACnB,IAAIA,EAAKgJ,WAAaqiD,GAG3B,MAAM,IAAItiD,MAAM,4BAFhBqjD,EAAWhyD,OAAOoxD,GAAWxrD,EAAKkxB,QAGpC,CACA,MACF,CACA,MAAMsc,EAAS96C,KAAKw5D,cAAclsD,EAAKwtC,QACvC,IAAKA,EACH,MAAM,IAAIzkC,MAAM,+BAA+B/I,EAAKwtC,UAEtD,GAAIxtC,EAAK6rD,WAAT,CACE,MAAMH,EAAah5D,KAAKg5D,WACtBC,EAAa3rD,EAAK0rD,WAClBE,EAASl5D,KAAKk5D,OAChB/xD,QAAQwyD,IAAI7e,EAAQxtC,EAAKA,MAAMi+B,MAAK,SAAU3qC,GAC5Cs4D,EAAO9lD,YAAY,CACjB4lD,aACAC,aACA3iD,SAAUqiD,GACVQ,WAAY7rD,EAAK6rD,WACjB7rD,KAAM1M,GAEV,IAAG,SAAU49B,GACX06B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACA3iD,SAAUqiD,GACVQ,WAAY7rD,EAAK6rD,WACjB36B,OAAQs6B,GAAWt6B,IAEvB,GAEF,MACIlxB,EAAK8rD,SACPp5D,MAAK,GAAkBsN,GAGzBwtC,EAAOxtC,EAAKA,KACd,CACA,EAAAqnC,CAAGilB,EAAYC,GACb,MAAMC,EAAK95D,KAAKw5D,cAChB,GAAIM,EAAGF,GACL,MAAM,IAAIvjD,MAAM,0CAA0CujD,MAE5DE,EAAGF,GAAcC,CACnB,CACA,IAAA95B,CAAK65B,EAAYtsD,EAAMysD,GACrB/5D,KAAKk5D,OAAO9lD,YAAY,CACtB4lD,WAAYh5D,KAAKg5D,WACjBC,WAAYj5D,KAAKi5D,WACjBne,OAAQ8e,EACRtsD,QACCysD,EACL,CACA,eAAAC,CAAgBJ,EAAYtsD,EAAMysD,GAChC,MAAMZ,EAAan5D,KAAKm5D,aAClBO,EAAavyD,QAAQiO,gBAC3BpV,KAAKu5D,qBAAqBJ,GAAcO,EACxC,IACE15D,KAAKk5D,OAAO9lD,YAAY,CACtB4lD,WAAYh5D,KAAKg5D,WACjBC,WAAYj5D,KAAKi5D,WACjBne,OAAQ8e,EACRT,aACA7rD,QACCysD,EACL,CAAE,MAAOjhB,GACP4gB,EAAWhyD,OAAOoxC,EACpB,CACA,OAAO4gB,EAAW9xD,OACpB,CACA,cAAAqyD,CAAeL,EAAYtsD,EAAM4sD,EAAkBH,GACjD,MAAMX,EAAWp5D,KAAKo5D,WACpBJ,EAAah5D,KAAKg5D,WAClBC,EAAaj5D,KAAKi5D,WAClBC,EAASl5D,KAAKk5D,OAChB,OAAO,IAAIiB,eAAe,CACxB32C,MAAO42C,IACL,MAAMC,EAAkBlzD,QAAQiO,gBAgBhC,OAfApV,KAAKs5D,kBAAkBF,GAAY,CACjCgB,aACAE,UAAWD,EACXE,SAAU,KACVC,WAAY,KACZC,UAAU,GAEZvB,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAne,OAAQ8e,EACRR,WACA9rD,OACAotD,YAAaN,EAAWM,aACvBX,GACIM,EAAgBzyD,OAAO,EAEhC+yD,KAAMP,IACJ,MAAMQ,EAAiBzzD,QAAQiO,gBAS/B,OARApV,KAAKs5D,kBAAkBF,GAAUmB,SAAWK,EAC5C1B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACAsB,YAAaN,EAAWM,cAEnBE,EAAehzD,OAAO,EAE/Bs5C,OAAQ1iB,IACN/J,EAAO+J,aAAkBnoB,MAAO,mCAChC,MAAMwkD,EAAmB1zD,QAAQiO,gBAUjC,OATApV,KAAKs5D,kBAAkBF,GAAUoB,WAAaK,EAC9C76D,KAAKs5D,kBAAkBF,GAAUqB,UAAW,EAC5CvB,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA56B,OAAQs6B,GAAWt6B,KAEdq8B,EAAiBjzD,OAAO,GAEhCsyD,EACL,CACA,IAAkB5sD,GAChB,MAAM8rD,EAAW9rD,EAAK8rD,SACpBJ,EAAah5D,KAAKg5D,WAClBC,EAAa3rD,EAAK0rD,WAClBE,EAASl5D,KAAKk5D,OACVnlD,EAAO/T,KACX86C,EAAS96C,KAAKw5D,cAAclsD,EAAKwtC,QAC7BggB,EAAa,CACjB,OAAAC,CAAQr1C,EAAO7V,EAAO,EAAGkqD,GACvB,GAAI/5D,KAAKg7D,YACP,OAEF,MAAMC,EAAkBj7D,KAAK06D,YAC7B16D,KAAK06D,aAAe7qD,EAChBorD,EAAkB,GAAKj7D,KAAK06D,aAAe,IAC7C16D,KAAKk7D,eAAiB/zD,QAAQiO,gBAC9BpV,KAAKm7D,MAAQn7D,KAAKk7D,eAAetzD,SAEnCsxD,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA1zC,SACCq0C,EACL,EACA,KAAA3vD,GACMpK,KAAKg7D,cAGTh7D,KAAKg7D,aAAc,EACnB9B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,oBAEKrlD,EAAKslD,YAAYD,GAC1B,EACA,KAAAz5D,CAAM6+B,GACJ/J,EAAO+J,aAAkBnoB,MAAO,kCAC5BrW,KAAKg7D,cAGTh7D,KAAKg7D,aAAc,EACnB9B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA56B,OAAQs6B,GAAWt6B,KAEvB,EACA08B,eAAgB/zD,QAAQiO,gBACxBgmD,OAAQ,KACRC,SAAU,KACVL,aAAa,EACbN,YAAaptD,EAAKotD,YAClBS,MAAO,MAETL,EAAWI,eAAevzD,UAC1BmzD,EAAWK,MAAQL,EAAWI,eAAetzD,QAC7C5H,KAAKq5D,YAAYD,GAAY0B,EAC7B3zD,QAAQwyD,IAAI7e,EAAQxtC,EAAKA,KAAMwtD,GAAYvvB,MAAK,WAC9C2tB,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACAkC,SAAS,GAEb,IAAG,SAAU98B,GACX06B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA56B,OAAQs6B,GAAWt6B,IAEvB,GACF,CACA,IAAsBlxB,GACpB,MAAM8rD,EAAW9rD,EAAK8rD,SACpBJ,EAAah5D,KAAKg5D,WAClBC,EAAa3rD,EAAK0rD,WAClBE,EAASl5D,KAAKk5D,OACVqC,EAAmBv7D,KAAKs5D,kBAAkBF,GAC9C0B,EAAa96D,KAAKq5D,YAAYD,GAChC,OAAQ9rD,EAAKmsD,QACX,KAAKb,GACCtrD,EAAKguD,QACPC,EAAiBjB,UAAU3yD,UAE3B4zD,EAAiBjB,UAAU5yD,OAAOoxD,GAAWxrD,EAAKkxB,SAEpD,MACF,KAAKo6B,GACCtrD,EAAKguD,QACPC,EAAiBhB,SAAS5yD,UAE1B4zD,EAAiBhB,SAAS7yD,OAAOoxD,GAAWxrD,EAAKkxB,SAEnD,MACF,KAAKo6B,GACH,IAAKkC,EAAY,CACf5B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACAkC,SAAS,IAEX,KACF,CACIR,EAAWJ,aAAe,GAAKptD,EAAKotD,YAAc,GACpDI,EAAWI,eAAevzD,UAE5BmzD,EAAWJ,YAAcptD,EAAKotD,YAC9BvzD,QAAQwyD,IAAImB,EAAWM,QAAUvC,IAAMttB,MAAK,WAC1C2tB,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACAkC,SAAS,GAEb,IAAG,SAAU98B,GACX06B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA56B,OAAQs6B,GAAWt6B,IAEvB,IACA,MACF,KAAKo6B,GAEH,GADAnkC,EAAO8mC,EAAkB,yCACrBA,EAAiBd,SACnB,MAEFc,EAAiBnB,WAAWW,QAAQztD,EAAKoY,OACzC,MACF,KAAKkzC,GAEH,GADAnkC,EAAO8mC,EAAkB,uCACrBA,EAAiBd,SACnB,MAEFc,EAAiBd,UAAW,EAC5Bc,EAAiBnB,WAAWhwD,QAC5BpK,MAAK,GAAwBu7D,EAAkBnC,GAC/C,MACF,KAAKR,GACHnkC,EAAO8mC,EAAkB,uCACzBA,EAAiBnB,WAAWz6D,MAAMm5D,GAAWxrD,EAAKkxB,SAClDx+B,MAAK,GAAwBu7D,EAAkBnC,GAC/C,MACF,KAAKR,GACCtrD,EAAKguD,QACPC,EAAiBf,WAAW7yD,UAE5B4zD,EAAiBf,WAAW9yD,OAAOoxD,GAAWxrD,EAAKkxB,SAErDx+B,MAAK,GAAwBu7D,EAAkBnC,GAC/C,MACF,KAAKR,GACH,IAAKkC,EACH,MAEF,MAAMU,EAAa1C,GAAWxrD,EAAKkxB,QACnCr3B,QAAQwyD,IAAImB,EAAWO,UAAYxC,GAAM2C,GAAYjwB,MAAK,WACxD2tB,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACAkC,SAAS,GAEb,IAAG,SAAU98B,GACX06B,EAAO9lD,YAAY,CACjB4lD,aACAC,aACAQ,OAAQb,GACRQ,WACA56B,OAAQs6B,GAAWt6B,IAEvB,IACAs8B,EAAWI,eAAexzD,OAAO8zD,GACjCV,EAAWE,aAAc,SAClBh7D,KAAKq5D,YAAYD,GACxB,MACF,QACE,MAAM,IAAI/iD,MAAM,0BAEtB,CACA,QAAM,CAAwBklD,EAAkBnC,SACxCjyD,QAAQs0D,WAAW,CAACF,EAAiBjB,WAAW1yD,QAAS2zD,EAAiBhB,UAAU3yD,QAAS2zD,EAAiBf,YAAY5yD,iBACzH5H,KAAKs5D,kBAAkBF,EAChC,CACA,OAAAhvB,GACEpqC,MAAK,IAAYu+B,QACjBv+B,MAAK,GAAa,IACpB,EAKF,MAAM07D,GACJ,KAAa,EACb,WAAAn8D,EAAY,UACVo8D,GAAY,IAEZ37D,MAAK,GAAa27D,CACpB,CACA,MAAAvwD,CAAO41B,EAAOC,GACZ,GAAID,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI5qB,MAAM,uBAElB,MAAM42B,EAASjtC,KAAK47D,cAAc56B,EAAOC,GACzC,MAAO,CACLgM,SACApqB,QAASoqB,EAAO9B,WAAW,KAAM,CAC/BC,oBAAqBprC,MAAK,KAGhC,CACA,KAAA67D,CAAMC,EAAkB96B,EAAOC,GAC7B,IAAK66B,EAAiB7uB,OACpB,MAAM,IAAI52B,MAAM,2BAElB,GAAI2qB,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI5qB,MAAM,uBAElBylD,EAAiB7uB,OAAOjM,MAAQA,EAChC86B,EAAiB7uB,OAAOhM,OAASA,CACnC,CACA,OAAAmJ,CAAQ0xB,GACN,IAAKA,EAAiB7uB,OACpB,MAAM,IAAI52B,MAAM,2BAElBylD,EAAiB7uB,OAAOjM,MAAQ,EAChC86B,EAAiB7uB,OAAOhM,OAAS,EACjC66B,EAAiB7uB,OAAS,KAC1B6uB,EAAiBj5C,QAAU,IAC7B,CACA,aAAA+4C,CAAc56B,EAAOC,GACnBzM,EAAY,0CACd,EAEF,MAAMunC,WAAyBL,GAC7B,WAAAn8D,EAAY,cACV6zD,EAAgBvuD,WAAW+F,SAAQ,UACnC+wD,GAAY,IAEZ5lC,MAAM,CACJ4lC,cAEF37D,KAAKszD,UAAYF,CACnB,CACA,aAAAwI,CAAc56B,EAAOC,GACnB,MAAMgM,EAASjtC,KAAKszD,UAAUhiD,cAAc,UAG5C,OAFA27B,EAAOjM,MAAQA,EACfiM,EAAOhM,OAASA,EACTgM,CACT,EAaF,MAAM+uB,GACJ,WAAAz8D,EAAY,QACVq1B,EAAU,KAAI,aACdqnC,GAAe,IAEfj8D,KAAK40B,QAAUA,EACf50B,KAAKi8D,aAAeA,CACtB,CACA,WAAM98B,EAAM,KACVlgC,IAEA,IAAKe,KAAK40B,QACR,MAAM,IAAIve,MAAM,2EAElB,IAAKpX,EACH,MAAM,IAAIoX,MAAM,gCAElB,MAAMsF,EAAM3b,KAAK40B,QAAU31B,GAAQe,KAAKi8D,aAAe,SAAW,IAClE,OAAOj8D,KAAKk8D,OAAOvgD,GAAK4vB,MAAK4wB,IAAY,CACvCA,WACAF,aAAcj8D,KAAKi8D,iBACjBG,OAAM59B,IACR,MAAM,IAAInoB,MAAM,kBAAkBrW,KAAKi8D,aAAe,UAAY,cAActgD,IAAM,GAE1F,CACA,YAAMugD,CAAOvgD,GACX6Y,EAAY,mCACd,EAEF,MAAM6nC,WAA6BL,GACjC,YAAME,CAAOvgD,GACX,MAAMrO,QAAayxB,GAAUpjB,EAAK3b,KAAKi8D,aAAe,cAAgB,QACtE,OAAO3uD,aAAgBlH,YAAc,IAAIM,WAAW4G,GAAQupB,GAAcvpB,EAC5E,EAIuB,EAAoB,MAO7C,MAAMgvD,GACJ,SAAAC,CAAUC,GACR,MAAO,MACT,CACA,YAAA1oB,CAAa2oB,EAASC,GACpB,MAAO,MACT,CACA,cAAAC,CAAex0D,GACb,MAAO,MACT,CACA,mBAAAy0D,CAAoBz0D,GAClB,MAAO,MACT,CACA,qBAAA00D,CAAsBC,EAAYL,EAASC,EAASK,EAAYC,GAC9D,MAAO,MACT,CACA,OAAA5yB,CAAQ6yB,GAAU,GAAQ,EAE5B,MAAMC,WAAyBZ,GAC7B,IACA,IACA,IACA,IACA,IACA,IACA,GAAM,EACN,WAAA/8D,EAAY,MACV49D,EAAK,cACL/J,EAAgBvuD,WAAW+F,WAE3BmrB,QACA/1B,MAAK,GAASm9D,EACdn9D,MAAK,GAAYozD,CACnB,CACA,KAAI,GACF,OAAOpzD,MAAK,KAAY,IAAIi9B,GAC9B,CACA,MAAI,GACF,OAAOj9B,MAAK,KAAe,IAAIi9B,GACjC,CACA,MAAI,GACF,IAAKj9B,MAAK,GAAQ,CAChB,MAAMulC,EAAMvlC,MAAK,GAAUsR,cAAc,QACnC,MACJxG,GACEy6B,EACJz6B,EAAMukC,WAAa,SACnBvkC,EAAMsyD,QAAU,SAChBtyD,EAAMk2B,MAAQl2B,EAAMm2B,OAAS,EAC7Bn2B,EAAMu9B,SAAW,WACjBv9B,EAAM29B,IAAM39B,EAAM09C,KAAO,EACzB19C,EAAMo8C,QAAU,EAChB,MAAMmW,EAAMr9D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,OACnD2+B,EAAIr3B,aAAa,QAAS,GAC1Bq3B,EAAIr3B,aAAa,SAAU,GAC3BhmC,MAAK,GAASA,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,QACrD6G,EAAIjxB,OAAO+oD,GACXA,EAAI/oD,OAAOtU,MAAK,IAChBA,MAAK,GAAUuvC,KAAKj7B,OAAOixB,EAC7B,CACA,OAAOvlC,MAAK,EACd,CACA,IAAcw8D,GACZ,GAAoB,IAAhBA,EAAKh/D,OAAc,CACrB,MAAM+/D,EAAOf,EAAK,GACZr2D,EAAS,IAAI2I,MAAM,KACzB,IAAK,IAAI/I,EAAI,EAAGA,EAAI,IAAKA,IACvBI,EAAOJ,GAAKw3D,EAAKx3D,GAAK,IAExB,MAAMy3D,EAAQr3D,EAAOxH,KAAK,KAC1B,MAAO,CAAC6+D,EAAOA,EAAOA,EACxB,CACA,MAAOD,EAAME,EAAMC,GAAQlB,EACrBmB,EAAU,IAAI7uD,MAAM,KACpB8uD,EAAU,IAAI9uD,MAAM,KACpB+uD,EAAU,IAAI/uD,MAAM,KAC1B,IAAK,IAAI/I,EAAI,EAAGA,EAAI,IAAKA,IACvB43D,EAAQ53D,GAAKw3D,EAAKx3D,GAAK,IACvB63D,EAAQ73D,GAAK03D,EAAK13D,GAAK,IACvB83D,EAAQ93D,GAAK23D,EAAK33D,GAAK,IAEzB,MAAO,CAAC43D,EAAQh/D,KAAK,KAAMi/D,EAAQj/D,KAAK,KAAMk/D,EAAQl/D,KAAK,KAC7D,CACA,IAAW6Q,GACT,QAAsB9P,IAAlBM,MAAK,GAAwB,CAC/BA,MAAK,GAAW,GAChB,MAAM2b,EAAM3b,MAAK,GAAUyb,IACvBE,IAAQ3b,MAAK,GAAUi/B,UACrB8C,GAAapmB,GACf4Y,EAAK,2DAELv0B,MAAK,GAAWs1B,EAAc3Z,EAAK,IAGzC,CACA,MAAO,OAAO3b,MAAK,MAAYwP,IACjC,CACA,SAAA+sD,CAAUC,GACR,IAAKA,EACH,MAAO,OAET,IAAI39D,EAAQmB,MAAK,EAAO7B,IAAIq+D,GAC5B,GAAI39D,EACF,OAAOA,EAET,MAAOi/D,EAAQC,EAAQC,GAAUh+D,MAAK,GAAcw8D,GAC9C9zD,EAAsB,IAAhB8zD,EAAKh/D,OAAesgE,EAAS,GAAGA,IAASC,IAASC,IAE9D,GADAn/D,EAAQmB,MAAK,EAAO7B,IAAIuK,GACpB7J,EAEF,OADAmB,MAAK,EAAO0E,IAAI83D,EAAM39D,GACfA,EAET,MAAM2Q,EAAK,KAAKxP,MAAK,mBAAuBA,MAAK,MAC3C2b,EAAM3b,MAAK,GAAWwP,GAC5BxP,MAAK,EAAO0E,IAAI83D,EAAM7gD,GACtB3b,MAAK,EAAO0E,IAAIgE,EAAKiT,GACrB,MAAMlQ,EAASzL,MAAK,GAAcwP,GAElC,OADAxP,MAAK,GAA0B89D,EAAQC,EAAQC,EAAQvyD,GAChDkQ,CACT,CACA,YAAAm4B,CAAa2oB,EAASC,GACpB,MAAMh0D,EAAM,GAAG+zD,KAAWC,IACpBI,EAAa,OACnB,IAAI3oC,EAAOn0B,MAAK,GAAU7B,IAAI2+D,GAC9B,GAAI3oC,GAAMzrB,MAAQA,EAChB,OAAOyrB,EAAKxY,IAed,GAbIwY,GACFA,EAAK1oB,QAAQwE,SACbkkB,EAAKzrB,IAAMA,EACXyrB,EAAKxY,IAAM,OACXwY,EAAK1oB,OAAS,OAEd0oB,EAAO,CACLzrB,MACAiT,IAAK,OACLlQ,OAAQ,MAEVzL,MAAK,GAAU0E,IAAIo4D,EAAY3oC,KAE5BsoC,IAAYC,EACf,OAAOvoC,EAAKxY,IAEd,MAAMsiD,EAAQj+D,MAAK,GAAQy8D,GAC3BA,EAAUrkC,GAAKC,gBAAgB4lC,GAC/B,MAAMC,EAAQl+D,MAAK,GAAQ08D,GAG3B,GAFAA,EAAUtkC,GAAKC,gBAAgB6lC,GAC/Bl+D,MAAK,GAAM8K,MAAMi6B,MAAQ,GACT,YAAZ03B,GAAqC,YAAZC,GAAyBD,IAAYC,EAChE,OAAOvoC,EAAKxY,IAEd,MAAMxT,EAAM,IAAI2G,MAAM,KACtB,IAAK,IAAI/I,EAAI,EAAGA,GAAK,IAAKA,IAAK,CAC7B,MAAM7C,EAAI6C,EAAI,IACdoC,EAAIpC,GAAK7C,GAAK,OAAUA,EAAI,QAAUA,EAAI,MAAS,QAAU,GAC/D,CACA,MAAMs6D,EAAQr1D,EAAIxJ,KAAK,KACjB6Q,EAAK,KAAKxP,MAAK,gBACfyL,EAAS0oB,EAAK1oB,OAASzL,MAAK,GAAcwP,GAChDxP,MAAK,GAA0Bw9D,EAAOA,EAAOA,EAAO/xD,GACpDzL,MAAK,GAAmByL,GACxB,MAAM0yD,EAAW,CAACpmD,EAAG5U,KACnB,MAAMqgB,EAAQy6C,EAAMlmD,GAAK,IACnBwJ,EAAM28C,EAAMnmD,GAAK,IACjB8lB,EAAM,IAAI/uB,MAAM3L,EAAI,GAC1B,IAAK,IAAI4C,EAAI,EAAGA,GAAK5C,EAAG4C,IACtB83B,EAAI93B,GAAKyd,EAAQzd,EAAI5C,GAAKoe,EAAMiC,GAElC,OAAOqa,EAAIl/B,KAAK,IAAI,EAItB,OAFAqB,MAAK,GAA0Bm+D,EAAS,EAAG,GAAIA,EAAS,EAAG,GAAIA,EAAS,EAAG,GAAI1yD,GAC/E0oB,EAAKxY,IAAM3b,MAAK,GAAWwP,GACpB2kB,EAAKxY,GACd,CACA,cAAAghD,CAAex0D,GACb,IAAItJ,EAAQmB,MAAK,EAAO7B,IAAIgK,GAC5B,GAAItJ,EACF,OAAOA,EAET,MAAOu/D,GAAUp+D,MAAK,GAAc,CAACmI,IAC/BO,EAAM,SAAS01D,IAErB,GADAv/D,EAAQmB,MAAK,EAAO7B,IAAIuK,GACpB7J,EAEF,OADAmB,MAAK,EAAO0E,IAAIyD,EAAKtJ,GACdA,EAET,MAAM2Q,EAAK,KAAKxP,MAAK,gBAAoBA,MAAK,MACxC2b,EAAM3b,MAAK,GAAWwP,GAC5BxP,MAAK,EAAO0E,IAAIyD,EAAKwT,GACrB3b,MAAK,EAAO0E,IAAIgE,EAAKiT,GACrB,MAAMlQ,EAASzL,MAAK,GAAcwP,GAElC,OADAxP,MAAK,GAA+Bo+D,EAAQ3yD,GACrCkQ,CACT,CACA,mBAAAihD,CAAoBz0D,GAClB,IAIIi2D,EAAQ11D,EAJR7J,EAAQmB,MAAK,EAAO7B,IAAIgK,GAAO,cACnC,GAAItJ,EACF,OAAOA,EAUT,GAPIsJ,IACDi2D,GAAUp+D,MAAK,GAAc,CAACmI,IAC/BO,EAAM,cAAc01D,KAEpB11D,EAAM,aAER7J,EAAQmB,MAAK,EAAO7B,IAAIuK,GACpB7J,EAEF,OADAmB,MAAK,EAAO0E,IAAIyD,EAAKtJ,GACdA,EAET,MAAM2Q,EAAK,KAAKxP,MAAK,qBAAyBA,MAAK,MAC7C2b,EAAM3b,MAAK,GAAWwP,GAC5BxP,MAAK,EAAO0E,IAAIyD,EAAKwT,GACrB3b,MAAK,EAAO0E,IAAIgE,EAAKiT,GACrB,MAAMlQ,EAASzL,MAAK,GAAcwP,GAKlC,OAJAxP,MAAK,GAAyByL,GAC1BtD,GACFnI,MAAK,GAA+Bo+D,EAAQ3yD,GAEvCkQ,CACT,CACA,qBAAAkhD,CAAsBC,EAAYL,EAASC,EAASK,EAAYC,GAC9D,MAAMt0D,EAAM,GAAG+zD,KAAWC,KAAWK,KAAcC,IACnD,IAAI7oC,EAAOn0B,MAAK,GAAU7B,IAAI2+D,GAC9B,GAAI3oC,GAAMzrB,MAAQA,EAChB,OAAOyrB,EAAKxY,IAed,GAbIwY,GACFA,EAAK1oB,QAAQwE,SACbkkB,EAAKzrB,IAAMA,EACXyrB,EAAKxY,IAAM,OACXwY,EAAK1oB,OAAS,OAEd0oB,EAAO,CACLzrB,MACAiT,IAAK,OACLlQ,OAAQ,MAEVzL,MAAK,GAAU0E,IAAIo4D,EAAY3oC,KAE5BsoC,IAAYC,EACf,OAAOvoC,EAAKxY,IAEd,MAAOsiD,EAAOC,GAAS,CAACzB,EAASC,GAASv0D,IAAInI,MAAK,GAAQsC,KAAKtC,OAChE,IAAIq+D,EAASt7D,KAAKsnD,MAAM,MAAS4T,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,IAC3EK,EAASv7D,KAAKsnD,MAAM,MAAS6T,EAAM,GAAK,MAASA,EAAM,GAAK,MAASA,EAAM,KAC1EK,EAAUC,GAAY,CAACzB,EAAYC,GAAY70D,IAAInI,MAAK,GAAQsC,KAAKtC,OACtEs+D,EAASD,KACVA,EAAQC,EAAQC,EAAUC,GAAY,CAACF,EAAQD,EAAQG,EAAUD,IAEpEv+D,MAAK,GAAM8K,MAAMi6B,MAAQ,GACzB,MAAMo5B,EAAW,CAACM,EAAIC,EAAIv7D,KACxB,MAAM06B,EAAM,IAAI/uB,MAAM,KAChBnO,GAAQ29D,EAASD,GAAUl7D,EAC3Bw7D,EAAWF,EAAK,IAChBG,GAAWF,EAAKD,IAAO,IAAMt7D,GACnC,IAAI07D,EAAO,EACX,IAAK,IAAI94D,EAAI,EAAGA,GAAK5C,EAAG4C,IAAK,CAC3B,MAAM8O,EAAI9R,KAAKsnD,MAAMgU,EAASt4D,EAAIpF,GAC5B9B,EAAQ8/D,EAAW54D,EAAI64D,EAC7B,IAAK,IAAI56C,EAAI66C,EAAM76C,GAAKnP,EAAGmP,IACzB6Z,EAAI7Z,GAAKnlB,EAEXggE,EAAOhqD,EAAI,CACb,CACA,IAAK,IAAI9O,EAAI84D,EAAM94D,EAAI,IAAKA,IAC1B83B,EAAI93B,GAAK83B,EAAIghC,EAAO,GAEtB,OAAOhhC,EAAIl/B,KAAK,IAAI,EAEhB6Q,EAAK,KAAKxP,MAAK,UAAc88D,WAC7BrxD,EAAS0oB,EAAK1oB,OAASzL,MAAK,GAAcwP,GAIhD,OAHAxP,MAAK,GAAmByL,GACxBzL,MAAK,GAA0Bm+D,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAIL,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAIL,EAASI,EAAS,GAAIC,EAAS,GAAI,GAAI/yD,GACpJ0oB,EAAKxY,IAAM3b,MAAK,GAAWwP,GACpB2kB,EAAKxY,GACd,CACA,OAAAyuB,CAAQ6yB,GAAU,GACZA,GAAWj9D,MAAK,IAAY6P,OAGhC7P,MAAK,IAAQwhD,WAAWA,WAAWvxC,SACnCjQ,MAAK,GAAS,KACdA,MAAK,IAASwf,QACdxf,MAAK,GAAU,KACfA,MAAK,IAAYwf,QACjBxf,MAAK,GAAa,KAClBA,MAAK,EAAM,EACb,CACA,IAAyByL,GACvB,MAAMqzD,EAAgB9+D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,iBAC7DogC,EAAc94B,aAAa,OAAQ,UACnC84B,EAAc94B,aAAa,SAAU,mDACrCv6B,EAAO6I,OAAOwqD,EAChB,CACA,IAAmBrzD,GACjB,MAAMqzD,EAAgB9+D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,iBAC7DogC,EAAc94B,aAAa,OAAQ,UACnC84B,EAAc94B,aAAa,SAAU,wFACrCv6B,EAAO6I,OAAOwqD,EAChB,CACA,IAActvD,GACZ,MAAM/D,EAASzL,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,UAItD,OAHAjzB,EAAOu6B,aAAa,8BAA+B,QACnDv6B,EAAOu6B,aAAa,KAAMx2B,GAC1BxP,MAAK,GAAMsU,OAAO7I,GACXA,CACT,CACA,IAAcszD,EAAqB/iD,EAAMwhD,GACvC,MAAMwB,EAASh/D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ1iB,GACtDgjD,EAAOh5B,aAAa,OAAQ,YAC5Bg5B,EAAOh5B,aAAa,cAAew3B,GACnCuB,EAAoBzqD,OAAO0qD,EAC7B,CACA,IAA0BC,EAAQC,EAAQC,EAAQ1zD,GAChD,MAAMszD,EAAsB/+D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,uBACnEjzB,EAAO6I,OAAOyqD,GACd/+D,MAAK,GAAc++D,EAAqB,UAAWE,GACnDj/D,MAAK,GAAc++D,EAAqB,UAAWG,GACnDl/D,MAAK,GAAc++D,EAAqB,UAAWI,EACrD,CACA,IAA+BC,EAAQ3zD,GACrC,MAAMszD,EAAsB/+D,MAAK,GAAUs9D,gBAAgB5+B,GAAQ,uBACnEjzB,EAAO6I,OAAOyqD,GACd/+D,MAAK,GAAc++D,EAAqB,UAAWK,EACrD,CACA,IAAQr6B,GAEN,OADA/kC,MAAK,GAAM8K,MAAMi6B,MAAQA,EAClBD,GAAO2K,iBAAiBzvC,MAAK,IAAO0mD,iBAAiB,SAC9D,EAaF,MAAM2Y,GACJ,WAAA9/D,EAAY,QACVq1B,EAAU,OAEV50B,KAAK40B,QAAUA,CACjB,CACA,WAAMuK,EAAM,SACViD,IAEA,IAAKpiC,KAAK40B,QACR,MAAM,IAAIve,MAAM,oEAElB,IAAK+rB,EACH,MAAM,IAAI/rB,MAAM,oCAElB,MAAMsF,EAAM,GAAG3b,KAAK40B,UAAUwN,IAC9B,OAAOpiC,KAAKk8D,OAAOvgD,GAAKygD,OAAM59B,IAC5B,MAAM,IAAInoB,MAAM,gCAAgCsF,IAAM,GAE1D,CACA,YAAMugD,CAAOvgD,GACX6Y,EAAY,mCACd,EAEF,MAAM8qC,WAAmCD,GACvC,YAAMnD,CAAOvgD,GACX,MAAMrO,QAAayxB,GAAUpjB,EAAK,eAClC,OAAO,IAAIjV,WAAW4G,EACxB,EAaF,MAAMiyD,GACJ,WAAAhgE,EAAY,QACVq1B,EAAU,OAEV50B,KAAK40B,QAAUA,CACjB,CACA,WAAMuK,EAAM,SACViD,IAEA,IAAKpiC,KAAK40B,QACR,MAAM,IAAIve,MAAM,wDAElB,IAAK+rB,EACH,MAAM,IAAI/rB,MAAM,oCAElB,MAAMsF,EAAM,GAAG3b,KAAK40B,UAAUwN,IAC9B,OAAOpiC,KAAKk8D,OAAOvgD,GAAKygD,OAAM59B,IAC5B,MAAM,IAAInoB,MAAM,gCAAgCsF,IAAM,GAE1D,CACA,YAAMugD,CAAOvgD,GACX6Y,EAAY,mCACd,EAEF,MAAMgrC,WAAuBD,GAC3B,YAAMrD,CAAOvgD,GACX,MAAMrO,QAAayxB,GAAUpjB,EAAK,eAClC,OAAO,IAAIjV,WAAW4G,EACxB,EAiBF,GAAI4b,EAAU,CACZ,IAAI+jB,EACJ,IACE,MAAMwyB,EAAUvtD,QAAQ0U,iBAAiB,UAAU84C,cAAc,mHACjE,IACEzyB,EAASwyB,EAAQ,kBACnB,CAAE,MAAO3mB,GACPvkB,EAAK,2CAA2CukB,MAClD,CACF,CAAE,MAAOA,GACPvkB,EAAK,4CAA4CukB,MACnD,CACKj0C,WAAW86D,YACV1yB,GAAQ0yB,UACV96D,WAAW86D,UAAY1yB,EAAO0yB,UAE9BprC,EAAK,0DAGJ1vB,WAAW+6D,YACV3yB,GAAQ2yB,UACV/6D,WAAW+6D,UAAY3yB,EAAO2yB,UAE9BrrC,EAAK,0DAGJ1vB,WAAWyyD,SACVrqB,GAAQqqB,OACVzyD,WAAWyyD,OAASrqB,EAAOqqB,OAE3B/iC,EAAK,uDAGJ1vB,WAAW0J,WAAWsxD,WACzBh7D,WAAW0J,UAAY,CACrBsxD,SAAU,QACVpoC,SAAU,GACVjpB,UAAW,IAGjB,CACAswB,eAAeghC,GAAqBnkD,GAClC,MAAMokD,EAAK7tD,QAAQ0U,iBAAiB,MAC9BtZ,QAAayyD,EAAGzkB,SAAS0kB,SAASrkD,GACxC,OAAO,IAAIjV,WAAW4G,EACxB,CACA,MAAM2yD,WAA0B3D,IAChC,MAAM4D,WAA0BxE,GAC9B,aAAAE,CAAc56B,EAAOC,GAGnB,OAFgB/uB,QAAQ0U,iBAAiB,UAAU84C,cAAc,kHAClDD,CAAQ,mBACTU,aAAan/B,EAAOC,EACpC,EAEF,MAAMm/B,WAA8BpE,GAClC,YAAME,CAAOvgD,GACX,OAAOmkD,GAAqBnkD,EAC9B,EAEF,MAAM0kD,WAAoChB,GACxC,YAAMnD,CAAOvgD,GACX,OAAOmkD,GAAqBnkD,EAC9B,EAEF,MAAM2kD,WAAwBf,GAC5B,YAAMrD,CAAOvgD,GACX,OAAOmkD,GAAqBnkD,EAC9B,EASF,MAAM4kD,GACE,OADFA,GAEI,SAFJA,GAGK,UAEX,SAASC,GAAiBt7B,EAAKu7B,GAC7B,IAAKA,EACH,OAEF,MAAMz/B,EAAQy/B,EAAK,GAAKA,EAAK,GACvBx/B,EAASw/B,EAAK,GAAKA,EAAK,GACxBC,EAAS,IAAIpJ,OACnBoJ,EAAO/mC,KAAK8mC,EAAK,GAAIA,EAAK,GAAIz/B,EAAOC,GACrCiE,EAAIvV,KAAK+wC,EACX,CACA,MAAMC,GACJ,2BAAAC,GACE,OAAO,CACT,CACA,UAAAC,GACErsC,EAAY,uCACd,EAEF,MAAMssC,WAAkCH,GACtC,WAAAphE,CAAYwhE,GACVhrC,QACA/1B,KAAKulD,MAAQwb,EAAG,GAChB/gE,KAAKghE,MAAQD,EAAG,GAChB/gE,KAAKihE,YAAcF,EAAG,GACtB/gE,KAAKkhE,IAAMH,EAAG,GACd/gE,KAAKmhE,IAAMJ,EAAG,GACd/gE,KAAKohE,IAAML,EAAG,GACd/gE,KAAKqhE,IAAMN,EAAG,GACd/gE,KAAK+6B,OAAS,IAChB,CACA,eAAAumC,CAAgBp8B,GACd,IAAIq8B,EACe,UAAfvhE,KAAKulD,MACPgc,EAAOr8B,EAAIs8B,qBAAqBxhE,KAAKkhE,IAAI,GAAIlhE,KAAKkhE,IAAI,GAAIlhE,KAAKmhE,IAAI,GAAInhE,KAAKmhE,IAAI,IACxD,WAAfnhE,KAAKulD,QACdgc,EAAOr8B,EAAIu8B,qBAAqBzhE,KAAKkhE,IAAI,GAAIlhE,KAAKkhE,IAAI,GAAIlhE,KAAKohE,IAAKphE,KAAKmhE,IAAI,GAAInhE,KAAKmhE,IAAI,GAAInhE,KAAKqhE,MAErG,IAAK,MAAMK,KAAa1hE,KAAKihE,YAC3BM,EAAKI,aAAaD,EAAU,GAAIA,EAAU,IAE5C,OAAOH,CACT,CACA,UAAAV,CAAW37B,EAAK08B,EAAO9zD,EAAS+zD,GAC9B,IAAIC,EACJ,GAAID,IAAatB,IAAmBsB,IAAatB,GAAe,CAC9D,MAAMwB,EAAYH,EAAM1rD,QAAQ8rD,0BAA0BH,EAAU58B,GAAoBC,KAAS,CAAC,EAAG,EAAG,EAAG,GACrGlE,EAAQj+B,KAAKD,KAAKi/D,EAAU,GAAKA,EAAU,KAAO,EAClD9gC,EAASl+B,KAAKD,KAAKi/D,EAAU,GAAKA,EAAU,KAAO,EACnDE,EAAYL,EAAMM,eAAeC,UAAU,UAAWnhC,EAAOC,GAC7DmhC,EAASH,EAAUp/C,QACzBu/C,EAAOC,UAAU,EAAG,EAAGD,EAAOn1B,OAAOjM,MAAOohC,EAAOn1B,OAAOhM,QAC1DmhC,EAAOE,YACPF,EAAOzoC,KAAK,EAAG,EAAGyoC,EAAOn1B,OAAOjM,MAAOohC,EAAOn1B,OAAOhM,QACrDmhC,EAAOna,WAAW8Z,EAAU,IAAKA,EAAU,IAC3Cj0D,EAAUsqB,GAAK1J,UAAU5gB,EAAS,CAAC,EAAG,EAAG,EAAG,EAAGi0D,EAAU,GAAIA,EAAU,KACvEK,EAAO1zC,aAAakzC,EAAMW,eACtBviE,KAAK+6B,QACPqnC,EAAO1zC,aAAa1uB,KAAK+6B,QAE3BylC,GAAiB4B,EAAQpiE,KAAKghE,OAC9BoB,EAAOI,UAAYxiE,KAAKshE,gBAAgBc,GACxCA,EAAOhzC,OACP0yC,EAAU58B,EAAIu9B,cAAcR,EAAUh1B,OAAQ,aAC9C,MAAMy1B,EAAY,IAAI/C,UAAU7xD,GAChCg0D,EAAQa,aAAaD,EACvB,MACElC,GAAiBt7B,EAAKllC,KAAKghE,OAC3Bc,EAAU9hE,KAAKshE,gBAAgBp8B,GAEjC,OAAO48B,CACT,EAEF,SAASc,GAAat1D,EAAMuV,EAASmW,EAAIoE,EAAIylC,EAAIC,EAAIC,EAAIC,GACvD,MAAMC,EAASpgD,EAAQogD,OACrB7zB,EAASvsB,EAAQusB,OACb/lC,EAAQiE,EAAKA,KACjB41D,EAAuB,EAAb51D,EAAK0zB,MACjB,IAAImiC,EACAF,EAAOjqC,EAAK,GAAKiqC,EAAO7lC,EAAK,KAC/B+lC,EAAMnqC,EACNA,EAAKoE,EACLA,EAAK+lC,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEHF,EAAO7lC,EAAK,GAAK6lC,EAAOJ,EAAK,KAC/BM,EAAM/lC,EACNA,EAAKylC,EACLA,EAAKM,EACLA,EAAMJ,EACNA,EAAKC,EACLA,EAAKG,GAEHF,EAAOjqC,EAAK,GAAKiqC,EAAO7lC,EAAK,KAC/B+lC,EAAMnqC,EACNA,EAAKoE,EACLA,EAAK+lC,EACLA,EAAML,EACNA,EAAKC,EACLA,EAAKI,GAEP,MAAMnnC,GAAMinC,EAAOjqC,GAAMnW,EAAQwd,SAAWxd,EAAQugD,OAC9CnnC,GAAMgnC,EAAOjqC,EAAK,GAAKnW,EAAQyd,SAAWzd,EAAQwgD,OAClDnnC,GAAM+mC,EAAO7lC,GAAMva,EAAQwd,SAAWxd,EAAQugD,OAC9ChnC,GAAM6mC,EAAO7lC,EAAK,GAAKva,EAAQyd,SAAWzd,EAAQwgD,OAClDlnC,GAAM8mC,EAAOJ,GAAMhgD,EAAQwd,SAAWxd,EAAQugD,OAC9C/mC,GAAM4mC,EAAOJ,EAAK,GAAKhgD,EAAQyd,SAAWzd,EAAQwgD,OACxD,GAAIpnC,GAAMI,EACR,OAEF,MAAMinC,EAAMl0B,EAAO0zB,GACjBS,EAAMn0B,EAAO0zB,EAAK,GAClBU,EAAMp0B,EAAO0zB,EAAK,GACdW,EAAMr0B,EAAO2zB,GACjBW,EAAMt0B,EAAO2zB,EAAK,GAClBY,EAAMv0B,EAAO2zB,EAAK,GACda,EAAMx0B,EAAO4zB,GACjBa,EAAMz0B,EAAO4zB,EAAK,GAClBc,EAAM10B,EAAO4zB,EAAK,GACde,EAAOhhE,KAAKsnD,MAAMpuB,GACtB+nC,EAAOjhE,KAAKsnD,MAAMhuB,GACpB,IAAI4nC,EAAIC,EAAKC,EAAKC,EACdC,EAAIC,EAAKC,EAAKC,EAClB,IAAK,IAAI5oC,EAAImoC,EAAMnoC,GAAKooC,EAAMpoC,IAAK,CACjC,GAAIA,EAAIQ,EAAI,CACV,MAAMvnB,EAAI+mB,EAAIK,EAAK,GAAKA,EAAKL,IAAMK,EAAKG,GACxC6nC,EAAKjoC,GAAMA,EAAKE,GAAMrnB,EACtBqvD,EAAMZ,GAAOA,EAAMG,GAAO5uD,EAC1BsvD,EAAMZ,GAAOA,EAAMG,GAAO7uD,EAC1BuvD,EAAMZ,GAAOA,EAAMG,GAAO9uD,CAC5B,KAAO,CACL,IAAIA,EAEFA,EADE+mB,EAAIS,EACF,EACKD,IAAOC,EACZ,GAECD,EAAKR,IAAMQ,EAAKC,GAEvB4nC,EAAK/nC,GAAMA,EAAKC,GAAMtnB,EACtBqvD,EAAMT,GAAOA,EAAMG,GAAO/uD,EAC1BsvD,EAAMT,GAAOA,EAAMG,GAAOhvD,EAC1BuvD,EAAMT,GAAOA,EAAMG,GAAOjvD,CAC5B,CACA,IAAIA,EAEFA,EADE+mB,EAAIK,EACF,EACKL,EAAIS,EACT,GAECJ,EAAKL,IAAMK,EAAKI,GAEvBgoC,EAAKroC,GAAMA,EAAKG,GAAMtnB,EACtByvD,EAAMhB,GAAOA,EAAMM,GAAO/uD,EAC1B0vD,EAAMhB,GAAOA,EAAMM,GAAOhvD,EAC1B2vD,EAAMhB,GAAOA,EAAMM,GAAOjvD,EAC1B,MAAM4vD,EAAM1hE,KAAKsnD,MAAMtnD,KAAKiG,IAAIi7D,EAAII,IAC9BK,EAAM3hE,KAAKsnD,MAAMtnD,KAAKkO,IAAIgzD,EAAII,IACpC,IAAIrgD,EAAIk/C,EAAUtnC,EAAU,EAAN6oC,EACtB,IAAK,IAAIvhE,EAAIuhE,EAAKvhE,GAAKwhE,EAAKxhE,IAC1B2R,GAAKovD,EAAK/gE,IAAM+gE,EAAKI,GACjBxvD,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAENxL,EAAM2a,KAAOkgD,GAAOA,EAAMI,GAAOzvD,EAAI,EACrCxL,EAAM2a,KAAOmgD,GAAOA,EAAMI,GAAO1vD,EAAI,EACrCxL,EAAM2a,KAAOogD,GAAOA,EAAMI,GAAO3vD,EAAI,EACrCxL,EAAM2a,KAAO,GAEjB,CACF,CACA,SAAS2gD,GAAWr3D,EAAMs3D,EAAQ/hD,GAChC,MAAMgiD,EAAKD,EAAO3B,OACZ6B,EAAKF,EAAOx1B,OAClB,IAAIrpC,EAAGi8B,EACP,OAAQ4iC,EAAOj/D,MACb,IAAK,UACH,MAAMo/D,EAAiBH,EAAOG,eACxBC,EAAOjiE,KAAKC,MAAM6hE,EAAGrnE,OAASunE,GAAkB,EAChDE,EAAOF,EAAiB,EAC9B,IAAKh/D,EAAI,EAAGA,EAAIi/D,EAAMj/D,IAAK,CACzB,IAAIm/D,EAAIn/D,EAAIg/D,EACZ,IAAK,IAAI/gD,EAAI,EAAGA,EAAIihD,EAAMjhD,IAAKkhD,IAC7BtC,GAAat1D,EAAMuV,EAASgiD,EAAGK,GAAIL,EAAGK,EAAI,GAAIL,EAAGK,EAAIH,GAAiBD,EAAGI,GAAIJ,EAAGI,EAAI,GAAIJ,EAAGI,EAAIH,IAC/FnC,GAAat1D,EAAMuV,EAASgiD,EAAGK,EAAIH,EAAiB,GAAIF,EAAGK,EAAI,GAAIL,EAAGK,EAAIH,GAAiBD,EAAGI,EAAIH,EAAiB,GAAID,EAAGI,EAAI,GAAIJ,EAAGI,EAAIH,GAE7I,CACA,MACF,IAAK,YACH,IAAKh/D,EAAI,EAAGi8B,EAAK6iC,EAAGrnE,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EACvC68D,GAAat1D,EAAMuV,EAASgiD,EAAG9+D,GAAI8+D,EAAG9+D,EAAI,GAAI8+D,EAAG9+D,EAAI,GAAI++D,EAAG/+D,GAAI++D,EAAG/+D,EAAI,GAAI++D,EAAG/+D,EAAI,IAEpF,MACF,QACE,MAAM,IAAIsQ,MAAM,kBAEtB,CACA,MAAM8uD,WAA2BxE,GAC/B,WAAAphE,CAAYwhE,GACVhrC,QACA/1B,KAAKolE,QAAUrE,EAAG,GAClB/gE,KAAKmvC,QAAU4xB,EAAG,GAClB/gE,KAAKqlE,SAAWtE,EAAG,GACnB/gE,KAAKslE,QAAUvE,EAAG,GAClB/gE,KAAKghE,MAAQD,EAAG,GAChB/gE,KAAKulE,YAAcxE,EAAG,GACtB/gE,KAAK+6B,OAAS,IAChB,CACA,iBAAAyqC,CAAkBC,EAAeC,EAAiBxD,GAChD,MAGM7hC,EAAUt9B,KAAKC,MAAMhD,KAAKslE,QAAQ,IAClChlC,EAAUv9B,KAAKC,MAAMhD,KAAKslE,QAAQ,IAClCK,EAAc5iE,KAAKD,KAAK9C,KAAKslE,QAAQ,IAAMjlC,EAC3CulC,EAAe7iE,KAAKD,KAAK9C,KAAKslE,QAAQ,IAAMhlC,EAC5CU,EAAQj+B,KAAKiG,IAAIjG,KAAKD,KAAKC,KAAK25B,IAAIipC,EAAcF,EAAc,GAP/C,MACE,KAOnBxkC,EAASl+B,KAAKiG,IAAIjG,KAAKD,KAAKC,KAAK25B,IAAIkpC,EAAeH,EAAc,GARjD,MACE,KAQnBrC,EAASuC,EAAc3kC,EACvBqiC,EAASuC,EAAe3kC,EACxBpe,EAAU,CACdogD,OAAQjjE,KAAKolE,QACbh2B,OAAQpvC,KAAKmvC,QACb9O,SAAUA,EACVC,SAAUA,EACV8iC,OAAQ,EAAIA,EACZC,OAAQ,EAAIA,GAERwC,EAAc7kC,EAAQ8kC,EACtBC,EAAe9kC,EAAS6kC,EACxB7D,EAAYC,EAAeC,UAAU,OAAQ0D,EAAaE,GAC1D3D,EAASH,EAAUp/C,QACnBvV,EAAO80D,EAAO4D,gBAAgBhlC,EAAOC,GAC3C,GAAIykC,EAAiB,CACnB,MAAMr8D,EAAQiE,EAAKA,KACnB,IAAK,IAAIvH,EAAI,EAAGi8B,EAAK34B,EAAM7L,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC9CsD,EAAMtD,GAAK2/D,EAAgB,GAC3Br8D,EAAMtD,EAAI,GAAK2/D,EAAgB,GAC/Br8D,EAAMtD,EAAI,GAAK2/D,EAAgB,GAC/Br8D,EAAMtD,EAAI,GAAK,GAEnB,CACA,IAAK,MAAM6+D,KAAU5kE,KAAKqlE,SACxBV,GAAWr3D,EAAMs3D,EAAQ/hD,GAE3Bu/C,EAAO6D,aAAa34D,EAlCA,KAoCpB,MAAO,CACL2/B,OAFag1B,EAAUh1B,OAGvB5M,QAASA,EAtCS,EAsCe+iC,EACjC9iC,QAASA,EAvCS,EAuCe+iC,EACjCD,SACAC,SAEJ,CACA,2BAAAzC,GACE,OAAO,CACT,CACA,UAAAC,CAAW37B,EAAK08B,EAAO9zD,EAAS+zD,GAC9BrB,GAAiBt7B,EAAKllC,KAAKghE,OAC3B,MAAM7gC,EAAQ,IAAI+lC,aAAa,GAC/B,GAAIrE,IAAatB,GACfnoC,GAAK0C,8BAA8BmK,GAAoBC,GAAM/E,QACxD,GAAIngC,KAAK+6B,OAAQ,CACtB3C,GAAK0C,8BAA8B96B,KAAK+6B,OAAQoF,GAChD,MAAOgmC,EAAcC,GAAgBjmC,EACrC/H,GAAK0C,8BAA8B8mC,EAAMW,cAAepiC,GACxDA,EAAM,IAAMgmC,EACZhmC,EAAM,IAAMimC,CACd,MACEhuC,GAAK0C,8BAA8B8mC,EAAMW,cAAepiC,GAE1D,MAAMkmC,EAAyBrmE,KAAKwlE,kBAAkBrlC,EAAO0hC,IAAatB,GAAmB,KAAOvgE,KAAKulE,YAAa3D,EAAMM,gBAS5H,OARIL,IAAatB,KACfr7B,EAAIy9B,gBAAgBf,EAAMW,eACtBviE,KAAK+6B,QACPmK,EAAIxW,aAAa1uB,KAAK+6B,SAG1BmK,EAAI+iB,UAAUoe,EAAuBhmC,QAASgmC,EAAuB/lC,SACrE4E,EAAI/E,MAAMkmC,EAAuBjD,OAAQiD,EAAuBhD,QACzDn+B,EAAIu9B,cAAc4D,EAAuBp5B,OAAQ,YAC1D,EAEF,MAAMq5B,WAA4B3F,GAChC,UAAAE,GACE,MAAO,SACT,EAaF,MAAM0F,GACK,EADLA,GAEO,EAEb,MAAMC,GACJ5nC,wBAA0B,IAC1B,WAAAr/B,CAAYwhE,EAAI77B,EAAKuhC,EAAuBlE,GAC1CviE,KAAK+kC,MAAQg8B,EAAG,GAChB/gE,KAAK0mE,aAAe3F,EAAG,GACvB/gE,KAAK+6B,OAASgmC,EAAG,GACjB/gE,KAAKygE,KAAOM,EAAG,GACf/gE,KAAK2mE,MAAQ5F,EAAG,GAChB/gE,KAAK4mE,MAAQ7F,EAAG,GAChB/gE,KAAK6mE,UAAY9F,EAAG,GACpB/gE,KAAK8mE,WAAa/F,EAAG,GACrB/gE,KAAKklC,IAAMA,EACXllC,KAAKymE,sBAAwBA,EAC7BzmE,KAAKuiE,cAAgBA,CACvB,CACA,mBAAAwE,CAAoBnF,GAClB,MAAM,KACJnB,EAAI,aACJiG,EAAY,UACZG,EAAS,WACTC,EAAU,MACV/hC,EAAK,sBACL0hC,GACEzmE,KACJ,IAAI,MACF2mE,EAAK,MACLC,GACE5mE,KACJ2mE,EAAQ5jE,KAAK25B,IAAIiqC,GACjBC,EAAQ7jE,KAAK25B,IAAIkqC,GACjBzyC,EAAK,eAAiB2yC,GACtB,MAAMhrC,EAAK2kC,EAAK,GACd1kC,EAAK0kC,EAAK,GACVzkC,EAAKykC,EAAK,GACVxkC,EAAKwkC,EAAK,GACNz/B,EAAQhF,EAAKF,EACbmF,EAAShF,EAAKF,EACdoE,EAAQ,IAAI+lC,aAAa,GAC/B9tC,GAAK0C,8BAA8B96B,KAAK+6B,OAAQoF,GAChD,MAAOgmC,EAAcC,GAAgBjmC,EACrC/H,GAAK0C,8BAA8B96B,KAAKuiE,cAAepiC,GACvD,MAAM6mC,EAAiBb,EAAehmC,EAAM,GACtC8mC,EAAiBb,EAAejmC,EAAM,GAC5C,IAAI+mC,EAAclmC,EAChBmmC,EAAelmC,EACfmmC,GAAqB,EACrBC,GAAmB,EACrB,MAAMC,EAAcvkE,KAAKD,KAAK6jE,EAAQK,GAChCO,EAAcxkE,KAAKD,KAAK8jE,EAAQK,GAGlCK,GAFiBvkE,KAAKD,KAAKk+B,EAAQgmC,GAGrCE,EAAcP,EAEdS,GAAqB,EAEnBG,GANkBxkE,KAAKD,KAAKm+B,EAASgmC,GAOvCE,EAAeP,EAEfS,GAAmB,EAErB,MAAMG,EAAOxnE,KAAKynE,gBAAgBP,EAAalnE,KAAKklC,IAAI+H,OAAOjM,MAAOgmC,GAChEU,EAAO1nE,KAAKynE,gBAAgBN,EAAcnnE,KAAKklC,IAAI+H,OAAOhM,OAAQgmC,GAClEhF,EAAYL,EAAMM,eAAeC,UAAU,UAAWqF,EAAK33D,KAAM63D,EAAK73D,MACtEuyD,EAASH,EAAUp/C,QACnB8kD,EAAWlB,EAAsBmB,qBAAqBxF,GAW5D,GAVAuF,EAASE,WAAajG,EAAMiG,WAC5B7nE,KAAK8nE,+BAA+BH,EAAUd,EAAW9hC,GACzDq9B,EAAOna,WAAWuf,EAAKrnC,MAAQrE,GAAK4rC,EAAKvnC,MAAQpE,GACjD4rC,EAASj5C,UAAU84C,EAAKrnC,MAAO,EAAG,EAAGunC,EAAKvnC,MAAO,EAAG,GACpDiiC,EAAO5zC,OACPxuB,KAAK+nE,SAASJ,EAAU7rC,EAAIC,EAAIC,EAAIC,GACpC0rC,EAASpF,cAAgBt9B,GAAoB0iC,EAASziC,KACtDyiC,EAASK,oBAAoBtB,GAC7BiB,EAASM,aACT7F,EAAO3zC,UACH24C,GAAsBC,EAAkB,CAC1C,MAAMh8B,EAAQ42B,EAAUh1B,OACpBm6B,IACFF,EAAcP,GAEZU,IACFF,EAAeP,GAEjB,MAAMsB,EAAQloE,KAAKynE,gBAAgBP,EAAalnE,KAAKklC,IAAI+H,OAAOjM,MAAOgmC,GACjEmB,EAAQnoE,KAAKynE,gBAAgBN,EAAcnnE,KAAKklC,IAAI+H,OAAOhM,OAAQgmC,GACnEmB,EAAQF,EAAMr4D,KACdw4D,EAAQF,EAAMt4D,KACdy4D,EAAa1G,EAAMM,eAAeC,UAAU,qBAAsBiG,EAAOC,GACzEE,EAAUD,EAAWzlD,QACrBmf,EAAKolC,EAAqBrkE,KAAKC,MAAMg+B,EAAQ2lC,GAAS,EACtD6B,EAAKnB,EAAmBtkE,KAAKC,MAAMi+B,EAAS2lC,GAAS,EAC3D,IAAK,IAAI7gE,EAAI,EAAGA,GAAKi8B,EAAIj8B,IACvB,IAAK,IAAIie,EAAI,EAAGA,GAAKwkD,EAAIxkD,IACvBukD,EAAQ/8B,UAAUH,EAAO+8B,EAAQriE,EAAGsiE,EAAQrkD,EAAGokD,EAAOC,EAAO,EAAG,EAAGD,EAAOC,GAG9E,MAAO,CACLp7B,OAAQq7B,EAAWr7B,OACnBm2B,OAAQ8E,EAAM/nC,MACdkjC,OAAQ8E,EAAMhoC,MACdE,QAASvE,EACTwE,QAASvE,EAEb,CACA,MAAO,CACLkR,OAAQg1B,EAAUh1B,OAClBm2B,OAAQoE,EAAKrnC,MACbkjC,OAAQqE,EAAKvnC,MACbE,QAASvE,EACTwE,QAASvE,EAEb,CACA,eAAA0rC,CAAgB9mE,EAAM8nE,EAAgBtoC,GACpC,MAAMuN,EAAU3qC,KAAKkO,IAAIu1D,GAAckC,iBAAkBD,GACzD,IAAI54D,EAAO9M,KAAKD,KAAKnC,EAAOw/B,GAM5B,OALItwB,GAAQ69B,EACV79B,EAAO69B,EAEPvN,EAAQtwB,EAAOlP,EAEV,CACLw/B,QACAtwB,OAEJ,CACA,QAAAk4D,CAASJ,EAAU7rC,EAAIC,EAAIC,EAAIC,GAC7B,MAAM0sC,EAAY3sC,EAAKF,EACjB8sC,EAAa3sC,EAAKF,EACxB4rC,EAASziC,IAAIvL,KAAKmC,EAAIC,EAAI4sC,EAAWC,GACrCxwC,GAAKsB,wBAAwB,CAACoC,EAAIC,EAAIC,EAAIC,GAAKgJ,GAAoB0iC,EAASziC,KAAMyiC,EAASzxD,QAAQuiB,QACnGkvC,EAASh4C,OACTg4C,EAASj4C,SACX,CACA,8BAAAo4C,CAA+BH,EAAUd,EAAW9hC,GAClD,MAAMliB,EAAU8kD,EAASziC,IACvBhvB,EAAUyxD,EAASzxD,QACrB,OAAQ2wD,GACN,KAAKN,GACH,MAAM,UACJ/D,EAAS,YACTqG,GACE7oE,KAAKklC,IACTriB,EAAQ2/C,UAAYtsD,EAAQ4yD,UAAYtG,EACxC3/C,EAAQgmD,YAAc3yD,EAAQ6yD,YAAcF,EAC5C,MACF,KAAKtC,GACH1jD,EAAQ2/C,UAAY3/C,EAAQgmD,YAAc9jC,EAC1C7uB,EAAQ4yD,UAAY5yD,EAAQ6yD,YAAchkC,EAC1C,MACF,QACE,MAAM,IAAIzO,GAAY,2BAA2BuwC,KAEvD,CACA,2BAAAjG,GACE,OAAO,CACT,CACA,UAAAC,CAAW37B,EAAK08B,EAAO9zD,EAAS+zD,GAC9B,IAAI9mC,EAASjtB,EACT+zD,IAAatB,KACfxlC,EAAS3C,GAAK1J,UAAUqM,EAAQ6mC,EAAMW,eAClCviE,KAAK+6B,SACPA,EAAS3C,GAAK1J,UAAUqM,EAAQ/6B,KAAK+6B,UAGzC,MAAMsrC,EAAyBrmE,KAAK+mE,oBAAoBnF,GACxD,IAAIc,EAAY,IAAI/C,UAAU5kC,GAC9B2nC,EAAYA,EAAUza,UAAUoe,EAAuBhmC,QAASgmC,EAAuB/lC,SACvFoiC,EAAYA,EAAUviC,MAAM,EAAIkmC,EAAuBjD,OAAQ,EAAIiD,EAAuBhD,QAC1F,MAAMvB,EAAU58B,EAAIu9B,cAAc4D,EAAuBp5B,OAAQ,UAEjE,OADA60B,EAAQa,aAAaD,GACdZ,CACT,EAiBF,SAASkH,IAA2B,IAClC/9D,EAAG,OACHg+D,EAAS,EAAC,KACVlR,EAAI,MACJ/2B,EAAK,OACLC,EAAM,cACNioC,EAAgB,WAAU,cAC1BC,GAAgB,IAEhB,MAAMC,EAAQpyC,GAAiBC,eAAiB,WAAa,KACtDoyC,EAAaC,GAAcH,EAAgB,CAACD,EAAeE,GAAS,CAACA,EAAOF,GAC7EK,EAAgBvoC,GAAS,EACzBwoC,EAAyB,EAARxoC,EACjByoC,EAAYx+D,EAAIzN,OACtBu6D,EAAO,IAAI5gC,YAAY4gC,EAAK5xD,QAC5B,IAAIujE,EAAU,EACd,IAAK,IAAI3jE,EAAI,EAAGA,EAAIk7B,EAAQl7B,IAAK,CAC/B,IAAK,MAAMkL,EAAMg4D,EAASM,EAAeN,EAASh4D,EAAKg4D,IAAU,CAC/D,MAAMU,EAAOV,EAASQ,EAAYx+D,EAAIg+D,GAAU,IAChDlR,EAAK2R,KAAoB,IAAPC,EAAoBL,EAAaD,EACnDtR,EAAK2R,KAAoB,GAAPC,EAAmBL,EAAaD,EAClDtR,EAAK2R,KAAoB,GAAPC,EAAkBL,EAAaD,EACjDtR,EAAK2R,KAAoB,GAAPC,EAAiBL,EAAaD,EAChDtR,EAAK2R,KAAoB,EAAPC,EAAgBL,EAAaD,EAC/CtR,EAAK2R,KAAoB,EAAPC,EAAeL,EAAaD,EAC9CtR,EAAK2R,KAAoB,EAAPC,EAAcL,EAAaD,EAC7CtR,EAAK2R,KAAoB,EAAPC,EAAaL,EAAaD,CAC9C,CACA,GAAuB,IAAnBG,EACF,SAEF,MAAMG,EAAOV,EAASQ,EAAYx+D,EAAIg+D,KAAY,IAClD,IAAK,IAAIjlD,EAAI,EAAGA,EAAIwlD,EAAgBxlD,IAClC+zC,EAAK2R,KAAaC,EAAO,GAAK,EAAI3lD,EAAIslD,EAAaD,CAEvD,CACA,MAAO,CACLJ,SACAS,UAEJ,CAqEA,MAIME,GAAoB,GACpBC,GAAe,IAAIlK,UACnBmK,GAAK,IAAI5D,aAAa,GACtB6D,GAAe,IAAI7D,aAAa,CAAC1vD,IAAUA,KAAWA,KAAWA,MAmGvE,MAAMwzD,GACJ,WAAAzqE,CAAY0qE,GACVjqE,KAAKiqE,cAAgBA,EACrBjqE,KAAKkqE,MAAQ3rE,OAAO6M,OAAO,KAC7B,CACA,SAAA+2D,CAAU3yD,EAAIwxB,EAAOC,GACnB,IAAIkpC,EAQJ,YAPuBzqE,IAAnBM,KAAKkqE,MAAM16D,IACb26D,EAAcnqE,KAAKkqE,MAAM16D,GACzBxP,KAAKiqE,cAAcpO,MAAMsO,EAAanpC,EAAOC,KAE7CkpC,EAAcnqE,KAAKiqE,cAAc7+D,OAAO41B,EAAOC,GAC/CjhC,KAAKkqE,MAAM16D,GAAM26D,GAEZA,CACT,CACA,OAAO36D,UACExP,KAAKkqE,MAAM16D,EACpB,CACA,KAAAgQ,GACE,IAAK,MAAMhQ,KAAMxP,KAAKkqE,MAAO,CAC3B,MAAMC,EAAcnqE,KAAKkqE,MAAM16D,GAC/BxP,KAAKiqE,cAAc7/B,QAAQ+/B,UACpBnqE,KAAKkqE,MAAM16D,EACpB,CACF,EAEF,SAAS46D,GAAyBllC,EAAKmlC,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,GAC1F,MAAOxvD,EAAGC,EAAGvD,EAAG0hB,EAAGwkB,EAAIC,GAAMjZ,GAAoBC,GACjD,GAAU,IAAN5pB,GAAiB,IAANvD,EAAS,CACtB,MAAM+yD,EAAMJ,EAAQrvD,EAAI4iC,EAClB8sB,EAAOhoE,KAAKsnD,MAAMygB,GAClBE,EAAML,EAAQlxC,EAAIykB,EAClB+sB,EAAOloE,KAAKsnD,MAAM2gB,GAClBE,GAAOR,EAAQE,GAASvvD,EAAI4iC,EAC5BktB,EAASpoE,KAAK25B,IAAI35B,KAAKsnD,MAAM6gB,GAAOH,IAAS,EAC7CK,GAAOT,EAAQE,GAASpxC,EAAIykB,EAC5BmtB,EAAUtoE,KAAK25B,IAAI35B,KAAKsnD,MAAM+gB,GAAOH,IAAS,EAIpD,OAHA/lC,EAAIy9B,aAAa5/D,KAAKuoE,KAAKjwD,GAAI,EAAG,EAAGtY,KAAKuoE,KAAK7xC,GAAIsxC,EAAME,GACzD/lC,EAAIsG,UAAU6+B,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGU,EAAQE,GAC5DnmC,EAAIy9B,aAAatnD,EAAGC,EAAGvD,EAAG0hB,EAAGwkB,EAAIC,GAC1B,CAACitB,EAAQE,EAClB,CACA,GAAU,IAANhwD,GAAiB,IAANoe,EAAS,CACtB,MAAMqxC,EAAMH,EAAQ5yD,EAAIkmC,EAClB8sB,EAAOhoE,KAAKsnD,MAAMygB,GAClBE,EAAMN,EAAQpvD,EAAI4iC,EAClB+sB,EAAOloE,KAAKsnD,MAAM2gB,GAClBE,GAAOP,EAAQE,GAAS9yD,EAAIkmC,EAC5BktB,EAASpoE,KAAK25B,IAAI35B,KAAKsnD,MAAM6gB,GAAOH,IAAS,EAC7CK,GAAOV,EAAQE,GAAStvD,EAAI4iC,EAC5BmtB,EAAUtoE,KAAK25B,IAAI35B,KAAKsnD,MAAM+gB,GAAOH,IAAS,EAIpD,OAHA/lC,EAAIy9B,aAAa,EAAG5/D,KAAKuoE,KAAKhwD,GAAIvY,KAAKuoE,KAAKvzD,GAAI,EAAGgzD,EAAME,GACzD/lC,EAAIsG,UAAU6+B,EAAQC,EAAMC,EAAMC,EAAMC,EAAM,EAAG,EAAGY,EAASF,GAC7DjmC,EAAIy9B,aAAatnD,EAAGC,EAAGvD,EAAG0hB,EAAGwkB,EAAIC,GAC1B,CAACmtB,EAASF,EACnB,CACAjmC,EAAIsG,UAAU6+B,EAAQC,EAAMC,EAAMC,EAAMC,EAAMC,EAAOC,EAAOC,EAAOC,GAGnE,MAAO,CAFQ9nE,KAAKihD,MAAM3oC,EAAGC,GAEZsvD,EADF7nE,KAAKihD,MAAMjsC,EAAG0hB,GACIoxC,EACnC,CACA,MAAMU,GACJC,cAAe,EACfC,SAAW,EACXC,cAAgB,EAChBC,WAAa,KACbC,gBAAkB,EAClBC,WAAaxiD,EACbyiD,QAAU,EACV5oE,EAAI,EACJ04B,EAAI,EACJmwC,MAAQ,EACRC,MAAQ,EACRC,YAAc,EACdC,YAAc,EACdC,WAAa,EACbC,kBAAoBvgD,EACpBwgD,SAAW,EACXvD,UAAY,UACZC,YAAc,UACduD,aAAc,EACdC,eAAgB,EAChBC,UAAY,EACZC,YAAc,EACdC,UAAY,EACZC,YAAc,KACdC,aAAe,OACf,WAAArtE,CAAYyhC,EAAOC,GACjBjhC,KAAK6sE,QAAU,IAAI3G,aAAa,CAAC,EAAG,EAAGllC,EAAOC,IAC9CjhC,KAAKy4B,OAASsxC,GAAatrE,OAC7B,CACA,KAAA4H,GACE,MAAMA,EAAQ9H,OAAO6M,OAAOpL,MAG5B,OAFAqG,EAAMwmE,QAAU7sE,KAAK6sE,QAAQpuE,QAC7B4H,EAAMoyB,OAASz4B,KAAKy4B,OAAOh6B,QACpB4H,CACT,CACA,kBAAAymE,CAAmBjL,EAAWtB,GAAe7xC,EAAY,MACvD,MAAMic,EAAM3qC,KAAKy4B,OAAOh6B,QACxB,GAAIojE,IAAatB,GAAiB,CAC3B7xC,GACH8F,EAAY,+CAEd4D,GAAK0C,8BAA8BpM,EAAWo7C,IAC9C,MAAMiD,EAAajD,GAAG,GAAK9pE,KAAK0sE,UAAY,EACtCM,EAAalD,GAAG,GAAK9pE,KAAK0sE,UAAY,EAC5C/hC,EAAI,IAAMoiC,EACVpiC,EAAI,IAAMqiC,EACVriC,EAAI,IAAMoiC,EACVpiC,EAAI,IAAMqiC,CACZ,CACA,OAAOriC,CACT,CACA,kBAAAsiC,GACE,MAAM7xC,EAAYhD,GAAKgD,UAAUp7B,KAAK6sE,QAAS7sE,KAAK8sE,sBACpD9sE,KAAKktE,uBAAuB9xC,GAAa,CAAC,EAAG,EAAG,EAAG,GACrD,CACA,WAAA+xC,GACE,OAAOntE,KAAKy4B,OAAO,KAAOjiB,GAC5B,CACA,sBAAA02D,CAAuBviC,GACrB3qC,KAAK6sE,QAAQnoE,IAAIimC,EAAK,GACtB3qC,KAAKy4B,OAAO/zB,IAAIqlE,GAAc,EAChC,CACA,yBAAA/H,CAA0BH,EAAWtB,GAAe7xC,EAAY,MAC9D,OAAO0J,GAAKgD,UAAUp7B,KAAK6sE,QAAS7sE,KAAK8sE,mBAAmBjL,EAAUnzC,GACxE,EAEF,SAAS0+C,GAAmBloC,EAAKmoC,GAC/B,GAAIA,aAAmBzN,UAErB,YADA16B,EAAI+gC,aAAaoH,EAAS,EAAG,GAG/B,MAAMpsC,EAASosC,EAAQpsC,OACrBD,EAAQqsC,EAAQrsC,MACZssC,EAAqBrsC,EAAS2oC,GAC9B2D,GAActsC,EAASqsC,GAAsB1D,GAC7C4D,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EACnEE,EAAevoC,EAAI8gC,gBAAgBhlC,EAAO4oC,IAChD,IACEF,EADET,EAAS,EAEb,MAAMh+D,EAAMoiE,EAAQ//D,KACdyqD,EAAO0V,EAAangE,KAC1B,IAAIvH,EAAGie,EAAG0pD,EAAiBC,EAC3B,GAAIN,EAAQvnE,OAASgmB,EAAeC,eAAgB,CAClD,MAAM09C,EAAYx+D,EAAI1E,WAChBqnE,EAAS,IAAIz2C,YAAY4gC,EAAK5xD,OAAQ,EAAG4xD,EAAKxxD,YAAc,GAC5DsnE,EAAmBD,EAAOpwE,OAC1BswE,EAAc9sC,EAAQ,GAAK,EAC3B+sC,EAAQ,WACR3E,EAAQpyC,GAAiBC,eAAiB,WAAa,IAC7D,IAAKlxB,EAAI,EAAGA,EAAIynE,EAAaznE,IAAK,CAGhC,IAFA2nE,EAAkB3nE,EAAIwnE,EAAa3D,GAAoB0D,EACvD5D,EAAU,EACL1lD,EAAI,EAAGA,EAAI0pD,EAAiB1pD,IAAK,CACpC,MAAMgqD,EAAUvE,EAAYR,EAC5B,IAAIp0D,EAAI,EACR,MAAMo5D,EAAOD,EAAUF,EAAc9sC,EAAkB,EAAVgtC,EAAc,EACrDE,GAAsB,EAAPD,EACrB,IAAIE,EAAO,EACPC,EAAU,EACd,KAAOv5D,EAAIq5D,EAAcr5D,GAAK,EAC5Bu5D,EAAUnjE,EAAIg+D,KACd2E,EAAOlE,KAAuB,IAAV0E,EAAgBL,EAAQ3E,EAC5CwE,EAAOlE,KAAuB,GAAV0E,EAAeL,EAAQ3E,EAC3CwE,EAAOlE,KAAuB,GAAV0E,EAAeL,EAAQ3E,EAC3CwE,EAAOlE,KAAuB,GAAV0E,EAAeL,EAAQ3E,EAC3CwE,EAAOlE,KAAuB,EAAV0E,EAAcL,EAAQ3E,EAC1CwE,EAAOlE,KAAuB,EAAV0E,EAAcL,EAAQ3E,EAC1CwE,EAAOlE,KAAuB,EAAV0E,EAAcL,EAAQ3E,EAC1CwE,EAAOlE,KAAuB,EAAV0E,EAAcL,EAAQ3E,EAE5C,KAAOv0D,EAAIo5D,EAAMp5D,IACF,IAATs5D,IACFC,EAAUnjE,EAAIg+D,KACdkF,EAAO,KAETP,EAAOlE,KAAa0E,EAAUD,EAAOJ,EAAQ3E,EAC7C+E,IAAS,CAEb,CACA,KAAOzE,EAAUmE,GACfD,EAAOlE,KAAa,EAEtBxkC,EAAI+gC,aAAawH,EAAc,EAAG1nE,EAAI6jE,GACxC,CACF,MAAO,GAAIyD,EAAQvnE,OAASgmB,EAAeG,WAAY,CAGrD,IAFAjI,EAAI,EACJ2pD,EAAmB3sC,EAAQ4oC,GAAoB,EAC1C7jE,EAAI,EAAGA,EAAIwnE,EAAYxnE,IAC1BgyD,EAAKrzD,IAAIuG,EAAI2rB,SAASqyC,EAAQA,EAAS0E,IACvC1E,GAAU0E,EACVzoC,EAAI+gC,aAAawH,EAAc,EAAGzpD,GAClCA,GAAK4lD,GAEH7jE,EAAIynE,IACNG,EAAmB3sC,EAAQssC,EAAqB,EAChDvV,EAAKrzD,IAAIuG,EAAI2rB,SAASqyC,EAAQA,EAAS0E,IACvCzoC,EAAI+gC,aAAawH,EAAc,EAAGzpD,GAEtC,KAAO,IAAIqpD,EAAQvnE,OAASgmB,EAAeE,UAkBzC,MAAM,IAAI3V,MAAM,mBAAmBg3D,EAAQvnE,QAf3C,IAFA4nE,EAAkB9D,GAClB+D,EAAmB3sC,EAAQ0sC,EACtB3nE,EAAI,EAAGA,EAAIynE,EAAaznE,IAAK,CAMhC,IALIA,GAAKwnE,IACPG,EAAkBJ,EAClBK,EAAmB3sC,EAAQ0sC,GAE7BhE,EAAU,EACL1lD,EAAI2pD,EAAkB3pD,KACzB+zC,EAAK2R,KAAaz+D,EAAIg+D,KACtBlR,EAAK2R,KAAaz+D,EAAIg+D,KACtBlR,EAAK2R,KAAaz+D,EAAIg+D,KACtBlR,EAAK2R,KAAa,IAEpBxkC,EAAI+gC,aAAawH,EAAc,EAAG1nE,EAAI6jE,GACxC,CAGF,CACF,CACA,SAASyE,GAAmBnpC,EAAKmoC,GAC/B,GAAIA,EAAQrvD,OAEV,YADAknB,EAAIsG,UAAU6hC,EAAQrvD,OAAQ,EAAG,GAGnC,MAAMijB,EAASosC,EAAQpsC,OACrBD,EAAQqsC,EAAQrsC,MACZssC,EAAqBrsC,EAAS2oC,GAC9B2D,GAActsC,EAASqsC,GAAsB1D,GAC7C4D,EAAqC,IAAvBF,EAA2BC,EAAaA,EAAa,EACnEE,EAAevoC,EAAI8gC,gBAAgBhlC,EAAO4oC,IAChD,IAAIX,EAAS,EACb,MAAMh+D,EAAMoiE,EAAQ//D,KACdyqD,EAAO0V,EAAangE,KAC1B,IAAK,IAAIvH,EAAI,EAAGA,EAAIynE,EAAaznE,IAAK,CACpC,MAAM2nE,EAAkB3nE,EAAIwnE,EAAa3D,GAAoB0D,IAE3DrE,UACED,GAA2B,CAC7B/9D,MACAg+D,SACAlR,OACA/2B,QACAC,OAAQysC,EACRxE,cAAe,KAEjBhkC,EAAI+gC,aAAawH,EAAc,EAAG1nE,EAAI6jE,GACxC,CACF,CACA,SAAS0E,GAAaC,EAAWC,GAC/B,MAAMC,EAAa,CAAC,cAAe,YAAa,WAAY,cAAe,YAAa,UAAW,WAAY,aAAc,2BAA4B,OAAQ,UACjK,IAAK,MAAMC,KAAYD,OACO/uE,IAAxB6uE,EAAUG,KACZF,EAAQE,GAAYH,EAAUG,SAGJhvE,IAA1B6uE,EAAUI,cACZH,EAAQG,YAAYJ,EAAUK,eAC9BJ,EAAQK,eAAiBN,EAAUM,eAEvC,CACA,SAASC,GAAkB5pC,GACzBA,EAAI2jC,YAAc3jC,EAAIs9B,UAAY,UAClCt9B,EAAI6pC,SAAW,UACf7pC,EAAI8pC,YAAc,EAClB9pC,EAAIwnC,UAAY,EAChBxnC,EAAI+pC,QAAU,OACd/pC,EAAIgqC,SAAW,QACfhqC,EAAIiqC,WAAa,GACjBjqC,EAAIkqC,yBAA2B,cAC/BlqC,EAAI4vB,KAAO,uBACap1D,IAApBwlC,EAAIypC,cACNzpC,EAAIypC,YAAY,IAChBzpC,EAAI2pC,eAAiB,GAEvB,MAAM,OACJpjE,GACEy5B,EACW,SAAXz5B,GAAgC,KAAXA,IACvBy5B,EAAIz5B,OAAS,OAEjB,CACA,SAAS4jE,GAAyB3gD,EAAW4gD,GAC3C,GAAIA,EACF,OAAO,EAETl3C,GAAK0C,8BAA8BpM,EAAWo7C,IAC9C,MAAMyF,EAAcxsE,KAAKysE,OAAOvpC,GAAYC,WAAavH,GAAc0U,kBACvE,OAAOy2B,GAAG,IAAMyF,GAAezF,GAAG,IAAMyF,CAC1C,CACA,MAAME,GAAkB,CAAC,OAAQ,QAAS,UACpCC,GAAmB,CAAC,QAAS,QAAS,SACtCC,GAAc,CAAC,EACfC,GAAU,CAAC,EACjB,MAAMC,GACJ,WAAAtwE,CAAYuwE,EAAWC,EAAY9Y,EAAMgT,EAAe/2B,GAAe,sBACrE88B,EAAqB,mBACrBC,EAAqB,MACpBC,EAAqBl+B,GACtBhyC,KAAKklC,IAAM4qC,EACX9vE,KAAKkW,QAAU,IAAIq1D,GAAiBvrE,KAAKklC,IAAI+H,OAAOjM,MAAOhhC,KAAKklC,IAAI+H,OAAOhM,QAC3EjhC,KAAKmwE,WAAa,GAClBnwE,KAAKowE,YAAc,KACnBpwE,KAAKqwE,eAAgB,EACrBrwE,KAAKw1B,IAAM,KACXx1B,KAAKswE,MAAQ,KACbtwE,KAAK+vE,WAAaA,EAClB/vE,KAAKi3D,KAAOA,EACZj3D,KAAKiqE,cAAgBA,EACrBjqE,KAAKkzC,cAAgBA,EACrBlzC,KAAKuwE,WAAa,GAClBvwE,KAAKuiE,cAAgB,KACrBviE,KAAKwwE,mBAAqB,GAC1BxwE,KAAK6nE,WAAa,EAClB7nE,KAAKywE,WAAa,GAClBzwE,KAAK0wE,aAAe,EACpB1wE,KAAK2wE,UAAY,KACjB3wE,KAAK4wE,aAAe,KACpB5wE,KAAK6wE,gBAAiB,EACtB7wE,KAAKiwE,mBAAqBA,GAAsB,GAChDjwE,KAAKgwE,sBAAwBA,EAC7BhwE,KAAKkiE,eAAiB,IAAI8H,GAAehqE,KAAKiqE,eAC9CjqE,KAAK8wE,eAAiB,IAAI7zC,IAC1Bj9B,KAAKkwE,oBAAsBA,EAC3BlwE,KAAK+wE,cAAgB,EACrB/wE,KAAKgxE,aAAe,EACpBhxE,KAAKixE,aAAe,EACpBjxE,KAAKgyC,WAAaA,EAClBhyC,KAAKkxE,wBAA0B,EAAE,EAAG,GACpClxE,KAAKmxE,2BAA6B,KAClCnxE,KAAKoxE,kBAAoB,IAAIn0C,GAC/B,CACA,SAAAo0C,CAAU/jE,EAAMgkE,EAAW,MACzB,MAAoB,iBAAThkE,EACFA,EAAKwnB,WAAW,MAAQ90B,KAAK+vE,WAAW5xE,IAAImP,GAAQtN,KAAKi3D,KAAK94D,IAAImP,GAEpEgkE,CACT,CACA,YAAAC,EAAa,UACX7iD,EAAS,SACT8W,EAAQ,aACRgsC,GAAe,EAAK,WACpBx9B,EAAa,OAEb,MAAMhT,EAAQhhC,KAAKklC,IAAI+H,OAAOjM,MACxBC,EAASjhC,KAAKklC,IAAI+H,OAAOhM,OACzBwwC,EAAiBzxE,KAAKklC,IAAIs9B,UAIhC,GAHAxiE,KAAKklC,IAAIs9B,UAAYxuB,GAAc,UACnCh0C,KAAKklC,IAAIwsC,SAAS,EAAG,EAAG1wC,EAAOC,GAC/BjhC,KAAKklC,IAAIs9B,UAAYiP,EACjBD,EAAc,CAChB,MAAMG,EAAoB3xE,KAAKkiE,eAAeC,UAAU,cAAenhC,EAAOC,GAC9EjhC,KAAK4xE,aAAe5xE,KAAKklC,IACzBllC,KAAK2xE,kBAAoBA,EAAkB1kC,OAC3CjtC,KAAKklC,IAAMysC,EAAkB9uD,QAC7B7iB,KAAKklC,IAAI1W,OACTxuB,KAAKklC,IAAIxW,aAAauW,GAAoBjlC,KAAK4xE,cACjD,CACA5xE,KAAKklC,IAAI1W,OACTsgD,GAAkB9uE,KAAKklC,KACnBxW,IACF1uB,KAAKklC,IAAIxW,aAAaA,GACtB1uB,KAAKgxE,aAAetiD,EAAU,GAC9B1uB,KAAKixE,aAAeviD,EAAU,IAEhC1uB,KAAKklC,IAAIxW,aAAa8W,EAAS9W,WAC/B1uB,KAAK+wE,cAAgBvrC,EAASrF,MAC9BngC,KAAKuiE,cAAgBt9B,GAAoBjlC,KAAKklC,IAChD,CACA,mBAAA8iC,CAAoBtB,EAAcmL,EAAmBC,EAAkBC,GACrE,MAAMC,EAAYtL,EAAasL,UACzBC,EAAUvL,EAAauL,QAC7B,IAAIlsE,EAAI8rE,GAAqB,EAC7B,MAAMK,EAAeF,EAAUx0E,OAC/B,GAAI00E,IAAiBnsE,EACnB,OAAOA,EAET,MAAMosE,EAAkBD,EAAensE,EAlenB,IAkesE,mBAArB+rE,EAC/DM,EAAUD,EAAkB/uC,KAAKC,MApepB,GAoe6C,EAChE,IAAIgvC,EAAQ,EACZ,MAAMtC,EAAa/vE,KAAK+vE,WAClB9Y,EAAOj3D,KAAKi3D,KAClB,IAAIqb,EACJ,OAAa,CACX,QAAgB5yE,IAAZqyE,GAAyBhsE,IAAMgsE,EAAQQ,eAEzC,OADAR,EAAQS,QAAQzsE,EAAG+rE,GACZ/rE,EAGT,GADAusE,EAAOL,EAAQlsE,GACXusE,IAASxkD,EAAIC,WACf/tB,KAAKsyE,GAAMtrE,MAAMhH,KAAMgyE,EAAUjsE,SAEjC,IAAK,MAAM0sE,KAAYT,EAAUjsE,GAAI,CACnC,MAAM2sE,EAAWD,EAAS39C,WAAW,MAAQi7C,EAAa9Y,EAC1D,IAAKyb,EAAS/tE,IAAI8tE,GAEhB,OADAC,EAASv0E,IAAIs0E,EAAUX,GAChB/rE,CAEX,CAGF,GADAA,IACIA,IAAMmsE,EACR,OAAOnsE,EAET,GAAIosE,KAAqBE,EA7fP,GA6fgC,CAChD,GAAIjvC,KAAKC,MAAQ+uC,EAEf,OADAN,IACO/rE,EAETssE,EAAQ,CACV,CACF,CACF,CACA,MACE,KAAOryE,KAAKmwE,WAAW3yE,QAAUwC,KAAK2yE,aACpC3yE,KAAKyuB,UAEPzuB,KAAKkW,QAAQy2D,YAAc,KAC3B3sE,KAAKklC,IAAIzW,UACLzuB,KAAK2xE,oBACP3xE,KAAKklC,IAAMllC,KAAK4xE,aAChB5xE,KAAKklC,IAAI1W,OACTxuB,KAAKklC,IAAIy9B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrC3iE,KAAKklC,IAAIsG,UAAUxrC,KAAK2xE,kBAAmB,EAAG,GAC9C3xE,KAAKklC,IAAIzW,UACTzuB,KAAK2xE,kBAAoB,KAE7B,CACA,UAAA1J,GACEjoE,MAAK,KACLA,KAAKkiE,eAAe1iD,QACpBxf,KAAK8wE,eAAetxD,QACpB,IAAK,MAAM0qD,KAASlqE,KAAKoxE,kBAAkBryD,SAAU,CACnD,IAAK,MAAMkuB,KAAUi9B,EAAMnrD,SACQ,oBAAtB6zD,mBAAqC3lC,aAAkB2lC,oBAChE3lC,EAAOjM,MAAQiM,EAAOhM,OAAS,GAGnCipC,EAAM1qD,OACR,CACAxf,KAAKoxE,kBAAkB5xD,QACvBxf,MAAK,IACP,CACA,MACE,GAAIA,KAAKgyC,WAAY,CACnB,MAAM6gC,EAAc7yE,KAAKkzC,cAAcY,aAAa9zC,KAAKgyC,WAAW+B,WAAY/zC,KAAKgyC,WAAWgC,YAChG,GAAoB,SAAhB6+B,EAAwB,CAC1B,MAAMC,EAAc9yE,KAAKklC,IAAIz5B,OAC7BzL,KAAKklC,IAAIz5B,OAASonE,EAClB7yE,KAAKklC,IAAIsG,UAAUxrC,KAAKklC,IAAI+H,OAAQ,EAAG,GACvCjtC,KAAKklC,IAAIz5B,OAASqnE,CACpB,CACF,CACF,CACA,WAAAC,CAAYC,EAAKn4C,GACf,MAAMmG,EAAQgyC,EAAIhyC,OAASgyC,EAAIC,aACzBhyC,EAAS+xC,EAAI/xC,QAAU+xC,EAAIE,cACjC,IAKIjR,EAAWG,EALX+Q,EAAapwE,KAAKkO,IAAIlO,KAAKihD,MAAMnpB,EAAiB,GAAIA,EAAiB,IAAK,GAC5Eu4C,EAAcrwE,KAAKkO,IAAIlO,KAAKihD,MAAMnpB,EAAiB,GAAIA,EAAiB,IAAK,GAC7Ew4C,EAAaryC,EACfsyC,EAAcryC,EACZsyC,EAAc,YAElB,KAAOJ,EAAa,GAAKE,EAAa,GAAKD,EAAc,GAAKE,EAAc,GAAG,CAC7E,IAAIppB,EAAWmpB,EACblpB,EAAYmpB,EACVH,EAAa,GAAKE,EAAa,IACjCnpB,EAAWmpB,GAAc,MAAQtwE,KAAKC,MAAMqwE,EAAa,GAAK,GAAK,EAAItwE,KAAKD,KAAKuwE,EAAa,GAC9FF,GAAcE,EAAanpB,GAEzBkpB,EAAc,GAAKE,EAAc,IACnCnpB,EAAYmpB,GAAe,MAAQvwE,KAAKC,MAAMswE,EAAc,GAAK,GAAK,EAAIvwE,KAAKD,KAAKwwE,GAAe,EACnGF,GAAeE,EAAcnpB,GAE/B8X,EAAYjiE,KAAKkiE,eAAeC,UAAUoR,EAAarpB,EAAUC,GACjEiY,EAASH,EAAUp/C,QACnBu/C,EAAOC,UAAU,EAAG,EAAGnY,EAAUC,GACjCiY,EAAO52B,UAAUwnC,EAAK,EAAG,EAAGK,EAAYC,EAAa,EAAG,EAAGppB,EAAUC,GACrE6oB,EAAM/Q,EAAUh1B,OAChBomC,EAAanpB,EACbopB,EAAcnpB,EACdopB,EAA8B,cAAhBA,EAA8B,YAAc,WAC5D,CACA,MAAO,CACLP,MACAK,aACAC,cAEJ,CACA,iBAAAE,CAAkBR,GAChB,MAAM9tC,EAAMllC,KAAKklC,KACX,MACJlE,EAAK,OACLC,GACE+xC,EACElK,EAAY9oE,KAAKkW,QAAQ4yD,UACzB2K,EAAgBzzE,KAAKkW,QAAQo2D,YAC7BoH,EAAmBzuC,GAAoBC,GAC7C,IAAIglC,EAAOyJ,EAAUttC,EAAQutC,EAC7B,IAAKZ,EAAIh1D,QAAUg1D,EAAI1lE,OAAS0lE,EAAIhuD,MAAQ,EAAG,CAC7C,MAAM6uD,EAAUb,EAAIh1D,QAAUg1D,EAAI1lE,KAAKnH,OACvCwtE,EAAW5xD,KAAKo1B,UAAUs8B,EAAgBC,EAAmB,CAACA,EAAiBj1E,MAAM,EAAG,GAAIqqE,IAC5FoB,EAAQlqE,KAAKoxE,kBAAkBjzE,IAAI01E,GAC9B3J,IACHA,EAAQ,IAAIjtC,IACZj9B,KAAKoxE,kBAAkB1sE,IAAImvE,EAAS3J,IAEtC,MAAM4J,EAAc5J,EAAM/rE,IAAIw1E,GAC9B,GAAIG,IAAgBL,EAAe,CAGjC,MAAO,CACLxmC,OAAQ6mC,EACRzzC,QAJct9B,KAAKsnD,MAAMtnD,KAAKiG,IAAI0qE,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,IAK/FpzC,QAJcv9B,KAAKsnD,MAAMtnD,KAAKiG,IAAI0qE,EAAiB,GAAIA,EAAiB,IAAMA,EAAiB,IAMnG,CACArtC,EAASytC,CACX,CACKztC,IACHutC,EAAa5zE,KAAKkiE,eAAeC,UAAU,aAAcnhC,EAAOC,GAChEotC,GAAmBuF,EAAW/wD,QAASmwD,IAEzC,IAAIe,EAAe37C,GAAK1J,UAAUglD,EAAkB,CAAC,EAAI1yC,EAAO,EAAG,GAAI,EAAIC,EAAQ,EAAG,IACtF8yC,EAAe37C,GAAK1J,UAAUqlD,EAAc,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI9yC,IAC7D,MAAMxI,EAASsxC,GAAatrE,QAC5B25B,GAAKsB,wBAAwB,CAAC,EAAG,EAAGsH,EAAOC,GAAS8yC,EAAct7C,GAClE,MAAOu7C,EAAMjQ,EAAMkQ,EAAMjQ,GAAQvrC,EAC3By7C,EAAanxE,KAAKsnD,MAAM4pB,EAAOD,IAAS,EACxCG,EAAcpxE,KAAKsnD,MAAM2Z,EAAOD,IAAS,EACzCqQ,EAAap0E,KAAKkiE,eAAeC,UAAU,aAAc+R,EAAYC,GACrEE,EAAUD,EAAWvxD,QACrBwd,EAAU2zC,EACV1zC,EAAUyjC,EAChBsQ,EAAQpsB,WAAW5nB,GAAUC,GAC7B+zC,EAAQ3lD,aAAaqlD,GAChB1tC,IACHA,EAASrmC,KAAK+yE,YAAYa,EAAW3mC,OAAQ7H,GAA2BivC,IACxEhuC,EAASA,EAAO2sC,IACZ9I,GAASuJ,GACXvJ,EAAMxlE,IAAIivE,EAAUttC,IAGxBguC,EAAQC,sBAAwBjF,GAAyBpqC,GAAoBovC,GAAUrB,EAAI1D,aAC3FlF,GAAyBiK,EAAShuC,EAAQ,EAAG,EAAGA,EAAOrF,MAAOqF,EAAOpF,OAAQ,EAAG,EAAGD,EAAOC,GAC1FozC,EAAQjF,yBAA2B,YACnC,MAAMthE,EAAUsqB,GAAK1J,UAAU0W,GAA2BivC,GAAU,CAAC,EAAG,EAAG,EAAG,GAAIh0C,GAAUC,IAO5F,OANA+zC,EAAQ7R,UAAYiR,EAAgB3K,EAAUjI,WAAW37B,EAAKllC,KAAM8N,EAASyyD,IAAiBuI,EAC9FuL,EAAQ3C,SAAS,EAAG,EAAG1wC,EAAOC,GAC1BipC,IAAUuJ,IACZzzE,KAAKkiE,eAAe74B,OAAO,cAC3B6gC,EAAMxlE,IAAIivE,EAAUS,EAAWnnC,SAE1B,CACLA,OAAQmnC,EAAWnnC,OACnB5M,QAASt9B,KAAKsnD,MAAMhqB,GACpBC,QAASv9B,KAAKsnD,MAAM/pB,GAExB,CACA,YAAAtS,CAAagT,GACPA,IAAUhhC,KAAKkW,QAAQw2D,YACzB1sE,KAAKkxE,wBAAwB,IAAM,GAErClxE,KAAKkW,QAAQw2D,UAAY1rC,EACzBhhC,KAAKklC,IAAIwnC,UAAY1rC,CACvB,CACA,UAAA/S,CAAWnjB,GACT9K,KAAKklC,IAAI+pC,QAAUQ,GAAgB3kE,EACrC,CACA,WAAAojB,CAAYpjB,GACV9K,KAAKklC,IAAIgqC,SAAWQ,GAAiB5kE,EACvC,CACA,aAAAqjB,CAAczH,GACZ1mB,KAAKklC,IAAIiqC,WAAazoD,CACxB,CACA,OAAA0H,CAAQmmD,EAAWC,GACjB,MAAMtvC,EAAMllC,KAAKklC,SACOxlC,IAApBwlC,EAAIypC,cACNzpC,EAAIypC,YAAY4F,GAChBrvC,EAAI2pC,eAAiB2F,EAEzB,CACA,kBAAAnmD,CAAmBomD,GAAS,CAC5B,WAAAnmD,CAAYomD,GAAW,CACvB,SAAAnmD,CAAUomD,GACR,IAAK,MAAOjsE,EAAK7J,KAAU81E,EACzB,OAAQjsE,GACN,IAAK,KACH1I,KAAKguB,aAAanvB,GAClB,MACF,IAAK,KACHmB,KAAKiuB,WAAWpvB,GAChB,MACF,IAAK,KACHmB,KAAKkuB,YAAYrvB,GACjB,MACF,IAAK,KACHmB,KAAKmuB,cAActvB,GACnB,MACF,IAAK,IACHmB,KAAKouB,QAAQvvB,EAAM,GAAIA,EAAM,IAC7B,MACF,IAAK,KACHmB,KAAKquB,mBAAmBxvB,GACxB,MACF,IAAK,KACHmB,KAAKsuB,YAAYzvB,GACjB,MACF,IAAK,OACHmB,KAAKmwB,QAAQtxB,EAAM,GAAIA,EAAM,IAC7B,MACF,IAAK,KACHmB,KAAKkW,QAAQu2D,YAAc5tE,EAC3B,MACF,IAAK,KACHmB,KAAKklC,IAAI8pC,YAAchvE,KAAKkW,QAAQs2D,UAAY3tE,EAChD,MACF,IAAK,KACHmB,KAAKklC,IAAIkqC,yBAA2BvwE,EACpC,MACF,IAAK,QACHmB,KAAKkW,QAAQy2D,YAAc9tE,EAAQmB,KAAK2wE,UAAY,KACpD3wE,KAAK2wE,UAAY,KACjB3wE,KAAK40E,kBACL,MACF,IAAK,KACH50E,KAAKklC,IAAIz5B,OAASzL,KAAKkW,QAAQ02D,aAAe5sE,KAAKkzC,cAAcqpB,UAAU19D,GAInF,CACA,eAAI8zE,GACF,QAAS3yE,KAAK4wE,YAChB,CACA,eAAAgE,GACE,MAAMjC,EAAc3yE,KAAK2yE,YACrB3yE,KAAKkW,QAAQy2D,cAAgBgG,EAC/B3yE,KAAK60E,kBACK70E,KAAKkW,QAAQy2D,aAAegG,GACtC3yE,KAAK80E,cAET,CACA,cAAAD,GACE,GAAI70E,KAAK2yE,YACP,MAAM,IAAIt8D,MAAM,qDAElB,MAAM69D,EAAal0E,KAAKklC,IAAI+H,OAAOjM,MAC7BmzC,EAAcn0E,KAAKklC,IAAI+H,OAAOhM,OAC9B8zC,EAAU,eAAiB/0E,KAAK6nE,WAChCmN,EAAgBh1E,KAAKkiE,eAAeC,UAAU4S,EAASb,EAAYC,GACzEn0E,KAAK4wE,aAAe5wE,KAAKklC,IACzB,MAAMA,EAAMllC,KAAKklC,IAAM8vC,EAAcnyD,QACrCqiB,EAAIy9B,aAAa3iE,KAAK4wE,aAAazrC,gBACnCmpC,GAAatuE,KAAK4wE,aAAc1rC,GAjvBpC,SAAiCA,EAAKspC,GACpC,GAAItpC,EAAI+vC,iBACN,MAAM,IAAI5+D,MAAM,6CAElB6uB,EAAIgwC,eAAiBhwC,EAAI1W,KACzB0W,EAAIiwC,kBAAoBjwC,EAAIzW,QAC5ByW,EAAIkwC,iBAAmBlwC,EAAI0pB,OAC3B1pB,EAAImwC,gBAAkBnwC,EAAI/E,MAC1B+E,EAAIowC,oBAAsBpwC,EAAI+iB,UAC9B/iB,EAAIqwC,oBAAsBrwC,EAAIxW,UAC9BwW,EAAIswC,uBAAyBtwC,EAAIy9B,aACjCz9B,EAAIuwC,yBAA2BvwC,EAAIwwC,eACnCxwC,EAAIywC,eAAiBzwC,EAAIvV,KACzBuV,EAAI0wC,iBAAmB1wC,EAAIvW,OAC3BuW,EAAI2wC,iBAAmB3wC,EAAItW,OAC3BsW,EAAI4wC,wBAA0B5wC,EAAI6wC,cAClC7wC,EAAI8wC,eAAiB9wC,EAAIvL,KACzBuL,EAAI+wC,oBAAsB/wC,EAAIlW,UAC9BkW,EAAIgxC,oBAAsBhxC,EAAIo9B,UAC9Bp9B,EAAI+vC,iBAAmB,KACrB/vC,EAAI1W,KAAO0W,EAAIgwC,eACfhwC,EAAIzW,QAAUyW,EAAIiwC,kBAClBjwC,EAAI0pB,OAAS1pB,EAAIkwC,iBACjBlwC,EAAI/E,MAAQ+E,EAAImwC,gBAChBnwC,EAAI+iB,UAAY/iB,EAAIowC,oBACpBpwC,EAAIxW,UAAYwW,EAAIqwC,oBACpBrwC,EAAIy9B,aAAez9B,EAAIswC,uBACvBtwC,EAAIwwC,eAAiBxwC,EAAIuwC,yBACzBvwC,EAAIvV,KAAOuV,EAAIywC,eACfzwC,EAAIvW,OAASuW,EAAI0wC,iBACjB1wC,EAAItW,OAASsW,EAAI2wC,iBACjB3wC,EAAI6wC,cAAgB7wC,EAAI4wC,wBACxB5wC,EAAIvL,KAAOuL,EAAI8wC,eACf9wC,EAAIlW,UAAYkW,EAAI+wC,oBACpB/wC,EAAIo9B,UAAYp9B,EAAIgxC,2BACbhxC,EAAI+vC,gBAAgB,EAE7B/vC,EAAI1W,KAAO,WACTggD,EAAQhgD,OACRxuB,KAAKk1E,gBACP,EACAhwC,EAAIzW,QAAU,WACZ+/C,EAAQ//C,UACRzuB,KAAKm1E,mBACP,EACAjwC,EAAI+iB,UAAY,SAAU/kD,EAAG04B,GAC3B4yC,EAAQvmB,UAAU/kD,EAAG04B,GACrB57B,KAAKs1E,oBAAoBpyE,EAAG04B,EAC9B,EACAsJ,EAAI/E,MAAQ,SAAUj9B,EAAG04B,GACvB4yC,EAAQruC,MAAMj9B,EAAG04B,GACjB57B,KAAKq1E,gBAAgBnyE,EAAG04B,EAC1B,EACAsJ,EAAIxW,UAAY,SAAUrT,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GACvC+mE,EAAQ9/C,UAAUrT,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GACjCzH,KAAKu1E,oBAAoBl6D,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,EAC1C,EACAy9B,EAAIy9B,aAAe,SAAUtnD,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GAC1C+mE,EAAQ7L,aAAatnD,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GACpCzH,KAAKw1E,uBAAuBn6D,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,EAC7C,EACAy9B,EAAIwwC,eAAiB,WACnBlH,EAAQkH,iBACR11E,KAAKy1E,0BACP,EACAvwC,EAAI0pB,OAAS,SAAU9F,GACrB0lB,EAAQ5f,OAAO9F,GACf9oD,KAAKo1E,iBAAiBtsB,EACxB,EACA5jB,EAAIvV,KAAO,SAAUokC,GACnBya,EAAQ7+C,KAAKokC,GACb/zD,KAAK21E,eAAe5hB,EACtB,EACA7uB,EAAIvW,OAAS,SAAUzrB,EAAG04B,GACxB4yC,EAAQ7/C,OAAOzrB,EAAG04B,GAClB57B,KAAK41E,iBAAiB1yE,EAAG04B,EAC3B,EACAsJ,EAAItW,OAAS,SAAU1rB,EAAG04B,GACxB4yC,EAAQ5/C,OAAO1rB,EAAG04B,GAClB57B,KAAK61E,iBAAiB3yE,EAAG04B,EAC3B,EACAsJ,EAAI6wC,cAAgB,SAAUI,EAAMC,EAAMC,EAAMC,EAAMpzE,EAAG04B,GACvD4yC,EAAQuH,cAAcI,EAAMC,EAAMC,EAAMC,EAAMpzE,EAAG04B,GACjD57B,KAAK81E,wBAAwBK,EAAMC,EAAMC,EAAMC,EAAMpzE,EAAG04B,EAC1D,EACAsJ,EAAIvL,KAAO,SAAUz2B,EAAG04B,EAAGoF,EAAOC,GAChCutC,EAAQ70C,KAAKz2B,EAAG04B,EAAGoF,EAAOC,GAC1BjhC,KAAKg2E,eAAe9yE,EAAG04B,EAAGoF,EAAOC,EACnC,EACAiE,EAAIlW,UAAY,WACdw/C,EAAQx/C,YACRhvB,KAAKi2E,qBACP,EACA/wC,EAAIo9B,UAAY,WACdkM,EAAQlM,YACRtiE,KAAKk2E,qBACP,CACF,CAipBIK,CAAwBrxC,EAAKllC,KAAK4wE,cAClC5wE,KAAKuuB,UAAU,CAAC,CAAC,KAAM,gBACzB,CACA,YAAAumD,GACE,IAAK90E,KAAK2yE,YACR,MAAM,IAAIt8D,MAAM,+CAElBrW,KAAKklC,IAAI+vC,mBACT3G,GAAatuE,KAAKklC,IAAKllC,KAAK4wE,cAC5B5wE,KAAKklC,IAAMllC,KAAK4wE,aAChB5wE,KAAK4wE,aAAe,IACtB,CACA,OAAA4F,CAAQC,GACN,IAAKz2E,KAAKkW,QAAQy2D,YAChB,OAEG8J,GAGHA,EAAS,GAAK1zE,KAAKC,MAAMyzE,EAAS,IAClCA,EAAS,GAAK1zE,KAAKC,MAAMyzE,EAAS,IAClCA,EAAS,GAAK1zE,KAAKD,KAAK2zE,EAAS,IACjCA,EAAS,GAAK1zE,KAAKD,KAAK2zE,EAAS,KALjCA,EAAW,CAAC,EAAG,EAAGz2E,KAAKklC,IAAI+H,OAAOjM,MAAOhhC,KAAKklC,IAAI+H,OAAOhM,QAO3D,MAAMy1C,EAAQ12E,KAAKkW,QAAQy2D,YACrBiE,EAAe5wE,KAAK4wE,aAC1B5wE,KAAK22E,aAAa/F,EAAc8F,EAAO12E,KAAKklC,IAAKuxC,GACjDz2E,KAAKklC,IAAI1W,OACTxuB,KAAKklC,IAAIy9B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrC3iE,KAAKklC,IAAIm9B,UAAU,EAAG,EAAGriE,KAAKklC,IAAI+H,OAAOjM,MAAOhhC,KAAKklC,IAAI+H,OAAOhM,QAChEjhC,KAAKklC,IAAIzW,SACX,CACA,YAAAkoD,CAAazxC,EAAKwxC,EAAOE,EAAUC,GACjC,MAAMC,EAAeD,EAAS,GACxBE,EAAeF,EAAS,GACxBG,EAAaH,EAAS,GAAKC,EAC3BG,EAAcJ,EAAS,GAAKE,EACf,IAAfC,GAAoC,IAAhBC,IAGxBj3E,KAAKk3E,oBAAoBR,EAAM7zD,QAAS+zD,EAAUI,EAAYC,EAAaP,EAAMS,QAAST,EAAMU,SAAUV,EAAMW,YAAaP,EAAcC,EAAcL,EAAMr2C,QAASq2C,EAAMp2C,SAC9K4E,EAAI1W,OACJ0W,EAAI8pC,YAAc,EAClB9pC,EAAIkqC,yBAA2B,cAC/BlqC,EAAIy9B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCz9B,EAAIsG,UAAUorC,EAAS3pC,OAAQ,EAAG,GAClC/H,EAAIzW,UACN,CACA,mBAAAyoD,CAAoBI,EAASV,EAAU51C,EAAOC,EAAQk2C,EAASC,EAAUC,EAAaP,EAAcC,EAAcQ,EAAaC,GAC7H,IAAI5D,EAAa0D,EAAQrqC,OACrBwqC,EAAQX,EAAeS,EACvBG,EAAQX,EAAeS,EAC3B,GAAIJ,EACF,GAAIK,EAAQ,GAAKC,EAAQ,GAAKD,EAAQz2C,EAAQ4yC,EAAW5yC,OAAS02C,EAAQz2C,EAAS2yC,EAAW3yC,OAAQ,CACpG,MAAMgM,EAASjtC,KAAKkiE,eAAeC,UAAU,gBAAiBnhC,EAAOC,GAC/DiE,EAAM+H,EAAOpqB,QACnBqiB,EAAIsG,UAAUooC,GAAa6D,GAAQC,GACnCxyC,EAAIkqC,yBAA2B,mBAC/BlqC,EAAIs9B,UAAY4U,EAChBlyC,EAAIwsC,SAAS,EAAG,EAAG1wC,EAAOC,GAC1BiE,EAAIkqC,yBAA2B,cAC/BwE,EAAa3mC,EAAOA,OACpBwqC,EAAQC,EAAQ,CAClB,KAAO,CACLJ,EAAQ9oD,OACR8oD,EAAQtI,YAAc,EACtBsI,EAAQ3U,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACpC,MAAMhzC,EAAO,IAAI2nC,OACjB3nC,EAAKgK,KAAK89C,EAAOC,EAAO12C,EAAOC,GAC/Bq2C,EAAQ3nD,KAAKA,GACb2nD,EAAQlI,yBAA2B,mBACnCkI,EAAQ9U,UAAY4U,EACpBE,EAAQ5F,SAAS+F,EAAOC,EAAO12C,EAAOC,GACtCq2C,EAAQ7oD,SACV,CAEFmoD,EAASpoD,OACTooD,EAAS5H,YAAc,EACvB4H,EAASjU,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACrB,UAAZwU,GAAuBE,EACzBT,EAASnrE,OAASzL,KAAKkzC,cAAcypB,eAAe0a,GAC/B,eAAZF,IACTP,EAASnrE,OAASzL,KAAKkzC,cAAc0pB,oBAAoBya,IAE3D,MAAM1nD,EAAO,IAAI2nC,OACjB3nC,EAAKgK,KAAKm9C,EAAcC,EAAc/1C,EAAOC,GAC7C21C,EAASjnD,KAAKA,GACdinD,EAASxH,yBAA2B,iBACpCwH,EAASprC,UAAUooC,EAAY6D,EAAOC,EAAO12C,EAAOC,EAAQ61C,EAAcC,EAAc/1C,EAAOC,GAC/F21C,EAASnoD,SACX,CACA,IAAAD,GACMxuB,KAAK2yE,aACPrE,GAAatuE,KAAKklC,IAAKllC,KAAK4wE,cAE9B5wE,KAAKklC,IAAI1W,OACT,MAAMmpD,EAAM33E,KAAKkW,QACjBlW,KAAKmwE,WAAW5nE,KAAKovE,GACrB33E,KAAKkW,QAAUyhE,EAAItxE,OACrB,CACA,OAAAooB,GACiC,IAA3BzuB,KAAKmwE,WAAW3yE,QAMpBwC,KAAKkW,QAAUlW,KAAKmwE,WAAWyH,MAC/B53E,KAAKklC,IAAIzW,UACLzuB,KAAK2yE,aACPrE,GAAatuE,KAAK4wE,aAAc5wE,KAAKklC,KAEvCllC,KAAK40E,kBACL50E,KAAKowE,YAAc,KACnBpwE,KAAKkxE,wBAAwB,IAAM,EACnClxE,KAAKmxE,2BAA6B,MAb5BnxE,KAAK2yE,aACP3yE,KAAK80E,cAaX,CACA,SAAApmD,CAAUrT,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GACvBzH,KAAKklC,IAAIxW,UAAUrT,EAAGC,EAAGvD,EAAG0hB,EAAGrpB,EAAG3I,GAClCzH,KAAKkxE,wBAAwB,IAAM,EACnClxE,KAAKmxE,2BAA6B,IACpC,CACA,aAAA79C,CAAcukD,EAAIvqE,EAAMmrB,GACtB,IAAK4+B,GAAQ/pD,EACb,IAAKmrB,EAGH,OAFA4+B,IAAS/pD,EAAK,GAAK,IAAIgqD,YACvBt3D,KAAK63E,GAAIxgB,GAGX,KAAMA,aAAgBC,QAAS,CAC7B,MAAMwgB,EAASxqE,EAAK,GAAK,IAAIgqD,OAC7B,IAAK,IAAIvxD,EAAI,EAAGi8B,EAAKq1B,EAAK75D,OAAQuI,EAAIi8B,GACpC,OAAQq1B,EAAKtxD,MACX,KAAK2tB,EACHokD,EAAOnpD,OAAO0oC,EAAKtxD,KAAMsxD,EAAKtxD,MAC9B,MACF,KAAK2tB,EACHokD,EAAOlpD,OAAOyoC,EAAKtxD,KAAMsxD,EAAKtxD,MAC9B,MACF,KAAK2tB,EACHokD,EAAO/B,cAAc1e,EAAKtxD,KAAMsxD,EAAKtxD,KAAMsxD,EAAKtxD,KAAMsxD,EAAKtxD,KAAMsxD,EAAKtxD,KAAMsxD,EAAKtxD,MACjF,MACF,KAAK2tB,EACHokD,EAAO9oD,YACP,MACF,QACEuF,EAAK,uCAAuC8iC,EAAKtxD,EAAI,MAI3DsxD,EAAOygB,CACT,CACA1/C,GAAKsB,wBAAwBjB,EAAQwM,GAAoBjlC,KAAKklC,KAAMllC,KAAKkW,QAAQuiB,QACjFz4B,KAAK63E,GAAIxgB,EACX,CACA,SAAAroC,GACEhvB,KAAKklC,IAAIlW,WACX,CACA,MAAAE,CAAOmoC,EAAM0gB,GAAc,GACzB,MAAM7yC,EAAMllC,KAAKklC,IACX6jC,EAAc/oE,KAAKkW,QAAQ6yD,YAEjC,GADA7jC,EAAI8pC,YAAchvE,KAAKkW,QAAQu2D,YAC3BzsE,KAAK6wE,eACP,GAA2B,iBAAhB9H,GAA4BA,GAAalI,WAAY,CAC9D,MAAM0B,EAAgBwG,EAAYnI,8BAAgC17B,EAAIC,eAAiB,KAGvF,GAFAD,EAAI1W,OACJ0W,EAAI2jC,YAAcE,EAAYlI,WAAW37B,EAAKllC,KAAMolC,GAA2BF,GAAMq7B,IACjFgC,EAAe,CACjB,MAAMyV,EAAU,IAAI1gB,OACpB0gB,EAAQC,QAAQ5gB,EAAMnyB,EAAIC,eAAeE,aAAa6yC,aAAa3V,IACnElL,EAAO2gB,CACT,CACAh4E,KAAKm4E,iBAAiB9gB,GAAM,GAC5BnyB,EAAIzW,SACN,MACEzuB,KAAKm4E,iBAAiB9gB,GAAM,GAG5B0gB,GACF/3E,KAAK+3E,YAAY1gB,EAAMr3D,KAAKkW,QAAQ8rD,0BAA0BzB,GAAiBt7B,GAAoBjlC,KAAKklC,OAE1GA,EAAI8pC,YAAchvE,KAAKkW,QAAQs2D,SACjC,CACA,WAAAr9C,CAAYkoC,GACVr3D,KAAKkvB,OAAOmoC,EACd,CACA,IAAAjoC,CAAKioC,EAAM0gB,GAAc,GACvB,MAAM7yC,EAAMllC,KAAKklC,IACX4jC,EAAY9oE,KAAKkW,QAAQ4yD,UAE/B,IAAIsP,GAAc,EAClB,GAFsBp4E,KAAKkW,QAAQo2D,YAEhB,CACjB,MAAM/J,EAAgBuG,EAAUlI,8BAAgC17B,EAAIC,eAAiB,KAGrF,GAFAD,EAAI1W,OACJ0W,EAAIs9B,UAAYsG,EAAUjI,WAAW37B,EAAKllC,KAAMolC,GAA2BF,GAAMq7B,IAC7EgC,EAAe,CACjB,MAAMyV,EAAU,IAAI1gB,OACpB0gB,EAAQC,QAAQ5gB,EAAMnyB,EAAIC,eAAeE,aAAa6yC,aAAa3V,IACnElL,EAAO2gB,CACT,CACAI,GAAc,CAChB,CACA,MAAMh9C,EAAYp7B,KAAKkW,QAAQ8rD,4BAC3BhiE,KAAK6wE,gBAAgC,OAAdz1C,IACrBp7B,KAAKqwE,eACPnrC,EAAI9V,KAAKioC,EAAM,WACfr3D,KAAKqwE,eAAgB,GAErBnrC,EAAI9V,KAAKioC,IAGT+gB,GACFlzC,EAAIzW,UAEFspD,GACF/3E,KAAK+3E,YAAY1gB,EAAMj8B,EAE3B,CACA,MAAA/L,CAAOgoC,GACLr3D,KAAKqwE,eAAgB,EACrBrwE,KAAKovB,KAAKioC,EACZ,CACA,UAAA/nC,CAAW+nC,GACTr3D,KAAKovB,KAAKioC,GAAM,GAChBr3D,KAAKkvB,OAAOmoC,GAAM,GAClBr3D,KAAK+3E,YAAY1gB,EACnB,CACA,YAAA9nC,CAAa8nC,GACXr3D,KAAKqwE,eAAgB,EACrBrwE,KAAKsvB,WAAW+nC,EAClB,CACA,eAAA7nC,CAAgB6nC,GACdr3D,KAAKsvB,WAAW+nC,EAClB,CACA,iBAAA5nC,CAAkB4nC,GAChBr3D,KAAKqwE,eAAgB,EACrBrwE,KAAKsvB,WAAW+nC,EAClB,CACA,OAAA3nC,CAAQ2nC,GACNr3D,KAAK+3E,YAAY1gB,EACnB,CACA,WAAA5jC,CAAY4jC,GACVr3D,KAAKklC,IAAI9V,KAAKioC,EAChB,CACA,IAAA1nC,GACE3vB,KAAKowE,YAAcT,EACrB,CACA,MAAA//C,GACE5vB,KAAKowE,YAAcR,EACrB,CACA,SAAA//C,GACE7vB,KAAKkW,QAAQy1D,WAAa,KAC1B3rE,KAAKkW,QAAQ01D,gBAAkB,EAC/B5rE,KAAKkW,QAAQhT,EAAIlD,KAAKkW,QAAQ61D,MAAQ,EACtC/rE,KAAKkW,QAAQ0lB,EAAI57B,KAAKkW,QAAQ81D,MAAQ,CACxC,CACA,OAAAl8C,GACE,MAAMuoD,EAAQr4E,KAAKs4E,iBACbpzC,EAAMllC,KAAKklC,IACjB,QAAcxlC,IAAV24E,EACF,OAEF,MAAML,EAAU,IAAI1gB,OACdihB,EAAYrzC,EAAIC,eAAeE,aACrC,IAAK,MAAM,UACT3W,EAAS,EACTxrB,EAAC,EACD04B,EAAC,SACD6vC,EAAQ,KACRpU,KACGghB,EACHL,EAAQC,QAAQ5gB,EAAM,IAAIsI,UAAUjxC,GAAW8pD,gBAAgBD,GAAWtwB,UAAU/kD,EAAG04B,GAAGuE,MAAMsrC,GAAWA,IAE7GvmC,EAAIvV,KAAKqoD,UACFh4E,KAAKs4E,gBACd,CACA,cAAAvoD,CAAe0oD,GACbz4E,KAAKkW,QAAQ+1D,YAAcwM,CAC7B,CACA,cAAAzoD,CAAeyoD,GACbz4E,KAAKkW,QAAQg2D,YAAcuM,CAC7B,CACA,SAAAxoD,CAAUkQ,GACRngC,KAAKkW,QAAQi2D,WAAahsC,EAAQ,GACpC,CACA,UAAAjQ,CAAW47C,GACT9rE,KAAKkW,QAAQ41D,SAAWA,CAC1B,CACA,OAAA37C,CAAQuoD,EAAa7oE,GACnB,MAAM8oE,EAAU34E,KAAK+vE,WAAW5xE,IAAIu6E,GAC9BxiE,EAAUlW,KAAKkW,QACrB,IAAKyiE,EACH,MAAM,IAAItiE,MAAM,uBAAuBqiE,KAczC,GAZAxiE,EAAQ21D,WAAa8M,EAAQ9M,YAAcxiD,EACb,IAA1BnT,EAAQ21D,WAAW,IAAsC,IAA1B31D,EAAQ21D,WAAW,IACpDt3C,EAAK,gCAAkCmkD,GAErC7oE,EAAO,GACTA,GAAQA,EACRqG,EAAQ0iE,eAAiB,GAEzB1iE,EAAQ0iE,cAAgB,EAE1B54E,KAAKkW,QAAQ4+C,KAAO6jB,EACpB34E,KAAKkW,QAAQu1D,SAAW57D,EACpB8oE,EAAQE,YACV,OAEF,MAAM55E,EAAO05E,EAAQnkB,YAAc,aAC7BskB,EAAWH,EAAQtkB,gBAAgBsC,KAAO,IAAI13D,OAAU05E,EAAQI,eACtE,IAAIC,EAAO,SACPL,EAAQvP,MACV4P,EAAO,MACEL,EAAQK,OACjBA,EAAO,QAET,MAAMC,EAASN,EAAQM,OAAS,SAAW,SAC3C,IAAIC,EAAkBrpE,EAClBA,EAzjCc,GA0jChBqpE,EA1jCgB,GA2jCPrpE,EA1jCO,MA2jChBqpE,EA3jCgB,KA6jClBl5E,KAAKkW,QAAQw1D,cAAgB77D,EAAOqpE,EACpCl5E,KAAKklC,IAAI4vB,KAAO,GAAGmkB,KAAUD,KAAQE,OAAqBJ,GAC5D,CACA,oBAAA1oD,CAAqBlR,GACnBlf,KAAKkW,QAAQk2D,kBAAoBltD,CACnC,CACA,WAAAmR,CAAY8oD,GACVn5E,KAAKkW,QAAQm2D,SAAW8M,CAC1B,CACA,QAAA7oD,CAASptB,EAAG04B,GACV57B,KAAKkW,QAAQhT,EAAIlD,KAAKkW,QAAQ61D,OAAS7oE,EACvClD,KAAKkW,QAAQ0lB,EAAI57B,KAAKkW,QAAQ81D,OAASpwC,CACzC,CACA,kBAAArL,CAAmBrtB,EAAG04B,GACpB57B,KAAKkwB,YAAY0L,GACjB57B,KAAKswB,SAASptB,EAAG04B,EACnB,CACA,aAAApL,CAAcuK,GACZ,MAAM,QACJ7kB,GACElW,KACJkW,EAAQy1D,WAAa5wC,EACrB7kB,EAAQ01D,gBAAkB7oE,KAAKihD,MAAMjpB,EAAO,GAAIA,EAAO,IACvD7kB,EAAQhT,EAAIgT,EAAQ61D,MAAQ,EAC5B71D,EAAQ0lB,EAAI1lB,EAAQ81D,MAAQ,CAC9B,CACA,QAAAv7C,GACEzwB,KAAKswB,SAAS,EAAGtwB,KAAKkW,QAAQ41D,QAChC,CACA,IAAezU,EAAMqc,EAAkBhlD,GACrC,MAAMspD,EAAU,IAAI1gB,OAEpB,OADA0gB,EAAQC,QAAQ5gB,EAAM,IAAIsI,UAAUjxC,GAAW2W,aAAa6yC,aAAaxE,IAClEsE,CACT,CACA,SAAAoB,CAAUliB,EAAWh0D,EAAG04B,EAAGy9C,EAAsBC,GAC/C,MAAMp0C,EAAMllC,KAAKklC,IACXhvB,EAAUlW,KAAKkW,QACf4+C,EAAO5+C,EAAQ4+C,KACfsX,EAAoBl2D,EAAQk2D,kBAC5BX,EAAWv1D,EAAQu1D,SAAWv1D,EAAQw1D,cACtC6N,EAAiBnN,EAAoBvgD,EACrC2tD,KAAoBpN,EAAoBvgD,GACxCygD,EAAcp2D,EAAQo2D,cAAgBxX,EAAKE,YAC3CuX,EAAgBr2D,EAAQq2D,gBAAkBzX,EAAKE,YACrD,IAAIqC,EAIJ,IAHIvC,EAAKR,iBAAmBklB,GAAkBlN,GAAeC,KAC3DlV,EAAOvC,EAAKkC,iBAAiBh3D,KAAK+vE,WAAY7Y,IAE5CpC,EAAKR,iBAAmBgY,GAAeC,EAAe,CAIxD,IAAImH,EAUJ,GAbAxuC,EAAI1W,OACJ0W,EAAI+iB,UAAU/kD,EAAG04B,GACjBsJ,EAAI/E,MAAMsrC,GAAWA,GAEjB8N,IAAmB1tD,GAA0B0tD,IAAmB1tD,IAC9DwtD,GACF3F,EAAmBxuC,EAAIC,eACvBD,EAAIy9B,gBAAgB0W,GACpBn0C,EAAI9V,KAAKpvB,MAAK,GAAeq3D,EAAMqc,EAAkB2F,KAErDn0C,EAAI9V,KAAKioC,IAGTkiB,IAAmB1tD,GAA4B0tD,IAAmB1tD,EACpE,GAAIytD,EAAwB,CAC1B5F,IAAqBxuC,EAAIC,eACzBD,EAAIy9B,gBAAgB2W,GACpB,MAAM,EACJj+D,EAAC,EACDC,EAAC,EACDvD,EAAC,EACD0hB,GACEi6C,EACE+F,EAAsBrhD,GAAKyC,iBAAiBy+C,GAC5C5uB,EAAStyB,GAAK1J,UAAU,CAACrT,EAAGC,EAAGvD,EAAG0hB,EAAG,EAAG,GAAIggD,GAClDrhD,GAAK0C,8BAA8B4vB,EAAQof,IAC3C5kC,EAAIwnC,WAAa3pE,KAAKkO,IAAI64D,GAAG,GAAIA,GAAG,IAAM2B,EAC1CvmC,EAAIhW,OAAOlvB,MAAK,GAAeq3D,EAAMqc,EAAkB4F,GACzD,MACEp0C,EAAIwnC,WAAajB,EACjBvmC,EAAIhW,OAAOmoC,GAGfnyB,EAAIzW,SACN,MACM8qD,IAAmB1tD,GAA0B0tD,IAAmB1tD,GAClEqZ,EAAImxB,SAASa,EAAWh0D,EAAG04B,GAEzB29C,IAAmB1tD,GAA4B0tD,IAAmB1tD,GACpEqZ,EAAIw0C,WAAWxiB,EAAWh0D,EAAG04B,GAGjC,GAAI49C,EAAgB,EACJx5E,KAAKs4E,mBAAqB,IAClC/vE,KAAK,CACTmmB,UAAWuW,GAAoBC,GAC/BhiC,IACA04B,IACA6vC,WACApU,QAEJ,CACF,CACA,2BAAIsiB,GACF,MACE92D,QAASqiB,GACPllC,KAAKkiE,eAAeC,UAAU,0BAA2B,GAAI,IACjEj9B,EAAI/E,MAAM,IAAK,GACf+E,EAAImxB,SAAS,IAAK,EAAG,IACrB,MAAM/oD,EAAO43B,EAAIuG,aAAa,EAAG,EAAG,GAAI,IAAIn+B,KAC5C,IAAI6zC,GAAU,EACd,IAAK,IAAIp7C,EAAI,EAAGA,EAAIuH,EAAK9P,OAAQuI,GAAK,EACpC,GAAIuH,EAAKvH,GAAK,GAAKuH,EAAKvH,GAAK,IAAK,CAChCo7C,GAAU,EACV,KACF,CAEF,OAAO1rB,EAAOz1B,KAAM,0BAA2BmhD,EACjD,CACA,QAAAzwB,CAASkpD,GACP,MAAM1jE,EAAUlW,KAAKkW,QACf4+C,EAAO5+C,EAAQ4+C,KACrB,GAAIA,EAAK+jB,YACP,OAAO74E,KAAK65E,cAAcD,GAE5B,MAAMnO,EAAWv1D,EAAQu1D,SACzB,GAAiB,IAAbA,EACF,OAEF,MAAMvmC,EAAMllC,KAAKklC,IACXwmC,EAAgBx1D,EAAQw1D,cACxBO,EAAc/1D,EAAQ+1D,YACtBC,EAAch2D,EAAQg2D,YACtB0M,EAAgB1iE,EAAQ0iE,cACxBzM,EAAaj2D,EAAQi2D,WAAayM,EAClCkB,EAAeF,EAAOp8E,OACtBu8E,EAAWjlB,EAAKilB,SAChBC,EAAaD,EAAW,GAAK,EAC7BE,EAAkBnlB,EAAKmlB,gBACvBC,EAAoBzO,EAAWv1D,EAAQ21D,WAAW,GAClDsO,EAAiBjkE,EAAQk2D,oBAAsBvgD,IAA2BipC,EAAKR,kBAAoBp+C,EAAQo2D,YAWjH,IAAI+M,EAAsBC,EAC1B,GAXAp0C,EAAI1W,OACAtY,EAAQy1D,YACVzmC,EAAIxW,aAAaxY,EAAQy1D,YAE3BzmC,EAAI+iB,UAAU/xC,EAAQhT,EAAGgT,EAAQ0lB,EAAI1lB,EAAQm2D,UACzCuM,EAAgB,EAClB1zC,EAAI/E,MAAMgsC,GAAa,GAEvBjnC,EAAI/E,MAAMgsC,EAAY,GAGpBj2D,EAAQo2D,YAAa,CACvBpnC,EAAI1W,OACJ,MAAMszC,EAAU5rD,EAAQ4yD,UAAUjI,WAAW37B,EAAKllC,KAAMolC,GAA2BF,GAAMq7B,IACzF8Y,EAAuBp0C,GAAoBC,GAC3CA,EAAIzW,UACJyW,EAAIs9B,UAAYV,CAClB,CACA,GAAI5rD,EAAQq2D,cAAe,CACzBrnC,EAAI1W,OACJ,MAAMszC,EAAU5rD,EAAQ6yD,YAAYlI,WAAW37B,EAAKllC,KAAMolC,GAA2BF,GAAMq7B,IAC3F+Y,EAAyBr0C,GAAoBC,GAC7CA,EAAIzW,UACJyW,EAAI2jC,YAAc/G,CACpB,CACA,IAAI4K,EAAYx2D,EAAQw2D,UACxB,MAAMvsC,EAAQjqB,EAAQ01D,gBACtB,GAAc,IAAVzrC,GAA6B,IAAdusC,EAAiB,CAClC,MAAM6M,EAAiBrjE,EAAQk2D,kBAAoBvgD,EAC/C0tD,IAAmB1tD,GAA4B0tD,IAAmB1tD,IACpE6gD,EAAY1sE,KAAKo6E,sBAErB,MACE1N,GAAavsC,EAOf,GALsB,IAAlBurC,IACFxmC,EAAI/E,MAAMurC,EAAeA,GACzBgB,GAAahB,GAEfxmC,EAAIwnC,UAAYA,EACZ5X,EAAKulB,mBAAoB,CAC3B,MAAMC,EAAQ,GACd,IAAIt5C,EAAQ,EACZ,IAAK,MAAMu5C,KAASX,EAClBU,EAAM/xE,KAAKgyE,EAAMC,SACjBx5C,GAASu5C,EAAMv5C,MAMjB,OAJAkE,EAAImxB,SAASikB,EAAM37E,KAAK,IAAK,EAAG,GAChCuX,EAAQhT,GAAK89B,EAAQk5C,EAAoB/N,EACzCjnC,EAAIzW,eACJzuB,KAAKw2E,SAEP,CACA,IACEzwE,EADE7C,EAAI,EAER,IAAK6C,EAAI,EAAGA,EAAI+zE,IAAgB/zE,EAAG,CACjC,MAAMw0E,EAAQX,EAAO7zE,GACrB,GAAqB,iBAAVw0E,EAAoB,CAC7Br3E,GAAK82E,EAAaO,EAAQ9O,EAAW,IACrC,QACF,CACA,IAAIgP,GAAgB,EACpB,MAAMhC,GAAW8B,EAAMG,QAAUxO,EAAc,GAAKD,EAC9C/U,EAAYqjB,EAAMI,SAClBC,EAASL,EAAMK,OACrB,IAAIC,EAASC,EACT95C,EAAQu5C,EAAMv5C,MAClB,GAAI+4C,EAAU,CACZ,MAAMgB,EAAUR,EAAMQ,SAAWd,EAC3Be,IAAOT,EAAMQ,QAAUA,EAAQ,GAAa,GAAR/5C,GAAek5C,EACnDe,EAAKF,EAAQ,GAAKb,EACxBl5C,EAAQ+5C,GAAWA,EAAQ,GAAK/5C,EAChC65C,EAAUG,EAAKtP,EACfoP,GAAW53E,EAAI+3E,GAAMvP,CACvB,MACEmP,EAAU33E,EAAIwoE,EACdoP,EAAU,EAEZ,GAAIhmB,EAAKomB,WAAal6C,EAAQ,EAAG,CAC/B,MAAMm6C,EAAmD,IAAnCj2C,EAAIk2C,YAAYlkB,GAAWl2B,MAAeyqC,EAAWC,EAC3E,GAAI1qC,EAAQm6C,GAAiBn7E,KAAK25E,wBAAyB,CACzD,MAAM0B,EAAkBr6C,EAAQm6C,EAChCV,GAAgB,EAChBv1C,EAAI1W,OACJ0W,EAAI/E,MAAMk7C,EAAiB,GAC3BR,GAAWQ,CACb,MAAWr6C,IAAUm6C,IACnBN,IAAY75C,EAAQm6C,GAAiB,IAAO1P,EAAWC,EAE3D,CACA,GAAI1rE,KAAK6wE,iBAAmB0J,EAAMe,UAAYxmB,EAAKE,aACjD,GAAImlB,IAAmBS,EACrB11C,EAAImxB,SAASa,EAAW2jB,EAASC,QAGjC,GADA96E,KAAKo5E,UAAUliB,EAAW2jB,EAASC,EAASzB,EAAsBC,GAC9DsB,EAAQ,CACV,MAAMW,EAAgBV,EAAUpP,EAAWmP,EAAO/kB,OAAO3yD,EAAIwoE,EACvD8P,EAAgBV,EAAUrP,EAAWmP,EAAO/kB,OAAOj6B,EAAI8vC,EAC7D1rE,KAAKo5E,UAAUwB,EAAOD,SAAUY,EAAeC,EAAenC,EAAsBC,EACtF,CAIJp2E,GADkB62E,EAAW/4C,EAAQk5C,EAAoBzB,EAAUG,EAAgB53C,EAAQk5C,EAAoBzB,EAAUG,EAErH6B,GACFv1C,EAAIzW,SAER,CACIsrD,EACF7jE,EAAQ0lB,GAAK14B,EAEbgT,EAAQhT,GAAKA,EAAIipE,EAEnBjnC,EAAIzW,UACJzuB,KAAKw2E,SAEP,CACA,aAAAqD,CAAcD,GACZ,MAAM10C,EAAMllC,KAAKklC,IACXhvB,EAAUlW,KAAKkW,QACf4+C,EAAO5+C,EAAQ4+C,KACf2W,EAAWv1D,EAAQu1D,SACnBmN,EAAgB1iE,EAAQ0iE,cACxBoB,EAAallB,EAAKilB,SAAW,GAAK,EAClC9N,EAAc/1D,EAAQ+1D,YACtBC,EAAch2D,EAAQg2D,YACtBC,EAAaj2D,EAAQi2D,WAAayM,EAClC/M,EAAa31D,EAAQ21D,YAAcxiD,EACnCywD,EAAeF,EAAOp8E,OAE5B,IAAIuI,EAAGw0E,EAAOv5C,EAAOy6C,EACrB,KAFwBvlE,EAAQk2D,oBAAsBvgD,IAElB,IAAb4/C,EAAvB,CAWA,IARAzrE,KAAKkxE,wBAAwB,IAAM,EACnClxE,KAAKmxE,2BAA6B,KAClCjsC,EAAI1W,OACAtY,EAAQy1D,YACVzmC,EAAIxW,aAAaxY,EAAQy1D,YAE3BzmC,EAAI+iB,UAAU/xC,EAAQhT,EAAGgT,EAAQ0lB,EAAI1lB,EAAQm2D,UAC7CnnC,EAAI/E,MAAMgsC,EAAYyM,GACjB7yE,EAAI,EAAGA,EAAI+zE,IAAgB/zE,EAAG,CAEjC,GADAw0E,EAAQX,EAAO7zE,GACM,iBAAVw0E,EAAoB,CAC7BkB,EAAgBzB,EAAaO,EAAQ9O,EAAW,IAChDzrE,KAAKklC,IAAI+iB,UAAUwzB,EAAe,GAClCvlE,EAAQhT,GAAKu4E,EAAgBtP,EAC7B,QACF,CACA,MAAMsM,GAAW8B,EAAMG,QAAUxO,EAAc,GAAKD,EAC9CvF,EAAe5R,EAAK4mB,qBAAqBnB,EAAMoB,gBAChDjV,EAEM1mE,KAAK6wE,iBACd7wE,KAAKwuB,OACL0W,EAAI/E,MAAMsrC,EAAUA,GACpBvmC,EAAIxW,aAAam9C,GACjB7rE,KAAKgoE,oBAAoBtB,GACzB1mE,KAAKyuB,WANL8F,EAAK,oBAAoBgmD,EAAMoB,qCAQjC,MAAM9iD,EAAI,CAAC0hD,EAAMv5C,MAAO,GACxB5I,GAAKQ,eAAeC,EAAGgzC,GACvB7qC,EAAQnI,EAAE,GAAK4yC,EAAWgN,EAC1BvzC,EAAI+iB,UAAUjnB,EAAO,GACrB9qB,EAAQhT,GAAK89B,EAAQmrC,CACvB,CACAjnC,EAAIzW,SAlCJ,CAmCF,CACA,YAAAqC,CAAa8qD,EAAQC,GAAS,CAC9B,qBAAA9qD,CAAsB6qD,EAAQC,EAAQC,EAAKC,EAAKC,EAAKC,GACnD,MAAMtsD,EAAO,IAAI2nC,OACjB3nC,EAAKgK,KAAKmiD,EAAKC,EAAKC,EAAMF,EAAKG,EAAMF,GACrC/7E,KAAKklC,IAAIvV,KAAKA,GACd3vB,KAAK0vB,SACP,CACA,iBAAAwsD,CAAkBnb,GAChB,IAAIe,EACJ,GAAc,kBAAVf,EAAG,GAAwB,CAC7B,MAAMwB,EAAgBviE,KAAKuiE,eAAiBt9B,GAAoBjlC,KAAKklC,KAC/DuhC,EAAwB,CAC5BmB,qBAAsB1iC,GAAO,IAAI2qC,GAAe3qC,EAAKllC,KAAK+vE,WAAY/vE,KAAKi3D,KAAMj3D,KAAKiqE,cAAejqE,KAAKkzC,cAAe,CACvH88B,sBAAuBhwE,KAAKgwE,sBAC5BC,mBAAoBjwE,KAAKiwE,sBAG7BnO,EAAU,IAAI0E,GAAczF,EAAI/gE,KAAKklC,IAAKuhC,EAAuBlE,EACnE,MACET,EAAU9hE,KAAKm8E,YAAYpb,EAAG,GAAIA,EAAG,IAEvC,OAAOe,CACT,CACA,eAAA3wC,GACEnxB,KAAKkW,QAAQ6yD,YAAc/oE,KAAKk8E,kBAAkB3+E,WAClDyC,KAAKkW,QAAQq2D,eAAgB,CAC/B,CACA,aAAAl7C,GACErxB,KAAKkW,QAAQ4yD,UAAY9oE,KAAKk8E,kBAAkB3+E,WAChDyC,KAAKkW,QAAQo2D,aAAc,CAC7B,CACA,iBAAA96C,CAAkBuT,GAChB/kC,KAAKklC,IAAI2jC,YAAc7oE,KAAKkW,QAAQ6yD,YAAchkC,EAClD/kC,KAAKkW,QAAQq2D,eAAgB,CAC/B,CACA,oBAAAh5C,GACEvzB,KAAKklC,IAAI2jC,YAAc7oE,KAAKkW,QAAQ6yD,YAAc,cAClD/oE,KAAKkW,QAAQq2D,eAAgB,CAC/B,CACA,eAAA96C,CAAgBsT,GACd/kC,KAAKklC,IAAIs9B,UAAYxiE,KAAKkW,QAAQ4yD,UAAY/jC,EAC9C/kC,KAAKkW,QAAQo2D,aAAc,CAC7B,CACA,kBAAA94C,GACExzB,KAAKklC,IAAIs9B,UAAYxiE,KAAKkW,QAAQ4yD,UAAY,cAC9C9oE,KAAKkW,QAAQo2D,aAAc,CAC7B,CACA,WAAA6P,CAAYhlB,EAAOp8B,EAAS,MAC1B,IAAI+mC,EAUJ,OATI9hE,KAAK8wE,eAAensE,IAAIwyD,GAC1B2K,EAAU9hE,KAAK8wE,eAAe3yE,IAAIg5D,IAElC2K,EAhuDN,SAA2Bf,GACzB,OAAQA,EAAG,IACT,IAAK,cACH,OAAO,IAAID,GAA0BC,GACvC,IAAK,OACH,OAAO,IAAIoE,GAAmBpE,GAChC,IAAK,QACH,OAAO,IAAIuF,GAEf,MAAM,IAAIjwD,MAAM,oBAAoB0qD,EAAG,KACzC,CAstDgBqb,CAAkBp8E,KAAKqxE,UAAUla,IAC3Cn3D,KAAK8wE,eAAepsE,IAAIyyD,EAAO2K,IAE7B/mC,IACF+mC,EAAQ/mC,OAASA,GAEZ+mC,CACT,CACA,WAAAlwC,CAAYulC,GACV,IAAKn3D,KAAK6wE,eACR,OAEF,MAAM3rC,EAAMllC,KAAKklC,IACjBllC,KAAKwuB,OACL,MAAMszC,EAAU9hE,KAAKm8E,YAAYhlB,GACjCjyB,EAAIs9B,UAAYV,EAAQjB,WAAW37B,EAAKllC,KAAMolC,GAA2BF,GAAMq7B,IAC/E,MAAM8b,EAAMj3C,GAA2BF,GACvC,GAAIm3C,EAAK,CACP,MAAM,MACJr7C,EAAK,OACLC,GACEiE,EAAI+H,OACFxU,EAASsxC,GAAatrE,QAC5B25B,GAAKsB,wBAAwB,CAAC,EAAG,EAAGsH,EAAOC,GAASo7C,EAAK5jD,GACzD,MAAOqD,EAAIC,EAAIC,EAAIC,GAAMxD,EACzBz4B,KAAKklC,IAAIwsC,SAAS51C,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,EAC1C,MACE/7B,KAAKklC,IAAIwsC,UAAU,MAAO,KAAM,KAAM,MAExC1xE,KAAKw2E,QAAQx2E,KAAKkW,QAAQ8rD,6BAC1BhiE,KAAKyuB,SACP,CACA,gBAAAoD,GACE2C,EAAY,mCACd,CACA,cAAA1C,GACE0C,EAAY,iCACd,CACA,qBAAAhC,CAAsBuI,EAAQ0lC,GAC5B,GAAKzgE,KAAK6wE,iBAGV7wE,KAAKwuB,OACLxuB,KAAKwwE,mBAAmBjoE,KAAKvI,KAAKuiE,eAC9BxnC,GACF/6B,KAAK0uB,aAAaqM,GAEpB/6B,KAAKuiE,cAAgBt9B,GAAoBjlC,KAAKklC,KAC1Cu7B,GAAM,CACRroC,GAAKsB,wBAAwB+mC,EAAMzgE,KAAKuiE,cAAeviE,KAAKkW,QAAQuiB,QACpE,MAAOqD,EAAIC,EAAIC,EAAIC,GAAMwkC,EACnB9wC,EAAO,IAAI2nC,OACjB3nC,EAAKgK,KAAKmC,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,GAChC/7B,KAAKklC,IAAIvV,KAAKA,GACd3vB,KAAK0vB,SACP,CACF,CACA,mBAAA+C,GACOzyB,KAAK6wE,iBAGV7wE,KAAKyuB,UACLzuB,KAAKuiE,cAAgBviE,KAAKwwE,mBAAmBoH,MAC/C,CACA,UAAAllD,CAAW4pD,GACT,IAAKt8E,KAAK6wE,eACR,OAEF7wE,KAAKwuB,OACDxuB,KAAK2yE,cACP3yE,KAAK80E,eACL90E,KAAKkW,QAAQy2D,YAAc,MAE7B,MAAM4P,EAAav8E,KAAKklC,IACnBo3C,EAAME,UACTroD,EAAK,sCAEHmoD,EAAMG,UACRloD,EAAK,kCAEP,MAAMm/C,EAAmBzuC,GAAoBs3C,GAI7C,GAHID,EAAMvhD,QACRwhD,EAAW7tD,aAAa4tD,EAAMvhD,SAE3BuhD,EAAM7b,KACT,MAAM,IAAIpqD,MAAM,6BAElB,IAAIqmE,EAAS3S,GAAatrE,QAC1B25B,GAAKsB,wBAAwB4iD,EAAM7b,KAAMx7B,GAAoBs3C,GAAaG,GAC1E,MAAMC,EAAe,CAAC,EAAG,EAAGJ,EAAWtvC,OAAOjM,MAAOu7C,EAAWtvC,OAAOhM,QACvEy7C,EAAStkD,GAAKgD,UAAUshD,EAAQC,IAAiB,CAAC,EAAG,EAAG,EAAG,GAC3D,MAAMt8C,EAAUt9B,KAAKC,MAAM05E,EAAO,IAC5Bp8C,EAAUv9B,KAAKC,MAAM05E,EAAO,IAC5BxI,EAAanxE,KAAKkO,IAAIlO,KAAKD,KAAK45E,EAAO,IAAMr8C,EAAS,GACtD8zC,EAAcpxE,KAAKkO,IAAIlO,KAAKD,KAAK45E,EAAO,IAAMp8C,EAAS,GAC7DtgC,KAAKkW,QAAQg3D,uBAAuB,CAAC,EAAG,EAAGgH,EAAYC,IACvD,IAAIY,EAAU,UAAY/0E,KAAK6nE,WAC3ByU,EAAM5F,QACR3B,GAAW,UAAY/0E,KAAK0wE,eAAiB,GAE/C,MAAMsE,EAAgBh1E,KAAKkiE,eAAeC,UAAU4S,EAASb,EAAYC,GACnEyI,EAAW5H,EAAcnyD,QAC/B+5D,EAAS30B,WAAW5nB,GAAUC,GAC9Bs8C,EAASluD,aAAaglD,GACtB,IAAI/jD,EAAO,IAAI2nC,OACf,MAAOx7B,EAAIC,EAAIC,EAAIC,GAAMqgD,EAAM7b,KAE/B,GADA9wC,EAAKgK,KAAKmC,EAAIC,EAAIC,EAAKF,EAAIG,EAAKF,GAC5BugD,EAAMvhD,OAAQ,CAChB,MAAMs8B,EAAO,IAAIC,OACjBD,EAAK4gB,QAAQtoD,EAAM,IAAIgwC,UAAU2c,EAAMvhD,SACvCpL,EAAO0nC,CACT,CACAulB,EAASjtD,KAAKA,GACV2sD,EAAM5F,MACR12E,KAAKywE,WAAWloE,KAAK,CACnB0kC,OAAQ+nC,EAAc/nC,OACtBpqB,QAAS+5D,EACTv8C,UACAC,UACA62C,QAASmF,EAAM5F,MAAMS,QACrBC,SAAUkF,EAAM5F,MAAMU,SACtBC,YAAaiF,EAAM5F,MAAMW,aAAe,KACxCwF,sBAAuB,QAGzBN,EAAW5Z,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GACvC4Z,EAAWt0B,UAAU5nB,EAASC,GAC9Bi8C,EAAW/tD,QAEb8/C,GAAaiO,EAAYK,GACzB58E,KAAKklC,IAAM03C,EACX58E,KAAKuuB,UAAU,CAAC,CAAC,KAAM,eAAgB,CAAC,KAAM,GAAI,CAAC,KAAM,KACzDvuB,KAAKuwE,WAAWhoE,KAAKg0E,GACrBv8E,KAAK6nE,YACP,CACA,QAAAl1C,CAAS2pD,GACP,IAAKt8E,KAAK6wE,eACR,OAEF7wE,KAAK6nE,aACL,MAAM+U,EAAW58E,KAAKklC,IAChBA,EAAMllC,KAAKuwE,WAAWqH,MAG5B,GAFA53E,KAAKklC,IAAMA,EACXllC,KAAKklC,IAAIovC,uBAAwB,EAC7BgI,EAAM5F,MACR12E,KAAK2wE,UAAY3wE,KAAKywE,WAAWmH,MACjC53E,KAAKyuB,cACA,CACLzuB,KAAKklC,IAAIzW,UACT,MAAMquD,EAAa73C,GAAoBjlC,KAAKklC,KAC5CllC,KAAKyuB,UACLzuB,KAAKklC,IAAI1W,OACTxuB,KAAKklC,IAAIy9B,gBAAgBma,GACzB,MAAMrG,EAAW1M,GAAatrE,QAC9B25B,GAAKsB,wBAAwB,CAAC,EAAG,EAAGkjD,EAAS3vC,OAAOjM,MAAO47C,EAAS3vC,OAAOhM,QAAS67C,EAAYrG,GAChGz2E,KAAKklC,IAAIsG,UAAUoxC,EAAS3vC,OAAQ,EAAG,GACvCjtC,KAAKklC,IAAIzW,UACTzuB,KAAKw2E,QAAQC,EACf,CACF,CACA,eAAA7jD,CAAgBpjB,EAAImqB,EAAMjL,EAAWqM,EAAQgiD,GAQ3C,GAPA/8E,MAAK,KACL8uE,GAAkB9uE,KAAKklC,KACvBllC,KAAKklC,IAAI1W,OACTxuB,KAAKwuB,OACDxuB,KAAKuiE,eACPviE,KAAKklC,IAAIy9B,gBAAgB3iE,KAAKuiE,eAE5B5oC,EAAM,CACR,MAAMqH,EAAQrH,EAAK,GAAKA,EAAK,GACvBsH,EAAStH,EAAK,GAAKA,EAAK,GAC9B,GAAIojD,GAAgB/8E,KAAKkwE,oBAAqB,EAC5CxhD,EAAYA,EAAUjwB,SACZ,IAAMk7B,EAAK,GACrBjL,EAAU,IAAMiL,EAAK,IACrBA,EAAOA,EAAKl7B,SACP,GAAKk7B,EAAK,GAAK,EACpBA,EAAK,GAAKqH,EACVrH,EAAK,GAAKsH,EACV7I,GAAK0C,8BAA8BmK,GAAoBjlC,KAAKklC,KAAM4kC,IAClE,MAAM,cACJiH,GACE/wE,KACEknE,EAAcnkE,KAAKD,KAAKk+B,EAAQhhC,KAAKgxE,aAAeD,GACpD5J,EAAepkE,KAAKD,KAAKm+B,EAASjhC,KAAKixE,aAAeF,GAC5D/wE,KAAKg9E,iBAAmBh9E,KAAKiqE,cAAc7+D,OAAO87D,EAAaC,GAC/D,MAAM,OACJl6B,EAAM,QACNpqB,GACE7iB,KAAKg9E,iBACTh9E,KAAKkwE,oBAAoBxrE,IAAI8K,EAAIy9B,GACjCjtC,KAAKg9E,iBAAiBC,SAAWj9E,KAAKklC,IACtCllC,KAAKklC,IAAMriB,EACX7iB,KAAKklC,IAAI1W,OACTxuB,KAAKklC,IAAIy9B,aAAamH,GAAG,GAAI,EAAG,GAAIA,GAAG,GAAI,EAAG7oC,EAAS6oC,GAAG,IAC1DgF,GAAkB9uE,KAAKklC,IACzB,KAAO,CACL4pC,GAAkB9uE,KAAKklC,KACvBllC,KAAK0vB,UACL,MAAMC,EAAO,IAAI2nC,OACjB3nC,EAAKgK,KAAKA,EAAK,GAAIA,EAAK,GAAIqH,EAAOC,GACnCjhC,KAAKklC,IAAIvV,KAAKA,EAChB,CACF,CACA3vB,KAAKkW,QAAU,IAAIq1D,GAAiBvrE,KAAKklC,IAAI+H,OAAOjM,MAAOhhC,KAAKklC,IAAI+H,OAAOhM,QAC3EjhC,KAAK0uB,aAAaA,GAClB1uB,KAAK0uB,aAAaqM,EACpB,CACA,aAAAlI,GACM7yB,KAAKg9E,mBACPh9E,KAAKklC,IAAIzW,UACTzuB,MAAK,KACLA,KAAKklC,IAAMllC,KAAKg9E,iBAAiBC,gBAC1Bj9E,KAAKg9E,iBAAiBC,gBACtBj9E,KAAKg9E,iBAEhB,CACA,qBAAAlqD,CAAsBkgD,GACpB,IAAKhzE,KAAK6wE,eACR,OAEF,MAAM7rD,EAAQguD,EAAIhuD,OAClBguD,EAAMhzE,KAAKqxE,UAAU2B,EAAI1lE,KAAM0lE,IAC3BhuD,MAAQA,EACZ,MAAMkgB,EAAMllC,KAAKklC,IACXipC,EAAOnuE,KAAKwzE,kBAAkBR,GAC9BY,EAAazF,EAAKlhC,OACxB/H,EAAI1W,OACJ0W,EAAIy9B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCz9B,EAAIsG,UAAUooC,EAAYzF,EAAK9tC,QAAS8tC,EAAK7tC,SAC7C4E,EAAIzW,UACJzuB,KAAKw2E,SACP,CACA,2BAAApjD,CAA4B4/C,EAAK5P,EAAQ8Z,EAAQ,EAAGC,EAAQ,EAAG9Z,EAAQ+Z,GACrE,IAAKp9E,KAAK6wE,eACR,OAEFmC,EAAMhzE,KAAKqxE,UAAU2B,EAAI1lE,KAAM0lE,GAC/B,MAAM9tC,EAAMllC,KAAKklC,IACjBA,EAAI1W,OACJ,MAAMklD,EAAmBzuC,GAAoBC,GAC7CA,EAAIxW,UAAU00C,EAAQ8Z,EAAOC,EAAO9Z,EAAQ,EAAG,GAC/C,MAAM8K,EAAOnuE,KAAKwzE,kBAAkBR,GACpC9tC,EAAIy9B,aAAa,EAAG,EAAG,EAAG,EAAGwL,EAAK9tC,QAAUqzC,EAAiB,GAAIvF,EAAK7tC,QAAUozC,EAAiB,IACjG,IAAK,IAAI3tE,EAAI,EAAGi8B,EAAKo7C,EAAU5/E,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACrD,MAAMs3E,EAAQjlD,GAAK1J,UAAUglD,EAAkB,CAACtQ,EAAQ8Z,EAAOC,EAAO9Z,EAAQ+Z,EAAUr3E,GAAIq3E,EAAUr3E,EAAI,KAC1Gm/B,EAAIsG,UAAU2iC,EAAKlhC,OAAQowC,EAAM,GAAIA,EAAM,GAC7C,CACAn4C,EAAIzW,UACJzuB,KAAKw2E,SACP,CACA,0BAAAzjD,CAA2BuqD,GACzB,IAAKt9E,KAAK6wE,eACR,OAEF,MAAM3rC,EAAMllC,KAAKklC,IACX4jC,EAAY9oE,KAAKkW,QAAQ4yD,UACzB2K,EAAgBzzE,KAAKkW,QAAQo2D,YACnC,IAAK,MAAMjhC,KAASiyC,EAAQ,CAC1B,MAAM,KACJhwE,EAAI,MACJ0zB,EAAK,OACLC,EAAM,UACNvS,GACE2c,EACEuoC,EAAa5zE,KAAKkiE,eAAeC,UAAU,aAAcnhC,EAAOC,GAChEq2C,EAAU1D,EAAW/wD,QAC3By0D,EAAQ9oD,OAER6/C,GAAmBiJ,EADPt3E,KAAKqxE,UAAU/jE,EAAM+9B,IAEjCisC,EAAQlI,yBAA2B,YACnCkI,EAAQ9U,UAAYiR,EAAgB3K,EAAUjI,WAAWyW,EAASt3E,KAAMolC,GAA2BF,GAAMq7B,IAAiBuI,EAC1HwO,EAAQ5F,SAAS,EAAG,EAAG1wC,EAAOC,GAC9Bq2C,EAAQ7oD,UACRyW,EAAI1W,OACJ0W,EAAIxW,aAAaA,GACjBwW,EAAI/E,MAAM,GAAI,GACdiqC,GAAyBllC,EAAK0uC,EAAW3mC,OAAQ,EAAG,EAAGjM,EAAOC,EAAQ,GAAI,EAAG,EAAG,GAChFiE,EAAIzW,SACN,CACAzuB,KAAKw2E,SACP,CACA,iBAAAxjD,CAAkBmkC,GAChB,IAAKn3D,KAAK6wE,eACR,OAEF,MAAMxD,EAAUrtE,KAAKqxE,UAAUla,GAC1BkW,EAILrtE,KAAKizB,wBAAwBo6C,GAH3B94C,EAAK,kCAIT,CACA,uBAAApB,CAAwBgkC,EAAOiM,EAAQC,EAAQ+Z,GAC7C,IAAKp9E,KAAK6wE,eACR,OAEF,MAAMxD,EAAUrtE,KAAKqxE,UAAUla,GAC/B,IAAKkW,EAEH,YADA94C,EAAK,mCAGP,MAAMyM,EAAQqsC,EAAQrsC,MAChBC,EAASosC,EAAQpsC,OACjB94B,EAAM,GACZ,IAAK,IAAIpC,EAAI,EAAGi8B,EAAKo7C,EAAU5/E,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAClDoC,EAAII,KAAK,CACPmmB,UAAW,CAAC00C,EAAQ,EAAG,EAAGC,EAAQ+Z,EAAUr3E,GAAIq3E,EAAUr3E,EAAI,IAC9D7C,EAAG,EACH04B,EAAG,EACHgK,EAAG5E,EACH6E,EAAG5E,IAGPjhC,KAAKkzB,6BAA6Bm6C,EAASllE,EAC7C,CACA,yBAAAo1E,CAA0Br4C,GAMxB,MALkC,SAA9BllC,KAAKkW,QAAQ02D,eACf1nC,EAAIz5B,OAASzL,KAAKkW,QAAQ02D,aAC1B1nC,EAAIsG,UAAUtG,EAAI+H,OAAQ,EAAG,GAC7B/H,EAAIz5B,OAAS,QAERy5B,EAAI+H,MACb,CACA,yBAAAuwC,CAA0BnQ,GACxB,GAAkC,SAA9BrtE,KAAKkW,QAAQ02D,aACf,OAAOS,EAAQrvD,OAEjB,MAAM,OACJA,EAAM,MACNgjB,EAAK,OACLC,GACEosC,EACEpL,EAAYjiE,KAAKkiE,eAAeC,UAAU,cAAenhC,EAAOC,GAChEmhC,EAASH,EAAUp/C,QAIzB,OAHAu/C,EAAO32D,OAASzL,KAAKkW,QAAQ02D,aAC7BxK,EAAO52B,UAAUxtB,EAAQ,EAAG,GAC5BokD,EAAO32D,OAAS,OACTw2D,EAAUh1B,MACnB,CACA,uBAAAha,CAAwBo6C,GACtB,IAAKrtE,KAAK6wE,eACR,OAEF,MAAM7vC,EAAQqsC,EAAQrsC,MAChBC,EAASosC,EAAQpsC,OACjBiE,EAAMllC,KAAKklC,IACjBllC,KAAKwuB,OACL,MAAM,OACJ/iB,GACEy5B,EAKJ,IAAIu4C,EACJ,GALe,SAAXhyE,GAAgC,KAAXA,IACvBy5B,EAAIz5B,OAAS,QAEfy5B,EAAI/E,MAAM,EAAIa,GAAQ,EAAIC,GAEtBosC,EAAQrvD,OACVy/D,EAAaz9E,KAAKw9E,0BAA0BnQ,QACvC,GAA2B,mBAAhBqQ,aAA8BrQ,aAAmBqQ,cAAgBrQ,EAAQ//D,KACzFmwE,EAAapQ,MACR,CACL,MACMjL,EADYpiE,KAAKkiE,eAAeC,UAAU,cAAenhC,EAAOC,GAC7Cpe,QACzBuqD,GAAmBhL,EAAQiL,GAC3BoQ,EAAaz9E,KAAKu9E,0BAA0Bnb,EAC9C,CACA,MAAM/7B,EAASrmC,KAAK+yE,YAAY0K,EAAYr4C,GAA2BF,IACvEA,EAAIovC,sBAAwBjF,GAAyBpqC,GAAoBC,GAAMmoC,EAAQiC,aACvFlF,GAAyBllC,EAAKmB,EAAO2sC,IAAK,EAAG,EAAG3sC,EAAOgtC,WAAYhtC,EAAOitC,YAAa,GAAIryC,EAAQD,EAAOC,GAC1GjhC,KAAKw2E,UACLx2E,KAAKyuB,SACP,CACA,4BAAAyE,CAA6Bm6C,EAASllE,GACpC,IAAKnI,KAAK6wE,eACR,OAEF,MAAM3rC,EAAMllC,KAAKklC,IACjB,IAAIu4C,EACJ,GAAIpQ,EAAQrvD,OACVy/D,EAAapQ,EAAQrvD,WAChB,CACL,MAAM4nB,EAAIynC,EAAQrsC,MACZ6E,EAAIwnC,EAAQpsC,OAEZmhC,EADYpiE,KAAKkiE,eAAeC,UAAU,cAAev8B,EAAGC,GACzChjB,QACzBuqD,GAAmBhL,EAAQiL,GAC3BoQ,EAAaz9E,KAAKu9E,0BAA0Bnb,EAC9C,CACA,IAAK,MAAMttD,KAAS3M,EAClB+8B,EAAI1W,OACJ0W,EAAIxW,aAAa5Z,EAAM4Z,WACvBwW,EAAI/E,MAAM,GAAI,GACdiqC,GAAyBllC,EAAKu4C,EAAY3oE,EAAM5R,EAAG4R,EAAM8mB,EAAG9mB,EAAM8wB,EAAG9wB,EAAM+wB,EAAG,GAAI,EAAG,EAAG,GACxFX,EAAIzW,UAENzuB,KAAKw2E,SACP,CACA,wBAAAnjD,GACOrzB,KAAK6wE,iBAGV7wE,KAAKklC,IAAIwsC,SAAS,EAAG,EAAG,EAAG,GAC3B1xE,KAAKw2E,UACP,CACA,SAAAvkD,CAAUrU,GAAM,CAChB,cAAAsU,CAAetU,EAAK6wD,GAAa,CACjC,kBAAAt8C,CAAmBvU,GACjB5d,KAAKiwE,mBAAmB1nE,KAAK,CAC3ByyC,SAAS,GAEb,CACA,uBAAA5oB,CAAwBxU,EAAK6wD,GACf,OAAR7wD,EACF5d,KAAKiwE,mBAAmB1nE,KAAK,CAC3ByyC,QAASh7C,KAAKgwE,sBAAsB2N,UAAUlP,KAGhDzuE,KAAKiwE,mBAAmB1nE,KAAK,CAC3ByyC,SAAS,IAGbh7C,KAAK6wE,eAAiB7wE,KAAK49E,kBAC7B,CACA,gBAAAvrD,GACEryB,KAAKiwE,mBAAmB2H,MACxB53E,KAAK6wE,eAAiB7wE,KAAK49E,kBAC7B,CACA,WAAAtrD,GAAe,CACf,SAAAC,GAAa,CACb,WAAAwlD,CAAY1gB,EAAMwV,GAChB,MAAMz8B,EAAUpwC,KAAKkW,QAAQi3D,cACzBntE,KAAKowE,aACPpwE,KAAKkW,QAAQ+2D,qBAEVjtE,KAAKowE,aACRpwE,KAAKw2E,QAAQ3J,GAEf,MAAM3nC,EAAMllC,KAAKklC,IACbllC,KAAKowE,cACFhgC,IACCpwC,KAAKowE,cAAgBR,GACvB1qC,EAAIvV,KAAK0nC,EAAM,WAEfnyB,EAAIvV,KAAK0nC,IAGbr3D,KAAKowE,YAAc,MAErBpwE,KAAKkW,QAAQg3D,uBAAuBltE,KAAKkW,QAAQ22D,QACnD,CACA,mBAAAuN,GACE,IAAKp6E,KAAKmxE,2BAA4B,CACpC,MAAMl5D,EAAIgtB,GAAoBjlC,KAAKklC,KACnC,GAAa,IAATjtB,EAAE,IAAqB,IAATA,EAAE,GAClBjY,KAAKmxE,2BAA6B,EAAIpuE,KAAKiG,IAAIjG,KAAK25B,IAAIzkB,EAAE,IAAKlV,KAAK25B,IAAIzkB,EAAE,SACrE,CACL,MAAM4lE,EAAS96E,KAAK25B,IAAIzkB,EAAE,GAAKA,EAAE,GAAKA,EAAE,GAAKA,EAAE,IACzC6lE,EAAQ/6E,KAAKihD,MAAM/rC,EAAE,GAAIA,EAAE,IAC3B8lE,EAAQh7E,KAAKihD,MAAM/rC,EAAE,GAAIA,EAAE,IACjCjY,KAAKmxE,2BAA6BpuE,KAAKkO,IAAI6sE,EAAOC,GAASF,CAC7D,CACF,CACA,OAAO79E,KAAKmxE,0BACd,CACA,mBAAA6M,GACE,IAAyC,IAArCh+E,KAAKkxE,wBAAwB,GAAW,CAC1C,MAAM,UACJxE,GACE1sE,KAAKkW,SACH,EACJmF,EAAC,EACDC,EAAC,EACDvD,EAAC,EACD0hB,GACEz5B,KAAKklC,IAAIC,eACb,IAAIi+B,EAAQC,EACZ,GAAU,IAAN/nD,GAAiB,IAANvD,EAAS,CACtB,MAAM+lE,EAAQ/6E,KAAK25B,IAAIrhB,GACjB0iE,EAAQh7E,KAAK25B,IAAIjD,GACvB,GAAIqkD,IAAUC,EACZ,GAAkB,IAAdrR,EACFtJ,EAASC,EAAS,EAAIya,MACjB,CACL,MAAMG,EAAkBH,EAAQpR,EAChCtJ,EAASC,EAAS4a,EAAkB,EAAI,EAAIA,EAAkB,CAChE,MACK,GAAkB,IAAdvR,EACTtJ,EAAS,EAAI0a,EACbza,EAAS,EAAI0a,MACR,CACL,MAAMG,EAAmBJ,EAAQpR,EAC3ByR,EAAmBJ,EAAQrR,EACjCtJ,EAAS8a,EAAmB,EAAI,EAAIA,EAAmB,EACvD7a,EAAS8a,EAAmB,EAAI,EAAIA,EAAmB,CACzD,CACF,KAAO,CACL,MAAMN,EAAS96E,KAAK25B,IAAIrhB,EAAIoe,EAAIne,EAAIvD,GAC9B+lE,EAAQ/6E,KAAKihD,MAAM3oC,EAAGC,GACtByiE,EAAQh7E,KAAKihD,MAAMjsC,EAAG0hB,GAC5B,GAAkB,IAAdizC,EACFtJ,EAAS2a,EAAQF,EACjBxa,EAASya,EAAQD,MACZ,CACL,MAAMO,EAAW1R,EAAYmR,EAC7Bza,EAAS2a,EAAQK,EAAWL,EAAQK,EAAW,EAC/C/a,EAASya,EAAQM,EAAWN,EAAQM,EAAW,CACjD,CACF,CACAp+E,KAAKkxE,wBAAwB,GAAK9N,EAClCpjE,KAAKkxE,wBAAwB,GAAK7N,CACpC,CACA,OAAOrjE,KAAKkxE,uBACd,CACA,gBAAAiH,CAAiB9gB,EAAMgnB,GACrB,MAAM,IACJn5C,EACAhvB,SAAS,UACPw2D,IAEA1sE,MACGojE,EAAQC,GAAUrjE,KAAKg+E,sBAC9B,GAAI5a,IAAWC,EAGb,OAFAn+B,EAAIwnC,WAAaA,GAAa,GAAKtJ,OACnCl+B,EAAIhW,OAAOmoC,GAGb,MAAMinB,EAASp5C,EAAI0pC,cACfyP,GACFn5C,EAAI1W,OAEN0W,EAAI/E,MAAMijC,EAAQC,GAClBwG,GAAaxuD,EAAI,EAAI+nD,EACrByG,GAAapwC,EAAI,EAAI4pC,EACrB,MAAM2U,EAAU,IAAI1gB,OAEpB,GADA0gB,EAAQC,QAAQ5gB,EAAMwS,IAClByU,EAAO9gF,OAAS,EAAG,CACrB,MAAM2iC,EAAQp9B,KAAKkO,IAAImyD,EAAQC,GAC/Bn+B,EAAIypC,YAAY2P,EAAOn2E,KAAIjF,GAAKA,EAAIi9B,KACpC+E,EAAI2pC,gBAAkB1uC,CACxB,CACA+E,EAAIwnC,UAAYA,GAAa,EAC7BxnC,EAAIhW,OAAO8oD,GACPqG,GACFn5C,EAAIzW,SAER,CACA,gBAAAmvD,GACE,IAAK,IAAI73E,EAAI/F,KAAKiwE,mBAAmBzyE,OAAS,EAAGuI,GAAK,EAAGA,IACvD,IAAK/F,KAAKiwE,mBAAmBlqE,GAAGi1C,QAC9B,OAAO,EAGX,OAAO,CACT,EAEF,IAAK,MAAM68B,KAAM/pD,OACsBpuB,IAAjCmwE,GAAepwE,UAAUo4E,KAC3BhI,GAAepwE,UAAUquB,EAAI+pD,IAAOhI,GAAepwE,UAAUo4E,IAKjE,MAAM0G,GACJ3/C,UAAe,KACfA,UAAc,GACd,qBAAW4/C,GACT,OAAOx+E,MAAK,EACd,CACA,qBAAWw+E,CAAWpsE,GACpB,KAAwB,oBAAXqsE,QAA0BrsE,aAAeqsE,SAAmB,OAARrsE,EAC/D,MAAM,IAAIiE,MAAM,8BAElBrW,MAAK,GAAQoS,CACf,CACA,oBAAWssE,GACT,OAAO1+E,MAAK,EACd,CACA,oBAAW0+E,CAAUtsE,GACnB,GAAmB,iBAARA,EACT,MAAM,IAAIiE,MAAM,6BAElBrW,MAAK,GAAOoS,CACd,EAIF,MAAMusE,GACJ,IACA,IACA,WAAAp/E,EAAY,WACVq/E,EAAU,QACVlzC,IAEA1rC,MAAK,GAAO4+E,EACZ5+E,MAAK,GAAQ0rC,CACf,CACA,MAAAmzC,GACE,OAAO7+E,MAAK,EACd,CACA,GAAA7B,CAAIc,GACF,OAAOe,MAAK,GAAK7B,IAAIc,IAAS,IAChC,CACA,CAACsU,OAAO1S,YACN,OAAOb,MAAK,GAAK2U,SACnB,EAMF,MAAMmqE,GAAWvrE,OAAO,YACxB,MAAMwrE,GACJ,KAAa,EACb,KAAW,EACX,KAAW,EACX,KAAW,EACX,WAAAx/E,CAAYy/E,GAAiB,KAC3B//E,EAAI,OACJw1E,EAAM,MACNwK,EAAK,SACLC,IAEAl/E,MAAK,MAAgBg/E,EAAkBz1D,GACvCvpB,MAAK,MAAcg/E,EAAkBz1D,GACrCvpB,KAAKf,KAAOA,EACZe,KAAKy0E,OAASA,EACdz0E,KAAKi/E,MAAQA,EACbj/E,KAAKk/E,SAAWA,CAClB,CACA,WAAIlkC,GACF,GAAIh7C,MAAK,GACP,OAAOA,MAAK,GAEd,IAAKA,MAAK,GACR,OAAO,EAET,MAAM,MACJuyD,EAAK,KACL4sB,GACEn/E,KAAKi/E,MACT,OAAIj/E,MAAK,GACoB,QAApBm/E,GAAMC,WACJp/E,MAAK,IACe,QAAtBuyD,GAAO8sB,UAGlB,CACA,WAAAC,CAAYC,EAAUvkC,EAASwkC,GAAU,GACnCD,IAAaT,IACftqD,EAAY,yCAEdx0B,MAAK,GAAWw/E,EAChBx/E,MAAK,GAAWg7C,CAClB,EAEF,MAAMykC,GACJ,IAAiB,KACjB,IAAU,IAAIxiD,IACd,IAAe,KACf,IAAS,KACT,WAAA19B,CAAY+N,EAAM0xE,EAAkBz1D,GAIlC,GAHAvpB,KAAKg/E,gBAAkBA,EACvBh/E,KAAKf,KAAO,KACZe,KAAK0/E,QAAU,KACF,OAATpyE,EAAJ,CAGAtN,KAAKf,KAAOqO,EAAKrO,KACjBe,KAAK0/E,QAAUpyE,EAAKoyE,QACpB1/E,MAAK,GAASsN,EAAKqyE,MACnB,IAAK,MAAMrD,KAAShvE,EAAKsyE,OACvB5/E,MAAK,GAAQ0E,IAAI43E,EAAM9sE,GAAI,IAAIuvE,GAAqBC,EAAiB1C,IAEvE,GAAuB,QAAnBhvE,EAAKuyE,UACP,IAAK,MAAMvD,KAASt8E,MAAK,GAAQ+e,SAC/Bu9D,EAAMgD,YAAYR,IAAU,GAGhC,IAAK,MAAMnqC,KAAMrnC,EAAKqnC,GACpB30C,MAAK,GAAQ7B,IAAIw2C,GAAI2qC,YAAYR,IAAU,GAE7C,IAAK,MAAMgB,KAAOxyE,EAAKwyE,IACrB9/E,MAAK,GAAQ7B,IAAI2hF,GAAKR,YAAYR,IAAU,GAE9C9+E,MAAK,GAAeA,KAAK+/E,SAlBzB,CAmBF,CACA,IAA8Bz8D,GAC5B,MAAM9lB,EAAS8lB,EAAM9lB,OACrB,GAAIA,EAAS,EACX,OAAO,EAET,MAAMwiF,EAAW18D,EAAM,GACvB,IAAK,IAAIvd,EAAI,EAAGA,EAAIvI,EAAQuI,IAAK,CAC/B,MAAM4iC,EAAUrlB,EAAMvd,GACtB,IAAInG,EACJ,GAAIkP,MAAMwD,QAAQq2B,GAChB/oC,EAAQI,MAAK,GAA8B2oC,OACtC,KAAI3oC,MAAK,GAAQ2E,IAAIgkC,GAI1B,OADApU,EAAK,qCAAqCoU,MACnC,EAHP/oC,EAAQI,MAAK,GAAQ7B,IAAIwqC,GAASqS,OAIpC,CACA,OAAQglC,GACN,IAAK,MACH,IAAKpgF,EACH,OAAO,EAET,MACF,IAAK,KACH,GAAIA,EACF,OAAO,EAET,MACF,IAAK,MACH,OAAQA,EACV,QACE,OAAO,EAEb,CACA,MAAoB,QAAbogF,CACT,CACA,SAAArC,CAAUrB,GACR,GAA0B,IAAtBt8E,MAAK,GAAQ6P,KACf,OAAO,EAET,IAAKysE,EAEH,OADAnoD,EAAK,wCACE,EAET,GAAmB,QAAfmoD,EAAM32E,KACR,OAAK3F,MAAK,GAAQ2E,IAAI23E,EAAM9sE,IAIrBxP,MAAK,GAAQ7B,IAAIm+E,EAAM9sE,IAAIwrC,SAHhCzmB,EAAK,qCAAqC+nD,EAAM9sE,OACzC,GAGJ,GAAmB,SAAf8sE,EAAM32E,KAAiB,CAChC,GAAI22E,EAAM2D,WACR,OAAOjgF,MAAK,GAA8Bs8E,EAAM2D,YAElD,IAAK3D,EAAM4D,QAA2B,UAAjB5D,EAAM4D,OAAoB,CAC7C,IAAK,MAAM1wE,KAAM8sE,EAAMppB,IAAK,CAC1B,IAAKlzD,MAAK,GAAQ2E,IAAI6K,GAEpB,OADA+kB,EAAK,qCAAqC/kB,MACnC,EAET,GAAIxP,MAAK,GAAQ7B,IAAIqR,GAAIwrC,QACvB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,UAAjBshC,EAAM4D,OAAoB,CACnC,IAAK,MAAM1wE,KAAM8sE,EAAMppB,IAAK,CAC1B,IAAKlzD,MAAK,GAAQ2E,IAAI6K,GAEpB,OADA+kB,EAAK,qCAAqC/kB,MACnC,EAET,IAAKxP,MAAK,GAAQ7B,IAAIqR,GAAIwrC,QACxB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,WAAjBshC,EAAM4D,OAAqB,CACpC,IAAK,MAAM1wE,KAAM8sE,EAAMppB,IAAK,CAC1B,IAAKlzD,MAAK,GAAQ2E,IAAI6K,GAEpB,OADA+kB,EAAK,qCAAqC/kB,MACnC,EAET,IAAKxP,MAAK,GAAQ7B,IAAIqR,GAAIwrC,QACxB,OAAO,CAEX,CACA,OAAO,CACT,CAAO,GAAqB,WAAjBshC,EAAM4D,OAAqB,CACpC,IAAK,MAAM1wE,KAAM8sE,EAAMppB,IAAK,CAC1B,IAAKlzD,MAAK,GAAQ2E,IAAI6K,GAEpB,OADA+kB,EAAK,qCAAqC/kB,MACnC,EAET,GAAIxP,MAAK,GAAQ7B,IAAIqR,GAAIwrC,QACvB,OAAO,CAEX,CACA,OAAO,CACT,CAEA,OADAzmB,EAAK,mCAAmC+nD,EAAM4D,YACvC,CACT,CAEA,OADA3rD,EAAK,sBAAsB+nD,EAAM32E,UAC1B,CACT,CACA,aAAAw6E,CAAc3wE,EAAIwrC,GAAU,EAAMolC,GAAa,GAC7C,MAAM9D,EAAQt8E,MAAK,GAAQ7B,IAAIqR,GAC/B,GAAK8sE,EAAL,CAIA,GAAI8D,GAAcplC,GAAWshC,EAAM4C,SAAS1hF,OAC1C,IAAK,MAAM6iF,KAAW/D,EAAM4C,SAC1B,IAAK,MAAMoB,KAAWD,EAChBC,IAAY9wE,GACdxP,MAAK,GAAQ7B,IAAImiF,IAAUhB,YAAYR,IAAU,GAAO,GAKhExC,EAAMgD,YAAYR,KAAY9jC,GAAS,GACvCh7C,MAAK,GAAiB,IAXtB,MAFEu0B,EAAK,qCAAqC/kB,IAc9C,CACA,WAAA+wE,EAAY,MACV3gF,EAAK,WACLwgF,IAEA,IAAIJ,EACJ,IAAK,MAAMrW,KAAQ/pE,EAAO,CACxB,OAAQ+pE,GACN,IAAK,KACL,IAAK,MACL,IAAK,SACHqW,EAAWrW,EACX,SAEJ,MAAM2S,EAAQt8E,MAAK,GAAQ7B,IAAIwrE,GAC/B,GAAK2S,EAGL,OAAQ0D,GACN,IAAK,KACHhgF,KAAKmgF,cAAcxW,GAAM,EAAMyW,GAC/B,MACF,IAAK,MACHpgF,KAAKmgF,cAAcxW,GAAM,EAAOyW,GAChC,MACF,IAAK,SACHpgF,KAAKmgF,cAAcxW,GAAO2S,EAAMthC,QAASolC,GAG/C,CACApgF,MAAK,GAAiB,IACxB,CACA,wBAAIwgF,GACF,OAA6B,OAAtBxgF,MAAK,IAAyBA,KAAK+/E,YAAc//E,MAAK,EAC/D,CACA,QAAAygF,GACE,OAAKzgF,MAAK,GAAQ6P,KAGd7P,MAAK,GACAA,MAAK,GAAOvB,QAEd,IAAIuB,MAAK,GAAQ+D,QALf,IAMX,CACA,QAAA28E,CAASlxE,GACP,OAAOxP,MAAK,GAAQ7B,IAAIqR,IAAO,IACjC,CACA,OAAAuwE,GACE,GAA4B,OAAxB//E,MAAK,GACP,OAAOA,MAAK,GAEd,MAAM4e,EAAO,IAAIkyC,GACjB,IAAK,MAAOthD,EAAI8sE,KAAUt8E,MAAK,GAC7B4e,EAAKsyC,OAAO,GAAG1hD,KAAM8sE,EAAMthC,WAE7B,OAAOh7C,MAAK,GAAiB4e,EAAKizC,WACpC,CACA,CAACt+C,OAAO1S,YACN,OAAOb,MAAK,GAAQ2U,SACtB,EAiBF,MAAMgsE,GACJ,WAAAphF,CAAYqhF,GAAuB,aACjCC,GAAe,EAAK,cACpBC,GAAgB,IAEhBrsD,EAAOmsD,EAAuB,+EAC9B,MAAM,OACJpjF,EAAM,YACNujF,EAAW,gBACXC,EAAe,2BACfC,GACEL,EAIJ,GAHA5gF,KAAKkhF,cAAgB,GACrBlhF,KAAKmhF,iBAAmBH,EACxBhhF,KAAKohF,4BAA8BH,EAC/BF,GAAavjF,OAAS,EAAG,CAC3B,MAAM2I,EAAS46E,aAAuBr6E,YAAcq6E,EAAYx6E,aAAew6E,EAAY56E,OAAOI,WAAaw6E,EAAY56E,OAAS,IAAIO,WAAWq6E,GAAa56E,OAChKnG,KAAKkhF,cAAc34E,KAAKpC,EAC1B,CACAnG,KAAKqhF,uBAAyBT,EAC9B5gF,KAAKshF,uBAAyBR,EAC9B9gF,KAAKuhF,mBAAqBV,EAC1B7gF,KAAKwhF,eAAiBhkF,EACtBwC,KAAKyhF,mBAAqB,KAC1BzhF,KAAK0hF,cAAgB,GACrBd,EAAsBe,kBAAiB,CAACC,EAAOl8D,KAC7C1lB,KAAK6hF,eAAe,CAClBD,QACAl8D,SACA,IAEJk7D,EAAsBkB,qBAAoB,CAAC5sB,EAAQ6sB,KACjD/hF,KAAKgiF,YAAY,CACf9sB,SACA6sB,SACA,IAEJnB,EAAsBqB,4BAA2Bv8D,IAC/C1lB,KAAK6hF,eAAe,CAClBn8D,SACA,IAEJk7D,EAAsBsB,4BAA2B,KAC/CliF,KAAKmiF,oBAAoB,IAE3BvB,EAAsBwB,gBACxB,CACA,cAAAP,EAAe,MACbD,EAAK,MACLl8D,IAEA,MAAMvf,EAASuf,aAAiBhf,YAAcgf,EAAMnf,aAAemf,EAAMvf,OAAOI,WAAamf,EAAMvf,OAAS,IAAIO,WAAWgf,GAAOvf,OAClI,QAAczG,IAAVkiF,EACE5hF,KAAKyhF,mBACPzhF,KAAKyhF,mBAAmBY,SAASl8E,GAEjCnG,KAAKkhF,cAAc34E,KAAKpC,OAErB,CAQLsuB,EAPcz0B,KAAK0hF,cAAclxE,MAAK,SAAU8xE,GAC9C,OAAIA,EAAYC,SAAWX,IAG3BU,EAAYD,SAASl8E,IACd,EACT,IACc,0EAChB,CACF,CACA,0BAAIq8E,GACF,OAAOxiF,KAAKyhF,oBAAoBgB,SAAW,CAC7C,CACA,WAAAT,CAAYjvC,QACQrzC,IAAdqzC,EAAIgvC,MACN/hF,KAAK0hF,cAAc,IAAIgB,aAAa,CAClCxtB,OAAQniB,EAAImiB,SAGdl1D,KAAKyhF,oBAAoBiB,aAAa,CACpCxtB,OAAQniB,EAAImiB,OACZ6sB,MAAOhvC,EAAIgvC,OAGjB,CACA,kBAAAI,GACEniF,KAAKyhF,oBAAoBT,kBACzBhhF,KAAKmhF,kBAAmB,CAC1B,CACA,kBAAAwB,CAAmBC,GACjB,MAAM78E,EAAI/F,KAAK0hF,cAAcp5E,QAAQs6E,GACjC78E,GAAK,GACP/F,KAAK0hF,cAAcxzC,OAAOnoC,EAAG,EAEjC,CACA,aAAA88E,GACEpuD,GAAQz0B,KAAKyhF,mBAAoB,iEACjC,MAAMqB,EAAe9iF,KAAKkhF,cAE1B,OADAlhF,KAAKkhF,cAAgB,KACd,IAAI6B,GAA6B/iF,KAAM8iF,EAAc9iF,KAAKmhF,iBAAkBnhF,KAAKohF,4BAC1F,CACA,cAAA4B,CAAepB,EAAOrgE,GACpB,GAAIA,GAAOvhB,KAAKwiF,uBACd,OAAO,KAET,MAAMI,EAAS,IAAIK,GAAkCjjF,KAAM4hF,EAAOrgE,GAGlE,OAFAvhB,KAAKqhF,uBAAuB6B,iBAAiBtB,EAAOrgE,GACpDvhB,KAAK0hF,cAAcn5E,KAAKq6E,GACjBA,CACT,CACA,iBAAAO,CAAkB3kD,GAChBx+B,KAAKyhF,oBAAoBvgC,OAAO1iB,GAChC,IAAK,MAAMokD,KAAU5iF,KAAK0hF,cAAcjjF,MAAM,GAC5CmkF,EAAO1hC,OAAO1iB,GAEhBx+B,KAAKqhF,uBAAuB9iD,OAC9B,EAEF,MAAMwkD,GACJ,WAAAxjF,CAAYk6D,EAAQqpB,EAAc9B,GAAkB,EAAOC,EAA6B,MACtFjhF,KAAKojF,QAAU3pB,EACfz5D,KAAKqjF,MAAQrC,IAAmB,EAChChhF,KAAKsjF,UAAYnhD,GAAU8+C,GAA8BA,EAA6B,KACtFjhF,KAAKkhF,cAAgB4B,GAAgB,GACrC9iF,KAAKyiF,QAAU,EACf,IAAK,MAAM/8D,KAAS1lB,KAAKkhF,cACvBlhF,KAAKyiF,SAAW/8D,EAAMnf,WAExBvG,KAAKujF,UAAY,GACjBvjF,KAAKwjF,cAAgBr8E,QAAQQ,UAC7B8xD,EAAOgoB,mBAAqBzhF,KAC5BA,KAAK0iF,WAAa,IACpB,CACA,QAAAL,CAAS38D,GACP,IAAI1lB,KAAKqjF,MAAT,CAGA,GAAIrjF,KAAKujF,UAAU/lF,OAAS,EAAG,CACHwC,KAAKujF,UAAU56D,QACvBhhB,QAAQ,CACxB9I,MAAO6mB,EACP3kB,MAAM,GAEV,MACEf,KAAKkhF,cAAc34E,KAAKmd,GAE1B1lB,KAAKyiF,SAAW/8D,EAAMnf,UAVtB,CAWF,CACA,gBAAIk9E,GACF,OAAOzjF,KAAKwjF,aACd,CACA,YAAIphD,GACF,OAAOpiC,KAAKsjF,SACd,CACA,oBAAII,GACF,OAAO1jF,KAAKojF,QAAQ7B,iBACtB,CACA,wBAAIoC,GACF,OAAO3jF,KAAKojF,QAAQ9B,qBACtB,CACA,iBAAIsC,GACF,OAAO5jF,KAAKojF,QAAQ5B,cACtB,CACA,UAAM16E,GACJ,GAAI9G,KAAKkhF,cAAc1jF,OAAS,EAAG,CAEjC,MAAO,CACLqB,MAFYmB,KAAKkhF,cAAcv4D,QAG/B5nB,MAAM,EAEV,CACA,GAAIf,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,MAAM8iF,EAAoB18E,QAAQiO,gBAElC,OADApV,KAAKujF,UAAUh7E,KAAKs7E,GACbA,EAAkBj8E,OAC3B,CACA,MAAAs5C,CAAO1iB,GACLx+B,KAAKqjF,OAAQ,EACb,IAAK,MAAMQ,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,CAC1B,CACA,eAAAwjF,GACMhhF,KAAKqjF,QAGTrjF,KAAKqjF,OAAQ,EACf,EAEF,MAAMJ,GACJ,WAAA1jF,CAAYk6D,EAAQmoB,EAAOrgE,GACzBvhB,KAAKojF,QAAU3pB,EACfz5D,KAAKuiF,OAASX,EACd5hF,KAAK8jF,KAAOviE,EACZvhB,KAAK+jF,aAAe,KACpB/jF,KAAKujF,UAAY,GACjBvjF,KAAKqjF,OAAQ,EACbrjF,KAAK0iF,WAAa,IACpB,CACA,QAAAL,CAAS38D,GACP,IAAI1lB,KAAKqjF,MAAT,CAGA,GAA8B,IAA1BrjF,KAAKujF,UAAU/lF,OACjBwC,KAAK+jF,aAAer+D,MACf,CACsB1lB,KAAKujF,UAAU56D,QACvBhhB,QAAQ,CACzB9I,MAAO6mB,EACP3kB,MAAM,IAER,IAAK,MAAM8iF,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,CAC1B,CACAwC,KAAKqjF,OAAQ,EACbrjF,KAAKojF,QAAQT,mBAAmB3iF,KAlBhC,CAmBF,CACA,wBAAI2jF,GACF,OAAO,CACT,CACA,UAAM78E,GACJ,GAAI9G,KAAK+jF,aAAc,CACrB,MAAMr+D,EAAQ1lB,KAAK+jF,aAEnB,OADA/jF,KAAK+jF,aAAe,KACb,CACLllF,MAAO6mB,EACP3kB,MAAM,EAEV,CACA,GAAIf,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,MAAM8iF,EAAoB18E,QAAQiO,gBAElC,OADApV,KAAKujF,UAAUh7E,KAAKs7E,GACbA,EAAkBj8E,OAC3B,CACA,MAAAs5C,CAAO1iB,GACLx+B,KAAKqjF,OAAQ,EACb,IAAK,MAAMQ,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,EACxBwC,KAAKojF,QAAQT,mBAAmB3iF,KAClC,EA6IF,SAASgkF,GAAcC,EAAQC,GAC7B,MAAMC,EAAU,IAAIC,QACpB,IAAKH,IAAWC,GAAsC,iBAAhBA,EACpC,OAAOC,EAET,IAAK,MAAMz7E,KAAOw7E,EAAa,CAC7B,MAAM9xE,EAAM8xE,EAAYx7E,QACZhJ,IAAR0S,GACF+xE,EAAQ7vE,OAAO5L,EAAK0J,EAExB,CACA,OAAO+xE,CACT,CACA,SAASE,GAAkB1oE,GACzB,OAAOF,IAAIC,MAAMC,IAAMuoC,QAAU,IACnC,CACA,SAASogC,IAAiC,gBACxCC,EAAe,OACfN,EAAM,eACNO,EAAc,aACd3D,IAEA,MAAM4D,EAAe,CACnBC,oBAAoB,EACpBC,qBAAiBjlF,GAEblC,EAASuL,SAASw7E,EAAgBpmF,IAAI,kBAAmB,IAC/D,IAAK6jB,OAAOiS,UAAUz2B,GACpB,OAAOinF,EAGT,GADAA,EAAaE,gBAAkBnnF,EAC3BA,GAAU,EAAIgnF,EAChB,OAAOC,EAET,GAAI5D,IAAiBoD,EACnB,OAAOQ,EAET,GAA6C,UAAzCF,EAAgBpmF,IAAI,iBACtB,OAAOsmF,EAGT,MAAwB,cADAF,EAAgBpmF,IAAI,qBAAuB,cAInEsmF,EAAaC,oBAAqB,GAFzBD,CAIX,CACA,SAASG,GAA0BL,GACjC,MAAMM,EAAqBN,EAAgBpmF,IAAI,uBAC/C,GAAI0mF,EAAoB,CACtB,IAAIziD,EAxLR,SAAiDyiD,GAC/C,IAAIC,GAAqB,EACrB3hB,EAAM4hB,EAAc,cAAe,KAAK9gF,KAAK4gF,GACjD,GAAI1hB,EAAK,CACPA,EAAMA,EAAI,GACV,IAAI/gC,EAAW4iD,EAAe7hB,GAI9B,OAHA/gC,EAAW6iD,SAAS7iD,GACpBA,EAAW8iD,EAAc9iD,GACzBA,EAAW+iD,EAAc/iD,GAClBgjD,EAAchjD,EACvB,CAEA,GADA+gC,EAwCA,SAAyBkiB,GACvB,MAAMphD,EAAU,GAChB,IAAIjc,EACJ,MAAMs9D,EAAOP,EAAc,kCAAmC,MAC9D,KAAsD,QAA9C/8D,EAAQs9D,EAAKrhF,KAAKohF,KAAkC,CAC1D,IAAK,CAAEliF,EAAGoiF,EAAMC,GAAQx9D,EAExB,GADA7kB,EAAI4F,SAAS5F,EAAG,IACZA,KAAK8gC,GACP,GAAU,IAAN9gC,EACF,WAIJ8gC,EAAQ9gC,GAAK,CAACoiF,EAAMC,EACtB,CACA,MAAMC,EAAQ,GACd,IAAK,IAAItiF,EAAI,EAAGA,EAAI8gC,EAAQzmC,QACpB2F,KAAK8gC,IADyB9gC,EAAG,CAIvC,IAAKoiF,EAAMC,GAAQvhD,EAAQ9gC,GAC3BqiF,EAAOR,EAAeQ,GAClBD,IACFC,EAAOP,SAASO,GACN,IAANriF,IACFqiF,EAAON,EAAcM,KAGzBC,EAAMl9E,KAAKi9E,EACb,CACA,OAAOC,EAAM9mF,KAAK,GACpB,CAvEM+mF,CAAgBb,GAClB1hB,EAEF,OAAOiiB,EADUD,EAAchiB,IAIjC,GADAA,EAAM4hB,EAAc,WAAY,KAAK9gF,KAAK4gF,GACtC1hB,EAAK,CACPA,EAAMA,EAAI,GACV,IAAI/gC,EAAW4iD,EAAe7hB,GAE9B,OADA/gC,EAAW+iD,EAAc/iD,GAClBgjD,EAAchjD,EACvB,CACA,SAAS2iD,EAAcY,EAAkBC,GACvC,OAAO,IAAI5hD,OAAO,cAAgB2hD,EAAhB,sDAAmHC,EACvI,CACA,SAASC,EAAWC,EAAUjnF,GAC5B,GAAIinF,EAAU,CACZ,IAAK,iBAAiBzjF,KAAKxD,GACzB,OAAOA,EAET,IACE,MAAMknF,EAAU,IAAIC,YAAYF,EAAU,CACxCG,OAAO,IAEH9/E,EAAS0wB,GAAch4B,GAC7BA,EAAQknF,EAAQpjD,OAAOx8B,GACvB2+E,GAAqB,CACvB,CAAE,MAAO,CACX,CACA,OAAOjmF,CACT,CACA,SAASumF,EAAcvmF,GAOrB,OANIimF,GAAsB,cAAcziF,KAAKxD,KAC3CA,EAAQgnF,EAAW,QAAShnF,GACxBimF,IACFjmF,EAAQgnF,EAAW,aAAchnF,KAG9BA,CACT,CAiCA,SAASmmF,EAAenmF,GACtB,GAAIA,EAAMi2B,WAAW,KAAM,CACzB,MAAM2wD,EAAQ5mF,EAAMJ,MAAM,GAAGM,MAAM,OACnC,IAAK,IAAIgH,EAAI,EAAGA,EAAI0/E,EAAMjoF,SAAUuI,EAAG,CACrC,MAAMmgF,EAAYT,EAAM1/E,GAAGuC,QAAQ,MAChB,IAAf49E,IACFT,EAAM1/E,GAAK0/E,EAAM1/E,GAAGtH,MAAM,EAAGynF,GAC7BT,EAAMjoF,OAASuI,EAAI,GAErB0/E,EAAM1/E,GAAK0/E,EAAM1/E,GAAGm3B,WAAW,SAAU,KAC3C,CACAr+B,EAAQ4mF,EAAM9mF,KAAK,IACrB,CACA,OAAOE,CACT,CACA,SAASqmF,EAAciB,GACrB,MAAMC,EAAcD,EAAS79E,QAAQ,KACrC,OAAqB,IAAjB89E,EACKD,EAKFN,EAHUM,EAAS1nF,MAAM,EAAG2nF,GACjBD,EAAS1nF,MAAM2nF,EAAc,GACvB1nF,QAAQ,UAAW,IAE7C,CACA,SAASymF,EAActmF,GACrB,OAAKA,EAAMi2B,WAAW,OAAS,uBAAuBzyB,KAAKxD,GAClDA,EAEFA,EAAMq+B,WAAW,kDAAkD,SAAU+G,EAASoiD,EAASP,EAAU1hE,GAC9G,GAAiB,MAAb0hE,GAAiC,MAAbA,EAKtB,OAAOD,EAAWQ,EAHlBjiE,GADAA,EAAOA,EAAK8Y,WAAW,IAAK,MAChBA,WAAW,sBAAsB,SAAUlV,EAAO1N,GAC5D,OAAOjc,OAAOyiB,aAAa/X,SAASuR,EAAK,IAC3C,KAGF,IACE8J,EAAOuxC,KAAKvxC,EACd,CAAE,MAAO,CACT,OAAOyhE,EAAWQ,EAASjiE,EAC7B,GACF,CACA,MAAO,EACT,CAyDmBkiE,CAAwCzB,GACvD,GAAIziD,EAAS/xB,SAAS,KACpB,IACE+xB,EAAWnN,mBAAmBmN,EAChC,CAAE,MAAO,CAEX,GAAID,GAAUC,GACZ,OAAOA,CAEX,CACA,OAAO,IACT,CACA,SAASmkD,GAAoBnwD,EAAQza,GACnC,OAAO,IAAIwa,GAAkB,+BAA+BC,4BAAiCza,MAASya,EAAmB,MAAXA,GAA6B,IAAXA,GAAgBza,EAAImZ,WAAW,SACjK,CACA,SAAS0xD,GAAuBpwD,GAC9B,OAAkB,MAAXA,GAA6B,MAAXA,CAC3B,CAcA,SAASqwD,GAAmBtC,EAASuC,EAAiBC,GACpD,MAAO,CACL/jF,OAAQ,MACRuhF,UACA9lD,OAAQsoD,EAAgBtoD,OACxBnf,KAAM,OACN0nE,YAAaF,EAAkB,UAAY,cAC3CG,SAAU,SAEd,CACA,SAASC,GAAe10E,GACtB,OAAIA,aAAe1L,WACV0L,EAAIjM,OAETiM,aAAehM,YACVgM,GAETmiB,EAAK,4CAA4CniB,KAC1C,IAAI1L,WAAW0L,GAAKjM,OAC7B,CACA,MAAM4gF,GACJC,gBAAkB,KAClB,WAAAznF,CAAYM,GACVG,KAAKH,OAASA,EACdG,KAAKikF,OAAS,YAAY5hF,KAAKxC,EAAO8b,KACtC3b,KAAKmkF,QAAUH,GAAchkF,KAAKikF,OAAQpkF,EAAOqkF,aACjDlkF,KAAKyhF,mBAAqB,KAC1BzhF,KAAKinF,qBAAuB,EAC9B,CACA,0BAAIzE,GACF,OAAOxiF,KAAKyhF,oBAAoBgB,SAAW,CAC7C,CACA,aAAAI,GAGE,OAFApuD,GAAQz0B,KAAKyhF,mBAAoB,yDACjCzhF,KAAKyhF,mBAAqB,IAAIyF,GAAqBlnF,MAC5CA,KAAKyhF,kBACd,CACA,cAAAuB,CAAepB,EAAOrgE,GACpB,GAAIA,GAAOvhB,KAAKwiF,uBACd,OAAO,KAET,MAAMI,EAAS,IAAIuE,GAA0BnnF,KAAM4hF,EAAOrgE,GAE1D,OADAvhB,KAAKinF,qBAAqB1+E,KAAKq6E,GACxBA,CACT,CACA,iBAAAO,CAAkB3kD,GAChBx+B,KAAKyhF,oBAAoBvgC,OAAO1iB,GAChC,IAAK,MAAMokD,KAAU5iF,KAAKinF,qBAAqBxoF,MAAM,GACnDmkF,EAAO1hC,OAAO1iB,EAElB,EAEF,MAAM0oD,GACJ,WAAA3nF,CAAYk6D,GACVz5D,KAAKojF,QAAU3pB,EACfz5D,KAAKonF,QAAU,KACfpnF,KAAKyiF,QAAU,EACfziF,KAAKsjF,UAAY,KACjB,MAAMzjF,EAAS45D,EAAO55D,OACtBG,KAAKqnF,iBAAmBxnF,EAAO6mF,kBAAmB,EAClD1mF,KAAKwhF,eAAiB3hF,EAAOrC,OAC7BwC,KAAKsnF,mBAAqBngF,QAAQiO,gBAClCpV,KAAKunF,cAAgB1nF,EAAOghF,eAAgB,EAC5C7gF,KAAKwnF,gBAAkB3nF,EAAO2kF,eACzBxkF,KAAKwnF,iBAAoBxnF,KAAKunF,gBACjCvnF,KAAKunF,eAAgB,GAEvBvnF,KAAKynF,iBAAmB,IAAIrpD,gBAC5Bp+B,KAAKshF,uBAAyBzhF,EAAOihF,cACrC9gF,KAAKuhF,mBAAqB1hF,EAAOghF,aACjC,MAAMsD,EAAU,IAAIC,QAAQ3qB,EAAO0qB,SAC7BxoE,EAAM9b,EAAO8b,IACnBwjB,MAAMxjB,EAAK8qE,GAAmBtC,EAASnkF,KAAKqnF,iBAAkBrnF,KAAKynF,mBAAmBl8C,MAAKrM,IAEzF,GADAu6B,EAAOutB,gBAAkB3C,GAAkBnlD,EAASvjB,MAC/C6qE,GAAuBtnD,EAAS9I,QACnC,MAAMmwD,GAAoBrnD,EAAS9I,OAAQza,GAE7C3b,KAAKonF,QAAUloD,EAASqQ,KAAKm4C,YAC7B1nF,KAAKsnF,mBAAmB3/E,UACxB,MAAM48E,EAAkBrlD,EAASilD,SAC3B,mBACJO,EAAkB,gBAClBC,GACEL,GAAiC,CACnCC,kBACAN,OAAQxqB,EAAOwqB,OACfO,eAAgBxkF,KAAKwnF,gBACrB3G,aAAc7gF,KAAKunF,gBAErBvnF,KAAKuhF,kBAAoBmD,EACzB1kF,KAAKwhF,eAAiBmD,GAAmB3kF,KAAKwhF,eAC9CxhF,KAAKsjF,UAAYsB,GAA0BL,IACtCvkF,KAAKshF,uBAAyBthF,KAAKuhF,mBACtCvhF,KAAKkhD,OAAO,IAAI3qB,GAAe,0BACjC,IACC6lC,MAAMp8D,KAAKsnF,mBAAmB5/E,QACjC1H,KAAK0iF,WAAa,IACpB,CACA,gBAAIe,GACF,OAAOzjF,KAAKsnF,mBAAmB1/E,OACjC,CACA,YAAIw6B,GACF,OAAOpiC,KAAKsjF,SACd,CACA,iBAAIM,GACF,OAAO5jF,KAAKwhF,cACd,CACA,oBAAIkC,GACF,OAAO1jF,KAAKuhF,iBACd,CACA,wBAAIoC,GACF,OAAO3jF,KAAKshF,qBACd,CACA,UAAMx6E,SACE9G,KAAKsnF,mBAAmB1/E,QAC9B,MAAM,MACJ/I,EAAK,KACLkC,SACQf,KAAKonF,QAAQtgF,OACvB,OAAI/F,EACK,CACLlC,QACAkC,SAGJf,KAAKyiF,SAAW5jF,EAAM0H,WACtBvG,KAAK0iF,aAAa,CAChBxtB,OAAQl1D,KAAKyiF,QACbV,MAAO/hF,KAAKwhF,iBAEP,CACL3iF,MAAOioF,GAAejoF,GACtBkC,MAAM,GAEV,CACA,MAAAmgD,CAAO1iB,GACLx+B,KAAKonF,SAASlmC,OAAO1iB,GACrBx+B,KAAKynF,iBAAiBlpD,OACxB,EAEF,MAAM4oD,GACJ,WAAA5nF,CAAYk6D,EAAQmoB,EAAOrgE,GACzBvhB,KAAKojF,QAAU3pB,EACfz5D,KAAKonF,QAAU,KACfpnF,KAAKyiF,QAAU,EACf,MAAM5iF,EAAS45D,EAAO55D,OACtBG,KAAKqnF,iBAAmBxnF,EAAO6mF,kBAAmB,EAClD1mF,KAAK2nF,gBAAkBxgF,QAAQiO,gBAC/BpV,KAAKshF,uBAAyBzhF,EAAOihF,cACrC9gF,KAAKynF,iBAAmB,IAAIrpD,gBAC5B,MAAM+lD,EAAU,IAAIC,QAAQ3qB,EAAO0qB,SACnCA,EAAQ7vE,OAAO,QAAS,SAASstE,KAASrgE,EAAM,KAChD,MAAM5F,EAAM9b,EAAO8b,IACnBwjB,MAAMxjB,EAAK8qE,GAAmBtC,EAASnkF,KAAKqnF,iBAAkBrnF,KAAKynF,mBAAmBl8C,MAAKrM,IACzF,MAAM0oD,EAAiBvD,GAAkBnlD,EAASvjB,KAClD,GAAIisE,IAAmBnuB,EAAOutB,gBAC5B,MAAM,IAAI3wE,MAAM,mCAAmCuxE,gBAA6BnuB,EAAOutB,qBAEzF,IAAKR,GAAuBtnD,EAAS9I,QACnC,MAAMmwD,GAAoBrnD,EAAS9I,OAAQza,GAE7C3b,KAAK2nF,gBAAgBhgF,UACrB3H,KAAKonF,QAAUloD,EAASqQ,KAAKm4C,WAAW,IACvCtrB,MAAMp8D,KAAK2nF,gBAAgBjgF,QAC9B1H,KAAK0iF,WAAa,IACpB,CACA,wBAAIiB,GACF,OAAO3jF,KAAKshF,qBACd,CACA,UAAMx6E,SACE9G,KAAK2nF,gBAAgB//E,QAC3B,MAAM,MACJ/I,EAAK,KACLkC,SACQf,KAAKonF,QAAQtgF,OACvB,OAAI/F,EACK,CACLlC,QACAkC,SAGJf,KAAKyiF,SAAW5jF,EAAM0H,WACtBvG,KAAK0iF,aAAa,CAChBxtB,OAAQl1D,KAAKyiF,UAER,CACL5jF,MAAOioF,GAAejoF,GACtBkC,MAAM,GAEV,CACA,MAAAmgD,CAAO1iB,GACLx+B,KAAKonF,SAASlmC,OAAO1iB,GACrBx+B,KAAKynF,iBAAiBlpD,OACxB,EAmBF,MAAMspD,GACJb,gBAAkB,KAClB,WAAAznF,EAAY,IACVoc,EAAG,YACHuoE,EAAW,gBACXwC,IAEA1mF,KAAK2b,IAAMA,EACX3b,KAAKikF,OAAS,YAAY5hF,KAAKsZ,GAC/B3b,KAAKmkF,QAAUH,GAAchkF,KAAKikF,OAAQC,GAC1ClkF,KAAK0mF,gBAAkBA,IAAmB,EAC1C1mF,KAAK8nF,UAAY,EACjB9nF,KAAK+nF,gBAAkBxpF,OAAO6M,OAAO,KACvC,CACA,OAAAo0B,CAAQj4B,GACN,MAAMygF,EAAM,IAAIvoD,eACVwoD,EAAQjoF,KAAK8nF,YACbI,EAAiBloF,KAAK+nF,gBAAgBE,GAAS,CACnDD,OAEFA,EAAI78E,KAAK,MAAOnL,KAAK2b,KACrBqsE,EAAItB,gBAAkB1mF,KAAK0mF,gBAC3B,IAAK,MAAOh+E,EAAK0J,KAAQpS,KAAKmkF,QAC5B6D,EAAIG,iBAAiBz/E,EAAK0J,GAoB5B,OAlBIpS,KAAKikF,QAAU,UAAW18E,GAAQ,QAASA,GAC7CygF,EAAIG,iBAAiB,QAAS,SAAS5gF,EAAKq6E,SAASr6E,EAAKga,IAAM,KAChE2mE,EAAeE,eAnCY,KAqC3BF,EAAeE,eAtCD,IAwChBJ,EAAItoD,aAAe,cACnBjL,EAAOltB,EAAK8gF,QAAS,+CACrBL,EAAIz7C,QAAU,KACZhlC,EAAK8gF,QAAQL,EAAI5xD,OAAO,EAE1B4xD,EAAIroD,mBAAqB3/B,KAAKsoF,cAAchmF,KAAKtC,KAAMioF,GACvDD,EAAIO,WAAavoF,KAAK0iF,WAAWpgF,KAAKtC,KAAMioF,GAC5CC,EAAeM,kBAAoBjhF,EAAKihF,kBACxCN,EAAeO,OAASlhF,EAAKkhF,OAC7BP,EAAeG,QAAU9gF,EAAK8gF,QAC9BH,EAAexF,WAAan7E,EAAKm7E,WACjCsF,EAAIjoD,KAAK,MACFkoD,CACT,CACA,UAAAvF,CAAWuF,EAAOl1C,GAChB,MAAMm1C,EAAiBloF,KAAK+nF,gBAAgBE,GACvCC,GAGLA,EAAexF,aAAa3vC,EAC9B,CACA,aAAAu1C,CAAcL,EAAOl1C,GACnB,MAAMm1C,EAAiBloF,KAAK+nF,gBAAgBE,GAC5C,IAAKC,EACH,OAEF,MAAMF,EAAME,EAAeF,IAK3B,GAJIA,EAAIpoD,YAAc,GAAKsoD,EAAeM,oBACxCN,EAAeM,2BACRN,EAAeM,mBAED,IAAnBR,EAAIpoD,WACN,OAEF,KAAMqoD,KAASjoF,KAAK+nF,iBAClB,OAGF,UADO/nF,KAAK+nF,gBAAgBE,GACT,IAAfD,EAAI5xD,QAAgBp2B,KAAKikF,OAE3B,YADAiE,EAAeG,QAAQL,EAAI5xD,QAG7B,MAAMsyD,EAAYV,EAAI5xD,QAlFN,IAoFhB,KApFgB,MAmFqBsyD,GAlFR,MAkFqCR,EAAeE,iBAC5CM,IAAcR,EAAeE,eAEhE,YADAF,EAAeG,QAAQL,EAAI5xD,QAG7B,MAAM1Q,EAtFV,SAAgCsiE,GAC9B,MAAM16E,EAAO06E,EAAI9oD,SACjB,MAAoB,iBAAT5xB,EACFA,EAEFupB,GAAcvpB,GAAMnH,MAC7B,CAgFkBwiF,CAAuBX,GACrC,GAxF6B,MAwFzBU,EAAwC,CAC1C,MAAME,EAAcZ,EAAIa,kBAAkB,iBACpC5kD,EAAU,2BAA2BhgC,KAAK2kF,GAC5C3kD,EACFikD,EAAeO,OAAO,CACpB7G,MAAO74E,SAASk7B,EAAQ,GAAI,IAC5Bve,WAGF6O,EAAK,8CACL2zD,EAAeG,QAAQ,GAE3B,MAAW3iE,EACTwiE,EAAeO,OAAO,CACpB7G,MAAO,EACPl8D,UAGFwiE,EAAeG,QAAQL,EAAI5xD,OAE/B,CACA,aAAA0yD,CAAcb,GACZ,OAAOjoF,KAAK+nF,gBAAgBE,GAAOD,GACrC,CACA,gBAAAe,CAAiBd,GACf,OAAOA,KAASjoF,KAAK+nF,eACvB,CACA,YAAAiB,CAAaf,GACX,MAAMD,EAAMhoF,KAAK+nF,gBAAgBE,GAAOD,WACjChoF,KAAK+nF,gBAAgBE,GAC5BD,EAAIzpD,OACN,EAEF,MAAM0qD,GACJ,WAAA1pF,CAAYM,GACVG,KAAKkpF,QAAUrpF,EACfG,KAAKmpF,SAAW,IAAItB,GAAehoF,GACnCG,KAAKwnF,gBAAkB3nF,EAAO2kF,eAC9BxkF,KAAKyhF,mBAAqB,KAC1BzhF,KAAKinF,qBAAuB,EAC9B,CACA,2BAAAmC,CAA4BxG,GAC1B,MAAM78E,EAAI/F,KAAKinF,qBAAqB3+E,QAAQs6E,GACxC78E,GAAK,GACP/F,KAAKinF,qBAAqB/4C,OAAOnoC,EAAG,EAExC,CACA,aAAA88E,GAGE,OAFApuD,GAAQz0B,KAAKyhF,mBAAoB,2DACjCzhF,KAAKyhF,mBAAqB,IAAI4H,GAAkCrpF,KAAKmpF,SAAUnpF,KAAKkpF,SAC7ElpF,KAAKyhF,kBACd,CACA,cAAAuB,CAAepB,EAAOrgE,GACpB,MAAMqhE,EAAS,IAAI0G,GAAmCtpF,KAAKmpF,SAAUvH,EAAOrgE,GAG5E,OAFAqhE,EAAO2G,SAAWvpF,KAAKopF,4BAA4B9mF,KAAKtC,MACxDA,KAAKinF,qBAAqB1+E,KAAKq6E,GACxBA,CACT,CACA,iBAAAO,CAAkB3kD,GAChBx+B,KAAKyhF,oBAAoBvgC,OAAO1iB,GAChC,IAAK,MAAMokD,KAAU5iF,KAAKinF,qBAAqBxoF,MAAM,GACnDmkF,EAAO1hC,OAAO1iB,EAElB,EAEF,MAAM6qD,GACJ,WAAA9pF,CAAYiqF,EAAS3pF,GACnBG,KAAKmpF,SAAWK,EAChBxpF,KAAKypF,KAAO5pF,EAAO8b,IACnB3b,KAAK0pF,eAAiBF,EAAQhqD,QAAQ,CACpCgpD,kBAAmBxoF,KAAK2pF,mBAAmBrnF,KAAKtC,MAChDyoF,OAAQzoF,KAAK4pF,QAAQtnF,KAAKtC,MAC1BqoF,QAASroF,KAAK6pF,SAASvnF,KAAKtC,MAC5B0iF,WAAY1iF,KAAKgiF,YAAY1/E,KAAKtC,QAEpCA,KAAKsnF,mBAAqBngF,QAAQiO,gBAClCpV,KAAKunF,cAAgB1nF,EAAOghF,eAAgB,EAC5C7gF,KAAKwhF,eAAiB3hF,EAAOrC,OAC7BwC,KAAKwnF,gBAAkB3nF,EAAO2kF,eACzBxkF,KAAKwnF,iBAAoBxnF,KAAKunF,gBACjCvnF,KAAKunF,eAAgB,GAEvBvnF,KAAKshF,uBAAwB,EAC7BthF,KAAKuhF,mBAAoB,EACzBvhF,KAAK8pF,cAAgB,GACrB9pF,KAAKujF,UAAY,GACjBvjF,KAAKqjF,OAAQ,EACbrjF,KAAK+pF,kBAAerqF,EACpBM,KAAKsjF,UAAY,KACjBtjF,KAAK0iF,WAAa,IACpB,CACA,kBAAAiH,GACE,MAAMK,EAAmBhqF,KAAK0pF,eACxBO,EAAiBjqF,KAAKmpF,SAASL,cAAckB,GACnDhqF,KAAKmpF,SAASnC,gBAAkB3C,GAAkB4F,EAAeC,aACjE,MAAMC,EAAqBF,EAAeG,wBACpC7F,EAAkB,IAAIH,QAAQ+F,EAAqBA,EAAmBE,YAAY3rF,QAAQ,WAAY,IAAIK,MAAM,WAAWoJ,KAAIjF,IACnI,MAAOwF,KAAQ0J,GAAOlP,EAAEnE,MAAM,MAC9B,MAAO,CAAC2J,EAAK0J,EAAIzT,KAAK,MAAM,IACzB,KACC,mBACJ+lF,EAAkB,gBAClBC,GACEL,GAAiC,CACnCC,kBACAN,OAAQjkF,KAAKmpF,SAASlF,OACtBO,eAAgBxkF,KAAKwnF,gBACrB3G,aAAc7gF,KAAKunF,gBAEjB7C,IACF1kF,KAAKuhF,mBAAoB,GAE3BvhF,KAAKwhF,eAAiBmD,GAAmB3kF,KAAKwhF,eAC9CxhF,KAAKsjF,UAAYsB,GAA0BL,GACvCvkF,KAAKuhF,mBACPvhF,KAAKmpF,SAASH,aAAagB,GAE7BhqF,KAAKsnF,mBAAmB3/E,SAC1B,CACA,OAAAiiF,CAAQt8E,GACN,GAAIA,EACF,GAAItN,KAAKujF,UAAU/lF,OAAS,EAAG,CACHwC,KAAKujF,UAAU56D,QACvBhhB,QAAQ,CACxB9I,MAAOyO,EAAKoY,MACZ3kB,MAAM,GAEV,MACEf,KAAK8pF,cAAcvhF,KAAK+E,EAAKoY,OAIjC,GADA1lB,KAAKqjF,OAAQ,IACTrjF,KAAK8pF,cAActsF,OAAS,GAAhC,CAGA,IAAK,MAAMqmF,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,CAPxB,CAQF,CACA,QAAAqsF,CAASzzD,GACPp2B,KAAK+pF,aAAexD,GAAoBnwD,EAAQp2B,KAAKypF,MACrDzpF,KAAKsnF,mBAAmB5/E,OAAO1H,KAAK+pF,cACpC,IAAK,MAAMlG,KAAqB7jF,KAAKujF,UACnCM,EAAkBn8E,OAAO1H,KAAK+pF,cAEhC/pF,KAAKujF,UAAU/lF,OAAS,EACxBwC,KAAK8pF,cAActsF,OAAS,CAC9B,CACA,WAAAwkF,CAAYjvC,GACV/yC,KAAK0iF,aAAa,CAChBxtB,OAAQniB,EAAImiB,OACZ6sB,MAAOhvC,EAAIu3C,iBAAmBv3C,EAAIgvC,MAAQ/hF,KAAKwhF,gBAEnD,CACA,YAAIp/C,GACF,OAAOpiC,KAAKsjF,SACd,CACA,oBAAII,GACF,OAAO1jF,KAAKuhF,iBACd,CACA,wBAAIoC,GACF,OAAO3jF,KAAKshF,qBACd,CACA,iBAAIsC,GACF,OAAO5jF,KAAKwhF,cACd,CACA,gBAAIiC,GACF,OAAOzjF,KAAKsnF,mBAAmB1/E,OACjC,CACA,UAAMd,GAEJ,SADM9G,KAAKsnF,mBAAmB1/E,QAC1B5H,KAAK+pF,aACP,MAAM/pF,KAAK+pF,aAEb,GAAI/pF,KAAK8pF,cAActsF,OAAS,EAAG,CAEjC,MAAO,CACLqB,MAFYmB,KAAK8pF,cAAcnhE,QAG/B5nB,MAAM,EAEV,CACA,GAAIf,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,MAAM8iF,EAAoB18E,QAAQiO,gBAElC,OADApV,KAAKujF,UAAUh7E,KAAKs7E,GACbA,EAAkBj8E,OAC3B,CACA,MAAAs5C,CAAO1iB,GACLx+B,KAAKqjF,OAAQ,EACbrjF,KAAKsnF,mBAAmB5/E,OAAO82B,GAC/B,IAAK,MAAMqlD,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,EACpBwC,KAAKmpF,SAASJ,iBAAiB/oF,KAAK0pF,iBACtC1pF,KAAKmpF,SAASH,aAAahpF,KAAK0pF,gBAElC1pF,KAAKyhF,mBAAqB,IAC5B,EAEF,MAAM6H,GACJ,WAAA/pF,CAAYiqF,EAAS5H,EAAOrgE,GAC1BvhB,KAAKmpF,SAAWK,EAChBxpF,KAAKypF,KAAOD,EAAQ7tE,IACpB3b,KAAKuqF,WAAaf,EAAQhqD,QAAQ,CAChCoiD,QACArgE,MACAinE,kBAAmBxoF,KAAK2pF,mBAAmBrnF,KAAKtC,MAChDyoF,OAAQzoF,KAAK4pF,QAAQtnF,KAAKtC,MAC1BqoF,QAASroF,KAAK6pF,SAASvnF,KAAKtC,MAC5B0iF,WAAY1iF,KAAKgiF,YAAY1/E,KAAKtC,QAEpCA,KAAKujF,UAAY,GACjBvjF,KAAK+jF,aAAe,KACpB/jF,KAAKqjF,OAAQ,EACbrjF,KAAK+pF,kBAAerqF,EACpBM,KAAK0iF,WAAa,KAClB1iF,KAAKupF,SAAW,IAClB,CACA,kBAAAI,GACE,MAAM/B,EAAiBvD,GAAkBrkF,KAAKmpF,SAASL,cAAc9oF,KAAKuqF,aAAaL,aACnFtC,IAAmB5nF,KAAKmpF,SAASnC,kBACnChnF,KAAK+pF,aAAe,IAAI1zE,MAAM,mCAAmCuxE,gBAA6B5nF,KAAKmpF,SAASnC,qBAC5GhnF,KAAK6pF,SAAS,GAElB,CACA,MAAAW,GACExqF,KAAKupF,WAAWvpF,KAClB,CACA,OAAA4pF,CAAQt8E,GACN,MAAMoY,EAAQpY,EAAKoY,MACnB,GAAI1lB,KAAKujF,UAAU/lF,OAAS,EAAG,CACHwC,KAAKujF,UAAU56D,QACvBhhB,QAAQ,CACxB9I,MAAO6mB,EACP3kB,MAAM,GAEV,MACEf,KAAK+jF,aAAer+D,EAEtB1lB,KAAKqjF,OAAQ,EACb,IAAK,MAAMQ,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,EACxBwC,KAAKwqF,QACP,CACA,QAAAX,CAASzzD,GACPp2B,KAAK+pF,eAAiBxD,GAAoBnwD,EAAQp2B,KAAKypF,MACvD,IAAK,MAAM5F,KAAqB7jF,KAAKujF,UACnCM,EAAkBn8E,OAAO1H,KAAK+pF,cAEhC/pF,KAAKujF,UAAU/lF,OAAS,EACxBwC,KAAK+jF,aAAe,IACtB,CACA,WAAA/B,CAAYjvC,GACL/yC,KAAK2jF,sBACR3jF,KAAK0iF,aAAa,CAChBxtB,OAAQniB,EAAImiB,QAGlB,CACA,wBAAIyuB,GACF,OAAO,CACT,CACA,UAAM78E,GACJ,GAAI9G,KAAK+pF,aACP,MAAM/pF,KAAK+pF,aAEb,GAA0B,OAAtB/pF,KAAK+jF,aAAuB,CAC9B,MAAMr+D,EAAQ1lB,KAAK+jF,aAEnB,OADA/jF,KAAK+jF,aAAe,KACb,CACLllF,MAAO6mB,EACP3kB,MAAM,EAEV,CACA,GAAIf,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,MAAM8iF,EAAoB18E,QAAQiO,gBAElC,OADApV,KAAKujF,UAAUh7E,KAAKs7E,GACbA,EAAkBj8E,OAC3B,CACA,MAAAs5C,CAAO1iB,GACLx+B,KAAKqjF,OAAQ,EACb,IAAK,MAAMQ,KAAqB7jF,KAAKujF,UACnCM,EAAkBl8E,QAAQ,CACxB9I,WAAOa,EACPqB,MAAM,IAGVf,KAAKujF,UAAU/lF,OAAS,EACpBwC,KAAKmpF,SAASJ,iBAAiB/oF,KAAKuqF,aACtCvqF,KAAKmpF,SAASH,aAAahpF,KAAKuqF,YAElCvqF,KAAKwqF,QACP,EAkBF,MAAMC,GAAW,wBAQjB,MAAMC,GACJ,WAAAnrF,CAAYM,GACVG,KAAKH,OAASA,EACdG,KAAK2b,IAVT,SAAwBgvE,GACtB,GAAIF,GAASpoF,KAAKsoF,GAChB,OAAO,IAAIlvE,IAAIkvE,GAEjB,MAAMhvE,EAAMzJ,QAAQ0U,iBAAiB,OACrC,OAAO,IAAInL,IAAIE,EAAIivE,cAAcD,GACnC,CAIeE,CAAehrF,EAAO8b,KACjC8Y,EAA6B,UAAtBz0B,KAAK2b,IAAIyZ,SAAsB,6CACtCp1B,KAAKyhF,mBAAqB,KAC1BzhF,KAAKinF,qBAAuB,EAC9B,CACA,0BAAIzE,GACF,OAAOxiF,KAAKyhF,oBAAoBgB,SAAW,CAC7C,CACA,aAAAI,GAGE,OAFApuD,GAAQz0B,KAAKyhF,mBAAoB,wDACjCzhF,KAAKyhF,mBAAqB,IAAIqJ,GAA0B9qF,MACjDA,KAAKyhF,kBACd,CACA,cAAAuB,CAAex/D,EAAOjC,GACpB,GAAIA,GAAOvhB,KAAKwiF,uBACd,OAAO,KAET,MAAMF,EAAc,IAAIyI,GAA2B/qF,KAAMwjB,EAAOjC,GAEhE,OADAvhB,KAAKinF,qBAAqB1+E,KAAK+5E,GACxBA,CACT,CACA,iBAAAa,CAAkB3kD,GAChBx+B,KAAKyhF,oBAAoBvgC,OAAO1iB,GAChC,IAAK,MAAMokD,KAAU5iF,KAAKinF,qBAAqBxoF,MAAM,GACnDmkF,EAAO1hC,OAAO1iB,EAElB,EAEF,MAAMssD,GACJ,WAAAvrF,CAAYk6D,GACVz5D,KAAKypF,KAAOhwB,EAAO99C,IACnB3b,KAAKqjF,OAAQ,EACbrjF,KAAK+pF,aAAe,KACpB/pF,KAAK0iF,WAAa,KAClB,MAAM7iF,EAAS45D,EAAO55D,OACtBG,KAAKwhF,eAAiB3hF,EAAOrC,OAC7BwC,KAAKyiF,QAAU,EACfziF,KAAKsjF,UAAY,KACjBtjF,KAAKunF,cAAgB1nF,EAAOghF,eAAgB,EAC5C7gF,KAAKwnF,gBAAkB3nF,EAAO2kF,eACzBxkF,KAAKwnF,iBAAoBxnF,KAAKunF,gBACjCvnF,KAAKunF,eAAgB,GAEvBvnF,KAAKshF,uBAAyBzhF,EAAOihF,cACrC9gF,KAAKuhF,mBAAqB1hF,EAAOghF,aACjC7gF,KAAKgrF,gBAAkB,KACvBhrF,KAAK2nF,gBAAkBxgF,QAAQiO,gBAC/BpV,KAAKsnF,mBAAqBngF,QAAQiO,gBAClC,MAAM2qD,EAAK7tD,QAAQ0U,iBAAiB,MACpCm5C,EAAGzkB,SAAS2vC,MAAMjrF,KAAKypF,MAAMl+C,MAAKlkC,IAChCrH,KAAKwhF,eAAiBn6E,EAAKwI,KAC3B7P,KAAKkrF,mBAAmBnrB,EAAGorB,iBAAiBnrF,KAAKypF,OACjDzpF,KAAKsnF,mBAAmB3/E,SAAS,IAChChI,IACkB,WAAfA,EAAMm2B,OACRn2B,EAAQ4mF,GAAoB,EAAGvmF,KAAKypF,KAAKhrE,OAE3Cze,KAAK+pF,aAAepqF,EACpBK,KAAKsnF,mBAAmB5/E,OAAO/H,EAAM,GAEzC,CACA,gBAAI8jF,GACF,OAAOzjF,KAAKsnF,mBAAmB1/E,OACjC,CACA,YAAIw6B,GACF,OAAOpiC,KAAKsjF,SACd,CACA,iBAAIM,GACF,OAAO5jF,KAAKwhF,cACd,CACA,oBAAIkC,GACF,OAAO1jF,KAAKuhF,iBACd,CACA,wBAAIoC,GACF,OAAO3jF,KAAKshF,qBACd,CACA,UAAMx6E,GAEJ,SADM9G,KAAK2nF,gBAAgB//E,QACvB5H,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,GAAIf,KAAK+pF,aACP,MAAM/pF,KAAK+pF,aAEb,MAAMrkE,EAAQ1lB,KAAKgrF,gBAAgBlkF,OACnC,GAAc,OAAV4e,EAEF,OADA1lB,KAAK2nF,gBAAkBxgF,QAAQiO,gBACxBpV,KAAK8G,OAEd9G,KAAKyiF,SAAW/8D,EAAMloB,OACtBwC,KAAK0iF,aAAa,CAChBxtB,OAAQl1D,KAAKyiF,QACbV,MAAO/hF,KAAKwhF,iBAGd,MAAO,CACL3iF,MAFa,IAAI6H,WAAWgf,GAAOvf,OAGnCpF,MAAM,EAEV,CACA,MAAAmgD,CAAO1iB,GACAx+B,KAAKgrF,gBAIVhrF,KAAKgrF,gBAAgB5gD,QAAQ5L,GAH3Bx+B,KAAKorF,OAAO5sD,EAIhB,CACA,MAAA4sD,CAAO5sD,GACLx+B,KAAK+pF,aAAevrD,EACpBx+B,KAAK2nF,gBAAgBhgF,SACvB,CACA,kBAAAujF,CAAmBG,GACjBrrF,KAAKgrF,gBAAkBK,EACvBA,EAAe12C,GAAG,YAAY,KAC5B30C,KAAK2nF,gBAAgBhgF,SAAS,IAEhC0jF,EAAe12C,GAAG,OAAO,KACvB02C,EAAejhD,UACfpqC,KAAKqjF,OAAQ,EACbrjF,KAAK2nF,gBAAgBhgF,SAAS,IAEhC0jF,EAAe12C,GAAG,SAASnW,IACzBx+B,KAAKorF,OAAO5sD,EAAO,KAEhBx+B,KAAKshF,uBAAyBthF,KAAKuhF,mBACtCvhF,KAAKorF,OAAO,IAAI70D,GAAe,0BAE7Bv2B,KAAK+pF,cACP/pF,KAAKgrF,gBAAgB5gD,QAAQpqC,KAAK+pF,aAEtC,EAEF,MAAMgB,GACJ,WAAAxrF,CAAYk6D,EAAQj2C,EAAOjC,GACzBvhB,KAAKypF,KAAOhwB,EAAO99C,IACnB3b,KAAKqjF,OAAQ,EACbrjF,KAAK+pF,aAAe,KACpB/pF,KAAK0iF,WAAa,KAClB1iF,KAAKyiF,QAAU,EACfziF,KAAKgrF,gBAAkB,KACvBhrF,KAAK2nF,gBAAkBxgF,QAAQiO,gBAC/B,MAAMvV,EAAS45D,EAAO55D,OACtBG,KAAKshF,uBAAyBzhF,EAAOihF,cACrC,MAAM/gB,EAAK7tD,QAAQ0U,iBAAiB,MACpC5mB,KAAKkrF,mBAAmBnrB,EAAGorB,iBAAiBnrF,KAAKypF,KAAM,CACrDjmE,QACAjC,IAAKA,EAAM,IAEf,CACA,wBAAIoiE,GACF,OAAO3jF,KAAKshF,qBACd,CACA,UAAMx6E,GAEJ,SADM9G,KAAK2nF,gBAAgB//E,QACvB5H,KAAKqjF,MACP,MAAO,CACLxkF,WAAOa,EACPqB,MAAM,GAGV,GAAIf,KAAK+pF,aACP,MAAM/pF,KAAK+pF,aAEb,MAAMrkE,EAAQ1lB,KAAKgrF,gBAAgBlkF,OACnC,GAAc,OAAV4e,EAEF,OADA1lB,KAAK2nF,gBAAkBxgF,QAAQiO,gBACxBpV,KAAK8G,OAEd9G,KAAKyiF,SAAW/8D,EAAMloB,OACtBwC,KAAK0iF,aAAa,CAChBxtB,OAAQl1D,KAAKyiF,UAGf,MAAO,CACL5jF,MAFa,IAAI6H,WAAWgf,GAAOvf,OAGnCpF,MAAM,EAEV,CACA,MAAAmgD,CAAO1iB,GACAx+B,KAAKgrF,gBAIVhrF,KAAKgrF,gBAAgB5gD,QAAQ5L,GAH3Bx+B,KAAKorF,OAAO5sD,EAIhB,CACA,MAAA4sD,CAAO5sD,GACLx+B,KAAK+pF,aAAevrD,EACpBx+B,KAAK2nF,gBAAgBhgF,SACvB,CACA,kBAAAujF,CAAmBG,GACjBrrF,KAAKgrF,gBAAkBK,EACvBA,EAAe12C,GAAG,YAAY,KAC5B30C,KAAK2nF,gBAAgBhgF,SAAS,IAEhC0jF,EAAe12C,GAAG,OAAO,KACvB02C,EAAejhD,UACfpqC,KAAKqjF,OAAQ,EACbrjF,KAAK2nF,gBAAgBhgF,SAAS,IAEhC0jF,EAAe12C,GAAG,SAASnW,IACzBx+B,KAAKorF,OAAO5sD,EAAO,IAEjBx+B,KAAK+pF,cACP/pF,KAAKgrF,gBAAgB5gD,QAAQpqC,KAAK+pF,aAEtC,EAKF,MAAMuB,GAAe/3E,OAAO,gBAC5B,MAAMg4E,GACJ,IAAQhtF,OAAO6M,OAAO,MACtB,IAAW+rD,GACT,OAAOn3D,MAAK,GAAMm3D,KAAW,IACxBhwD,QAAQiO,gBACX9H,KAAMg+E,GAEV,CACA,GAAAntF,CAAIg5D,EAAO7gD,EAAW,MACpB,GAAIA,EAAU,CACZ,MAAMlO,EAAMpI,MAAK,GAAWm3D,GAE5B,OADA/uD,EAAIR,QAAQ2jC,MAAK,IAAMj1B,EAASlO,EAAIkF,QAC7B,IACT,CACA,MAAMlF,EAAMpI,MAAK,GAAMm3D,GACvB,IAAK/uD,GAAOA,EAAIkF,OAASg+E,GACvB,MAAM,IAAIj1E,MAAM,6CAA6C8gD,MAE/D,OAAO/uD,EAAIkF,IACb,CACA,GAAA3I,CAAIwyD,GACF,MAAM/uD,EAAMpI,MAAK,GAAMm3D,GACvB,QAAS/uD,GAAOA,EAAIkF,OAASg+E,EAC/B,CACA,OAAOn0B,GACL,MAAM/uD,EAAMpI,MAAK,GAAMm3D,GACvB,SAAK/uD,GAAOA,EAAIkF,OAASg+E,aAGlBtrF,MAAK,GAAMm3D,IACX,EACT,CACA,OAAAxvD,CAAQwvD,EAAO7pD,EAAO,MACpB,MAAMlF,EAAMpI,MAAK,GAAWm3D,GAC5B/uD,EAAIkF,KAAOA,EACXlF,EAAIT,SACN,CACA,KAAA6X,GACE,IAAK,MAAM23C,KAASn3D,MAAK,GAAO,CAC9B,MAAM,KACJsN,GACEtN,MAAK,GAAMm3D,GACf7pD,GAAM0Q,QAAQ5T,OAChB,CACApK,MAAK,GAAQzB,OAAO6M,OAAO,KAC7B,CACA,EAAEmI,OAAO1S,YACP,IAAK,MAAMs2D,KAASn3D,MAAK,GAAO,CAC9B,MAAM,KACJsN,GACEtN,MAAK,GAAMm3D,GACX7pD,IAASg+E,UAGP,CAACn0B,EAAO7pD,GAChB,CACF,EAiBF,MAAMk+E,GACJ,IAAcrkF,QAAQiO,gBACtB,IAAa,KACb,KAAuB,EACvB,MAA0BvQ,WAAW4mF,eAAetqC,QACpD,IAAQ,KACR,IAAoB,KACpB,IAAc,EACd,IAAa,EACb,IAAU,KACV,IAAiB,KACjB,IAAY,EACZ,IAAS,EACT,IAAc5iD,OAAO6M,OAAO,MAC5B,IAAuB,GACvB,IAAqB,KACrB,IAAY,GACZ,IAAqB,IAAIhG,QACzB,IAAa,KACbw5B,UAAsB,IAAI3B,IAC1B2B,UAAyB,IAAI3B,IAC7B2B,UAAyB,IAAIx5B,QAC7Bw5B,UAAsB,KACtBA,UAA4B,IAAIpsB,IAChC,WAAAjT,EAAY,kBACVmsF,EAAiB,UACjBh6C,EAAS,SACTlM,IAEA,GAAIkmD,aAA6BvxB,eAC/Bn6D,MAAK,GAAqB0rF,MACrB,IAAiC,iBAAtBA,EAQhB,MAAM,IAAIr1E,MAAM,+CAPhBrW,MAAK,GAAqB,IAAIm6D,eAAe,CAC3C,KAAA32C,CAAM42C,GACJA,EAAWW,QAAQ2wB,GACnBtxB,EAAWhwD,OACb,GAIJ,CACApK,MAAK,GAAaA,MAAK,GAAiB0xC,EACxC1xC,MAAK,GAASwlC,EAASrF,MAAQ8F,GAAYC,WAC3ClmC,MAAK,GAAYwlC,EAASpF,SAC1BpgC,MAAK,GAAoB,CACvBulC,IAAK,KACLkpC,WAAY,KACZvpC,IAAK,MAEP,MAAM,UACJ9D,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,GACEiE,EAAStE,QACblhC,MAAK,GAAa,CAAC,EAAG,EAAG,GAAI,GAAIshC,EAAOC,EAAQF,GAChDrhC,MAAK,GAAaohC,EAClBphC,MAAK,GAAcqhC,EACnBmqD,IAAU,KACVlmD,GAAmBoM,EAAWlM,GAC9BxlC,MAAK,GAAY4H,QAAQ+jF,SAAQ,KAC/BH,IAAU,GAAmBniD,OAAOrpC,MACpCA,MAAK,GAAoB,KACzBA,MAAK,GAAc,IAAI,IACtBo8D,OAAM,QACX,CACA,wBAAWwvB,GACT,MAAM,UACJ/zD,EAAS,UACTC,GACEd,GAAiBS,SACrB,OAAOhC,EAAOz1B,KAAM,gBAAiB,IAAIi9B,IAAI,CAAC,CAAC,cAAiBpF,GAAaC,EAAY,YAAc,IAA1C,cAA2D,CAAC,aAAgBD,GAAaC,EAAY,mBAAqB,IAAjD,eACxI,CACA,MAAAgQ,GACE,MAAM+jD,EAAO,KACX7rF,MAAK,GAAQ8G,OAAOykC,MAAK,EACvB1sC,QACAkC,WAEIA,EACFf,MAAK,GAAY2H,WAGnB3H,MAAK,KAAUnB,EAAMitF,KACrBvtF,OAAO66C,OAAOp5C,MAAK,GAAanB,EAAMktF,QACtC/rF,MAAK,GAAcnB,EAAMw5C,OACzBwzC,IAAM,GACL7rF,MAAK,GAAY0H,OAAO,EAK7B,OAHA1H,MAAK,GAAUA,MAAK,GAAmB0nF,YACvC8D,IAAU,GAAmB/6E,IAAIzQ,MACjC6rF,IACO7rF,MAAK,GAAY4H,OAC1B,CACA,MAAAspD,EAAO,SACL1rB,EAAQ,SACRwmD,EAAW,OAEX,MAAM7rD,EAAQqF,EAASrF,MAAQ8F,GAAYC,WACrC9F,EAAWoF,EAASpF,SAQ1B,GAPIA,IAAapgC,MAAK,KACpBgsF,MACAhsF,MAAK,GAAYogC,EACjBkF,GAAmBtlC,MAAK,GAAgB,CACtCogC,cAGAD,IAAUngC,MAAK,GAAQ,CACzBgsF,MACAhsF,MAAK,GAASmgC,EACd,MAAM1rB,EAAS,CACb8wB,IAAK,KACLkpC,WAAY,KACZvpC,IAAKsmD,IAAU,GAAQxrF,MAAK,KAE9B,IAAK,MAAMulC,KAAOvlC,MAAK,GACrByU,EAAOg6D,WAAazuE,MAAK,GAAmB7B,IAAIonC,GAChD9wB,EAAO8wB,IAAMA,EACbvlC,MAAK,GAAQyU,EAEjB,CACF,CACA,MAAAysC,GACE,MAAM+qC,EAAU,IAAI11D,GAAe,6BACnCv2B,MAAK,IAASkhD,OAAO+qC,GAAS7vB,OAAM,SACpCp8D,MAAK,GAAU,KACfA,MAAK,GAAY0H,OAAOukF,EAC1B,CACA,YAAIC,GACF,OAAOlsF,MAAK,EACd,CACA,uBAAImsF,GACF,OAAOnsF,MAAK,EACd,CACA,IAAcq4C,GACZ,GAAIr4C,MAAK,GACP,OAEFA,MAAK,GAAkBklC,MAAQsmD,IAAU,GAAQxrF,MAAK,IACtD,MAAMksF,EAAWlsF,MAAK,GACpBmsF,EAAsBnsF,MAAK,GAC7B,IAAK,MAAM0R,KAAQ2mC,EAAO,CACxB,GAAI6zC,EAAS1uF,OAhJa,IAmJxB,OAFA+2B,EAAK,8DACLv0B,MAAK,IAAuB,GAG9B,QAAiBN,IAAbgS,EAAKolB,IAcTq1D,EAAoB5jF,KAAKmJ,EAAKolB,KAC9B92B,MAAK,GAAY0R,QAdf,GAAkB,4BAAdA,EAAK/L,MAAoD,uBAAd+L,EAAK/L,KAA+B,CACjF,MAAMilC,EAAS5qC,MAAK,GACpBA,MAAK,GAAa4K,SAAS0G,cAAc,QACzCtR,MAAK,GAAWgoC,UAAUv3B,IAAI,iBACd,OAAZiB,EAAKlC,IACPxP,MAAK,GAAWgmC,aAAa,KAAM,GAAGt0B,EAAKlC,MAE7Co7B,EAAOt2B,OAAOtU,MAAK,GACrB,KAAyB,qBAAd0R,EAAK/L,OACd3F,MAAK,GAAaA,MAAK,GAAWwhD,WAMxC,CACF,CACA,IAAY4qC,GACV,MAAMC,EAAUzhF,SAAS0G,cAAc,QACjCg7E,EAAoB,CACxBxjC,MAAO,EACPoe,YAAa,EACbqlB,QAAsB,KAAbH,EAAKt1D,IACd01D,OAAQJ,EAAKI,OACb/gB,SAAU,GAEZzrE,MAAK,GAAUuI,KAAK8jF,GACpB,MAAMpuC,EAAK7lB,GAAK1J,UAAU1uB,MAAK,GAAYosF,EAAK19D,WAChD,IAAIo6B,EAAQ/lD,KAAK0pF,MAAMxuC,EAAG,GAAIA,EAAG,IACjC,MAAMnzC,EAAQ9K,MAAK,GAAYosF,EAAKM,UAChC5hF,EAAMivE,WACRjxB,GAAS/lD,KAAK4pF,GAAK,GAErB,IAAIx2B,EAAan2D,MAAK,IAAyB8K,EAAM8hF,kBAAoB9hF,EAAMqrD,WAC/EA,EAAaq1B,GAAUI,cAAcztF,IAAIg4D,IAAeA,EACxD,MAAM02B,EAAa9pF,KAAKihD,MAAM/F,EAAG,GAAIA,EAAG,IAClC6uC,EAAaD,EAAarB,IAAU,GAAWr1B,EAAYrrD,EAAO9K,MAAK,IAC7E,IAAIwoD,EAAM/f,EACI,IAAVqgB,GACFN,EAAOvK,EAAG,GACVxV,EAAMwV,EAAG,GAAK6uC,IAEdtkC,EAAOvK,EAAG,GAAK6uC,EAAa/pF,KAAKgqF,IAAIjkC,GACrCrgB,EAAMwV,EAAG,GAAK6uC,EAAa/pF,KAAKiqF,IAAIlkC,IAEtC,MAAMmkC,EAAiB,mCACjBC,EAAWb,EAAQvhF,MACrB9K,MAAK,KAAeA,MAAK,IAC3BktF,EAAS1kC,KAAO,IAAI,IAAMA,EAAOxoD,MAAK,IAAYyoD,QAAQ,MAC1DykC,EAASzkD,IAAM,IAAI,IAAMA,EAAMzoC,MAAK,IAAayoD,QAAQ,QAEzDykC,EAAS1kC,KAAO,GAAGykC,IAAiBzkC,EAAKC,QAAQ,QACjDykC,EAASzkD,IAAM,GAAGwkD,IAAiBxkD,EAAIggB,QAAQ,SAEjDykC,EAASzhB,SAAW,GAAGwhB,KAAkBzB,IAAU,GAAeqB,GAAYpkC,QAAQ,QACtFykC,EAAS/2B,WAAaA,EACtBm2B,EAAkB7gB,SAAWohB,EAC7BR,EAAQrmD,aAAa,OAAQ,gBAC7BqmD,EAAQ9qC,YAAc6qC,EAAKt1D,IAC3Bu1D,EAAQc,IAAMf,EAAKe,IACfntF,MAAK,KACPqsF,EAAQe,QAAQV,SAAW5hF,EAAMuiF,4BAA8BjB,EAAKM,UAExD,IAAV5jC,IACFwjC,EAAkBxjC,MAAQA,GAAS,IAAM/lD,KAAK4pF,KAEhD,IAAIW,GAAkB,EACtB,GAAIlB,EAAKt1D,IAAIt5B,OAAS,EACpB8vF,GAAkB,OACb,GAAiB,MAAblB,EAAKt1D,KAAes1D,EAAK19D,UAAU,KAAO09D,EAAK19D,UAAU,GAAI,CACtE,MAAM6+D,EAAYxqF,KAAK25B,IAAI0vD,EAAK19D,UAAU,IACxC8+D,EAAYzqF,KAAK25B,IAAI0vD,EAAK19D,UAAU,IAClC6+D,IAAcC,GAAazqF,KAAKkO,IAAIs8E,EAAWC,GAAazqF,KAAKiG,IAAIukF,EAAWC,GAAa,MAC/FF,GAAkB,EAEtB,CAWA,GAVIA,IACFhB,EAAkBplB,YAAcp8D,EAAMivE,SAAWqS,EAAKnrD,OAASmrD,EAAKprD,OAEtEhhC,MAAK,GAAmB0E,IAAI2nF,EAASC,GACrCtsF,MAAK,GAAkBulC,IAAM8mD,EAC7BrsF,MAAK,GAAkByuE,WAAa6d,EACpCtsF,MAAK,GAAQA,MAAK,IACdssF,EAAkBC,SACpBvsF,MAAK,GAAWsU,OAAO+3E,GAErBC,EAAkBE,OAAQ,CAC5B,MAAMiB,EAAK7iF,SAAS0G,cAAc,MAClCm8E,EAAGznD,aAAa,OAAQ,gBACxBhmC,MAAK,GAAWsU,OAAOm5E,EACzB,CACF,CACA,IAAQh5E,GACN,MAAM,IACJ8wB,EAAG,WACHkpC,EAAU,IACVvpC,GACEzwB,GACE,MACJ3J,GACEy6B,EACJ,IAAI7W,EAAY,GAIhB,GAHI88D,IAAU,GAAe,IAC3B98D,EAAY,SAAS,EAAI88D,IAAU,OAEN,IAA3B/c,EAAWvH,aAAqBuH,EAAW8d,QAAS,CACtD,MAAM,WACJp2B,GACErrD,GACE,YACJo8D,EAAW,SACXuE,GACEgD,EACJ+c,IAAU,GAAetmD,EAAKumC,EAAWzrE,MAAK,GAAQm2D,GACtD,MAAM,MACJn1B,GACEkE,EAAIk2C,YAAY71C,EAAIgc,aACpBvgB,EAAQ,IACVtS,EAAY,UAAUw4C,EAAclnE,MAAK,GAASghC,MAAUtS,IAEhE,CACyB,IAArB+/C,EAAW3lB,QACbp6B,EAAY,UAAU+/C,EAAW3lB,aAAap6B,KAE5CA,EAAUlxB,OAAS,IACrBsN,EAAM4jB,UAAYA,EAEtB,CACA,cAAOg/D,GACL,KAAI1tF,MAAK,GAAmB6P,KAAO,GAAnC,CAGA7P,MAAK,GAAawf,QAClB,IAAK,MAAM,OACTytB,KACGjtC,MAAK,GAAgB+e,SACxBkuB,EAAOh9B,SAETjQ,MAAK,GAAgBwf,OAPrB,CAQF,CACA,SAAO,CAAQssE,EAAO,MACpB,IAAI5mD,EAAMllC,MAAK,GAAgB7B,IAAI2tF,IAAS,IAC5C,IAAK5mD,EAAK,CACR,MAAM+H,EAASriC,SAAS0G,cAAc,UACtC27B,EAAO7E,UAAY,sBACnB6E,EAAO6+C,KAAOA,EACdlhF,SAAS2kC,KAAKj7B,OAAO24B,GACrB/H,EAAM+H,EAAO9B,WAAW,KAAM,CAC5BwiD,OAAO,EACPviD,oBAAoB,IAEtBprC,MAAK,GAAgB0E,IAAIonF,EAAM5mD,GAC/BllC,MAAK,GAAgB0E,IAAIwgC,EAAK,CAC5Br1B,KAAM,EACNslD,OAAQ,IAEZ,CACA,OAAOjwB,CACT,CACA,SAAO,CAAeA,EAAKr1B,EAAMslD,GAC/B,MAAMy4B,EAAS5tF,MAAK,GAAgB7B,IAAI+mC,GACpCr1B,IAAS+9E,EAAO/9E,MAAQslD,IAAWy4B,EAAOz4B,SAG9CjwB,EAAI4vB,KAAO,GAAGjlD,OAAUslD,IACxBy4B,EAAO/9E,KAAOA,EACd+9E,EAAOz4B,OAASA,EAClB,CACA,SAAO,GACL,GAA0B,OAAtBn1D,MAAK,GACP,OAEF,MAAMulC,EAAM36B,SAAS0G,cAAc,OACnCi0B,EAAIz6B,MAAM+iF,QAAU,EACpBtoD,EAAIz6B,MAAMgjF,WAAa,EACvBvoD,EAAIz6B,MAAM2gE,SAAW,MACrBlmC,EAAIz6B,MAAMu9B,SAAW,WACrB9C,EAAIgc,YAAc,IAClB32C,SAAS2kC,KAAKj7B,OAAOixB,GACrBvlC,MAAK,GAAeulC,EAAI8P,wBAAwBpU,OAChDsE,EAAIt1B,QACN,CACA,SAAO,CAAWkmD,EAAYrrD,EAAOghF,GACnC,MAAMiC,EAAe/tF,MAAK,GAAa7B,IAAIg4D,GAC3C,GAAI43B,EACF,OAAOA,EAET,MAAM7oD,EAAMllC,MAAK,GAAQ8rF,GACzB5mD,EAAI+H,OAAOjM,MAAQkE,EAAI+H,OAAOhM,OAjVR,GAkVtBjhC,MAAK,GAAeklC,EAlVE,GAkVsBixB,GAC5C,MAAM63B,EAAU9oD,EAAIk2C,YAAY,IAC1B6S,EAASD,EAAQE,sBACjBC,EAAUprF,KAAK25B,IAAIsxD,EAAQI,wBACjClpD,EAAI+H,OAAOjM,MAAQkE,EAAI+H,OAAOhM,OAAS,EACvC,IAAIotD,EAAQ,GAcZ,OAbIJ,EACFI,EAAQJ,GAAUA,EAASE,IAEvBn3D,GAAiBS,SAASK,WAC5BvD,EAAK,qHAEHzpB,EAAMmjF,OACRI,EAAQvjF,EAAMmjF,OACLnjF,EAAMqjF,UACfE,EAAQ,EAAIvjF,EAAMqjF,UAGtBnuF,MAAK,GAAa0E,IAAIyxD,EAAYk4B,GAC3BA,CACT,EAKF,MAAMC,GACJ,kBAAO/sC,CAAYgtC,GACjB,MAAMl2C,EAAQ,GACRze,EAAS,CACbye,QACA0zC,OAAQxtF,OAAO6M,OAAO,OA8BxB,OA5BA,SAASojF,EAAK9rE,GACZ,IAAKA,EACH,OAEF,IAAIoU,EAAM,KACV,MAAM73B,EAAOyjB,EAAKzjB,KAClB,GAAa,UAATA,EACF63B,EAAMpU,EAAK7jB,UACN,KAAKyvF,GAAQG,gBAAgBxvF,GAClC,OACSyjB,GAAMmiB,YAAY0c,YAC3BzqB,EAAMpU,EAAKmiB,WAAW0c,YACb7+B,EAAK7jB,QACdi4B,EAAMpU,EAAK7jB,MACb,CAMA,GALY,OAARi4B,GACFuhB,EAAM9vC,KAAK,CACTuuB,QAGCpU,EAAK0sC,SAGV,IAAK,MAAMO,KAASjtC,EAAK0sC,SACvBo/B,EAAK7+B,EAET,CACA6+B,CAAKD,GACE30D,CACT,CACA,sBAAO60D,CAAgBxvF,GACrB,QAAkB,aAATA,GAAgC,UAATA,GAA6B,WAATA,GAA8B,WAATA,EAC3E,EAmDF,SAASyvF,GAAYzjF,EAAM,CAAC,GACP,iBAARA,GAAoBA,aAAewQ,IAC5CxQ,EAAM,CACJ0Q,IAAK1Q,IAEEA,aAAe7E,aAAeA,YAAY+qD,OAAOlmD,MAC1DA,EAAM,CACJqC,KAAMrC,IAGV,MAAM0jF,EAAO,IAAIC,IACX,MACJzxB,GACEwxB,EACEhzE,EAAM1Q,EAAI0Q,IAryLlB,SAAoBvJ,GAClB,GAAIA,aAAeqJ,IACjB,OAAOrJ,EAAIqM,KAEb,GAAmB,iBAARrM,EAAkB,CAC3B,GAAI8W,EACF,OAAO9W,EAET,MAAMuJ,EAAMF,IAAIC,MAAMtJ,EAAKD,OAAO08E,UAClC,GAAIlzE,EACF,OAAOA,EAAI8C,IAEf,CACA,MAAM,IAAIpI,MAAM,qFAClB,CAuxLwBy4E,CAAW7jF,EAAI0Q,KAAO,KACtCrO,EAAOrC,EAAIqC,KAvxLnB,SAAqB8E,GACnB,GAAI8W,GAA8B,oBAAX6lE,QAA0B38E,aAAe28E,OAC9D,MAAM,IAAI14E,MAAM,qEAElB,GAAIjE,aAAe1L,YAAc0L,EAAI7L,aAAe6L,EAAIjM,OAAOI,WAC7D,OAAO6L,EAET,GAAmB,iBAARA,EACT,OAAOykB,GAAczkB,GAEvB,GAAIA,aAAehM,aAAeA,YAAY+qD,OAAO/+C,IAAuB,iBAARA,IAAqB48E,MAAM58E,GAAK5U,QAClG,OAAO,IAAIkJ,WAAW0L,GAExB,MAAM,IAAIiE,MAAM,6GAClB,CAywL0B44E,CAAYhkF,EAAIqC,MAAQ,KAC1C42E,EAAcj5E,EAAIi5E,aAAe,KACjCwC,GAA0C,IAAxBz7E,EAAIy7E,gBACtBwI,EAAWjkF,EAAIikF,UAAY,KAC3BC,EAAiBlkF,EAAIi0C,iBAAiBkwC,GAAwBnkF,EAAIi0C,MAAQ,KAC1EslC,EAAiBxiE,OAAOiS,UAAUhpB,EAAIu5E,iBAAmBv5E,EAAIu5E,eAAiB,EAAIv5E,EAAIu5E,eAAiB,MAC7G,IAAI6K,EAASpkF,EAAIokF,kBAAkBC,GAAYrkF,EAAIokF,OAAS,KAC5D,MAAMv7D,EAAY7oB,EAAI6oB,UAChBy7D,EAAuC,iBAAnBtkF,EAAIskF,YAA4BxtD,GAAa92B,EAAIskF,YAA+B,KAAjBtkF,EAAIskF,WACvFC,EAAUh4B,GAAkBvsD,EAAIukF,SAChCC,GAAgC,IAAnBxkF,EAAIwkF,WACjBC,EAAoBzkF,EAAIykF,oBAAsBxmE,EAAWk3C,GAAwB/D,IACjFszB,EAASn4B,GAAkBvsD,EAAI0kF,QAC/BC,EAAsBp4B,GAAkBvsD,EAAI2kF,qBAC5CC,EAA0B5kF,EAAI4kF,0BAA4B3mE,EAAWm3C,GAA8Bf,IACnGwwB,EAAUt4B,GAAkBvsD,EAAI6kF,SAChCC,EAAc9kF,EAAI8kF,cAAgB7mE,EAAWo3C,GAAkBd,IAC/DwwB,GAAoC,IAArB/kF,EAAIglF,aACnBC,EAAeluE,OAAOiS,UAAUhpB,EAAIilF,eAAiBjlF,EAAIilF,cAAgB,EAAIjlF,EAAIilF,cAAgB,EACjG94D,GAA0C,IAAxBnsB,EAAImsB,gBACtBC,EAAuE,kBAAnCpsB,EAAIosB,2BAA2CpsB,EAAIosB,4BAA8BnO,EACrHqO,EAAiE,kBAAhCtsB,EAAIssB,wBAAwCtsB,EAAIssB,yBAA2BrO,IAAa8N,GAAiBS,SAASK,YAAcjzB,WAAWsrF,QAC5KC,EAAuBpuE,OAAOiS,UAAUhpB,EAAImlF,sBAAwBnlF,EAAImlF,sBAAwB,EAChG97B,EAAiD,kBAAxBrpD,EAAIqpD,gBAAgCrpD,EAAIqpD,gBAAkBprC,EACnFquC,GAAkD,IAA5BtsD,EAAIssD,oBAC1B84B,GAA8B,IAAlBplF,EAAIolF,UAChBj9B,EAAgBnoD,EAAImoD,eAAiBvuD,WAAW+F,SAChDi2E,GAAoC,IAArB51E,EAAI41E,aACnBC,GAAsC,IAAtB71E,EAAI61E,cACpBwP,GAA4C,IAAzBrlF,EAAIqlF,iBACvBC,GAAwB,IAAftlF,EAAIslF,OACbC,EAAgBvlF,EAAIulF,gBAAkBtnE,EAAWg3C,GAAoBnE,IACrE00B,EAAgBxlF,EAAIwlF,gBAAkBvnE,EAAW+2C,GAAoB/C,IACrEvB,GAA8B,IAAlB1wD,EAAI0wD,UAChB+0B,GAA0B,IAAhBzlF,EAAIylF,QACdlzF,EAAS2xF,EAAiBA,EAAe3xF,OAASyN,EAAIzN,QAAUuwC,IAChE4iD,EAA+C,kBAAvB1lF,EAAI0lF,eAA+B1lF,EAAI0lF,gBAAkBznE,IAAaorC,EAC9Fs8B,EAA+C,kBAAvB3lF,EAAI2lF,eAA+B3lF,EAAI2lF,kBAAoBlB,IAAsBrzB,IAAwBwzB,IAA4BvwB,IAA8BywB,IAAgBvwB,IAAkBgwB,GAAWI,GAAuBE,GAAW9wD,GAAgBwwD,EAAS5kF,SAASq0B,UAAYD,GAAgB4wD,EAAqBhlF,SAASq0B,UAAYD,GAAgB8wD,EAASllF,SAASq0B,UAE1ZlL,EAAkBD,GAClB,MAAM+8D,EAAmB,CACvB5mB,cAAe,IAAIumB,EAAc,CAC/Bp9B,gBACAuI,cAEFzoB,cAAe,IAAIu9C,EAAc,CAC/BtzB,QACA/J,kBAEF09B,kBAAmBF,EAAiB,KAAO,IAAIlB,EAAkB,CAC/D96D,QAAS46D,EACTvzB,aAAcwzB,IAEhBsB,wBAAyBH,EAAiB,KAAO,IAAIf,EAAwB,CAC3Ej7D,QAASg7D,IAEXoB,YAAaJ,EAAiB,KAAO,IAAIb,EAAY,CACnDn7D,QAASk7D,KAGRT,IACHA,EAASC,GAAUlkF,OAAO,CACxB0oB,YACAm9D,KAAM1S,GAAoBC,aAE5BmQ,EAAKuC,QAAU7B,GAEjB,MAAM8B,EAAY,CAChBh0B,QACAi0B,WAAY,SACZ9jF,OACA4hF,WACAoB,mBACA9L,iBACAhnF,SACA+xF,aACAc,YACAgB,iBAAkB,CAChBnB,eACA57B,kBACA07B,eACA54D,kBACAC,6BACAE,0BACA64D,uBACA74B,sBACAo5B,iBACAD,UACAE,iBACApB,UACAG,SACAC,sBACAE,YAGEwB,EAAkB,CACtBl+B,gBACAm9B,SACAl9B,aA5DmB,KA6DnBk+B,cAAe,CACbjB,mBACAD,cA6CJ,OA1CAhB,EAAOznF,QAAQ2jC,MAAK,WAClB,GAAIojD,EAAK6C,UACP,MAAM,IAAIn7E,MAAM,mBAElB,GAAIg5E,EAAOmC,UACT,MAAM,IAAIn7E,MAAM,wBAElB,MAAMo7E,EAAkBpC,EAAOqC,eAAe13B,gBAAgB,gBAAiBm3B,EAAW7jF,EAAO,CAACA,EAAKnH,QAAU,MACjH,IAAIwrF,EACJ,GAAIxC,EACFwC,EAAgB,IAAIhR,GAAuBwO,EAAgB,CACzDtO,eACAC,uBAEG,IAAKxzE,EAAM,CAChB,IAAKqO,EACH,MAAM,IAAItF,MAAM,8CAElB,MAAMu7E,EAAgB5yD,GAAgBrjB,GAAOorE,GAAiB79D,EAAWwhE,GAAgBzB,GACzF0I,EAAgB,IAAIC,EAAc,CAChCj2E,MACAne,SACA0mF,cACAwC,kBACAlC,iBACA3D,eACAC,iBAEJ,CACA,OAAO2Q,EAAgBlmD,MAAKsmD,IAC1B,GAAIlD,EAAK6C,UACP,MAAM,IAAIn7E,MAAM,mBAElB,GAAIg5E,EAAOmC,UACT,MAAM,IAAIn7E,MAAM,wBAElB,MAAMq7E,EAAiB,IAAI34B,GAAeoE,EAAO00B,EAAUxC,EAAO4B,MAC5Da,EAAY,IAAIC,GAAgBL,EAAgB/C,EAAMgD,EAAeL,EAAiBT,GAC5FlC,EAAKqD,WAAaF,EAClBJ,EAAe3xD,KAAK,QAAS,KAAK,GAEtC,IAAGq8B,MAAMuyB,EAAKsD,YAAYvqF,QACnBinF,CACT,CACA,MAAMC,GACJhwD,UAAgB,EAChBqzD,YAAc9qF,QAAQiO,gBACtB48E,WAAa,KACbd,QAAU,KACV/zB,MAAQ,IAAIyxB,IAAuB,KACnC4C,WAAY,EACZU,WAAa,KACbxP,WAAa,KACb,WAAI96E,GACF,OAAO5H,KAAKiyF,YAAYrqF,OAC1B,CACA,aAAMwiC,GACJpqC,KAAKwxF,WAAY,EACjB,IACMxxF,KAAKkxF,SAASD,OAChBjxF,KAAKkxF,QAAQiB,iBAAkB,SAE3BnyF,KAAKgyF,YAAY5nD,UACzB,CAAE,MAAO0O,GAIP,MAHI94C,KAAKkxF,SAASD,aACTjxF,KAAKkxF,QAAQiB,gBAEhBr5C,CACR,CACA94C,KAAKgyF,WAAa,KAClBhyF,KAAKkxF,SAAS9mD,UACdpqC,KAAKkxF,QAAU,IACjB,CACA,aAAMr4C,GACJ,OAAO74C,KAAKgyF,WAAWn5C,SACzB,EAEF,MAAMu2C,GACJ,IAAcjoF,QAAQiO,gBACtB,IAA4B,GAC5B,IAA4B,GAC5B,IAAqB,GACrB,IAAkB,GAClB,WAAA7V,CAAY/B,EAAQujF,EAAaC,GAAkB,EAAOC,EAA6B,MACrFjhF,KAAKxC,OAASA,EACdwC,KAAK+gF,YAAcA,EACnB/gF,KAAKghF,gBAAkBA,EACvBhhF,KAAKihF,2BAA6BA,CACpC,CACA,gBAAAU,CAAiBrpB,GACft4D,MAAK,GAAgBuI,KAAK+vD,EAC5B,CACA,mBAAAwpB,CAAoBxpB,GAClBt4D,MAAK,GAAmBuI,KAAK+vD,EAC/B,CACA,0BAAA2pB,CAA2B3pB,GACzBt4D,MAAK,GAA0BuI,KAAK+vD,EACtC,CACA,0BAAA4pB,CAA2B5pB,GACzBt4D,MAAK,GAA0BuI,KAAK+vD,EACtC,CACA,WAAA85B,CAAYxQ,EAAOl8D,GACjB,IAAK,MAAM4yC,KAAYt4D,MAAK,GAC1Bs4D,EAASspB,EAAOl8D,EAEpB,CACA,cAAA2sE,CAAen9B,EAAQ6sB,GACrB/hF,MAAK,GAAY4H,QAAQ2jC,MAAK,KAC5B,IAAK,MAAM+sB,KAAYt4D,MAAK,GAC1Bs4D,EAASpD,EAAQ6sB,EACnB,GAEJ,CACA,qBAAAuQ,CAAsB5sE,GACpB1lB,MAAK,GAAY4H,QAAQ2jC,MAAK,KAC5B,IAAK,MAAM+sB,KAAYt4D,MAAK,GAC1Bs4D,EAAS5yC,EACX,GAEJ,CACA,qBAAA6sE,GACEvyF,MAAK,GAAY4H,QAAQ2jC,MAAK,KAC5B,IAAK,MAAM+sB,KAAYt4D,MAAK,GAC1Bs4D,GACF,GAEJ,CACA,cAAA8pB,GACEpiF,MAAK,GAAY2H,SACnB,CACA,gBAAAu7E,CAAiBtB,EAAOrgE,GACtBiT,EAAY,yDACd,CACA,KAAA+J,GAAS,EAEX,MAAMi0D,GACJ,WAAAjzF,CAAYkzF,EAASX,GACnB9xF,KAAK0yF,SAAWD,EAChBzyF,KAAKgyF,WAAaF,CACpB,CACA,qBAAI7+C,GACF,OAAOjzC,KAAKgyF,WAAW/+C,iBACzB,CACA,iBAAIg3B,GACF,OAAOjqE,KAAKgyF,WAAW/nB,aACzB,CACA,iBAAI/2B,GACF,OAAOlzC,KAAKgyF,WAAW9+C,aACzB,CACA,YAAIy/C,GACF,OAAO3yF,KAAK0yF,SAASC,QACvB,CACA,gBAAIC,GACF,OAAO5yF,KAAK0yF,SAASE,YACvB,CACA,aAAIC,GACF,OAAOp9D,EAAOz1B,KAAM,cAAeA,KAAKgyF,WAAWc,YACrD,CACA,cAAIC,GACF,OAAO/yF,KAAKgyF,WAAWc,WACzB,CACA,OAAAE,CAAQj+C,GACN,OAAO/0C,KAAKgyF,WAAWgB,QAAQj+C,EACjC,CACA,YAAAk+C,CAAaC,GACX,OAAOlzF,KAAKgyF,WAAWiB,aAAaC,EACtC,CACA,eAAAC,GACE,OAAOnzF,KAAKgyF,WAAWmB,iBACzB,CACA,cAAAC,CAAe5jF,GACb,OAAOxP,KAAKgyF,WAAWoB,eAAe5jF,EACxC,CACA,aAAA6jF,GACE,OAAOrzF,KAAKgyF,WAAWqB,eACzB,CACA,aAAAC,GACE,OAAOtzF,KAAKgyF,WAAWsB,eACzB,CACA,WAAAC,GACE,OAAOvzF,KAAKgyF,WAAWuB,aACzB,CACA,oBAAAC,GACE,OAAOxzF,KAAKgyF,WAAWwB,sBACzB,CACA,aAAAC,GACE,OAAOzzF,KAAKgyF,WAAWyB,eACzB,CACA,cAAAC,GACE,OAAO1zF,KAAKgyF,WAAW0B,gBACzB,CACA,YAAAC,GACE,OAAO3zF,KAAKgyF,WAAW4B,iBACzB,CACA,UAAAC,GACE,OAAO7zF,KAAKgyF,WAAW6B,YACzB,CACA,wBAAAC,EAAyB,OACvBrf,EAAS,WACP,CAAC,GACH,MAAM,gBACJuK,GACEh/E,KAAKgyF,WAAW+B,mBAAmBtf,GACvC,OAAOz0E,KAAKgyF,WAAW8B,yBAAyB9U,EAClD,CACA,cAAAgV,GACE,OAAOh0F,KAAKgyF,WAAWgC,gBACzB,CACA,WAAAC,GACE,OAAOj0F,KAAKgyF,WAAWiC,aACzB,CACA,WAAAC,GACE,OAAOl0F,KAAKgyF,WAAWkC,aACzB,CACA,OAAAr7C,GACE,OAAO74C,KAAKgyF,WAAWn5C,SACzB,CACA,YAAAs7C,GACE,OAAOn0F,KAAKgyF,WAAWmC,cACzB,CACA,eAAAC,GACE,OAAOp0F,KAAKgyF,WAAWqC,uBAAuBzsF,OAChD,CACA,OAAA8lF,CAAQ4G,GAAkB,GACxB,OAAOt0F,KAAKgyF,WAAWuC,aAAaD,GAAmBt0F,KAAK6yF,UAC9D,CACA,OAAAzoD,GACE,OAAOpqC,KAAKw0F,YAAYpqD,SAC1B,CACA,gBAAAqqD,CAAiBvB,GACf,OAAOlzF,KAAKgyF,WAAWyC,iBAAiBvB,EAC1C,CACA,iBAAI3B,GACF,OAAOvxF,KAAKgyF,WAAWT,aACzB,CACA,eAAIiD,GACF,OAAOx0F,KAAKgyF,WAAWwC,WACzB,CACA,eAAAE,GACE,OAAO10F,KAAKgyF,WAAW0C,iBACzB,CACA,YAAAC,GACE,OAAO30F,KAAKgyF,WAAW2C,cACzB,CACA,sBAAAC,GACE,OAAO50F,KAAKgyF,WAAW4C,wBACzB,EAEF,MAAMC,GACJ,KAAkB,EAClB,WAAAt1F,CAAYo6C,EAAWm7C,EAAUhD,EAAWvB,GAAS,GACnDvwF,KAAK+0F,WAAap7C,EAClB35C,KAAKg1F,UAAYF,EACjB90F,KAAKgyF,WAAaF,EAClB9xF,KAAKi1F,OAAS1E,EAAS,IAAIvtD,GAAc,KACzChjC,KAAKk1F,QAAU3E,EACfvwF,KAAK+vE,WAAa+hB,EAAU/hB,WAC5B/vE,KAAKi3D,KAAO,IAAIs0B,GAChBvrF,KAAKm1F,cAAgB,IAAIl4D,IACzBj9B,KAAKwxF,WAAY,CACnB,CACA,cAAIz8C,GACF,OAAO/0C,KAAK+0F,WAAa,CAC3B,CACA,UAAInmC,GACF,OAAO5uD,KAAKg1F,UAAUpmC,MACxB,CACA,OAAIskC,GACF,OAAOlzF,KAAKg1F,UAAU9B,GACxB,CACA,YAAIhzD,GACF,OAAOlgC,KAAKg1F,UAAU90D,QACxB,CACA,QAAIi/C,GACF,OAAOn/E,KAAKg1F,UAAU7V,IACxB,CACA,WAAAiW,EAAY,MACVj1D,EAAK,SACLC,EAAWpgC,KAAK4uD,OAAM,QACtBvuB,EAAU,EAAC,QACXC,EAAU,EAAC,SACXC,GAAW,GACT,CAAC,GACH,OAAO,IAAIP,GAAa,CACtBC,QAASjgC,KAAKm/E,KACdj/C,SAAUlgC,KAAKkgC,SACfC,QACAC,WACAC,UACAC,UACAC,YAEJ,CACA,cAAA80D,EAAe,OACb5gB,EAAS,WACP,CAAC,GACH,MAAM,gBACJuK,GACEh/E,KAAKgyF,WAAW+B,mBAAmBtf,GACvC,OAAOz0E,KAAKgyF,WAAWqD,eAAer1F,KAAK+0F,WAAY/V,EACzD,CACA,YAAA2U,GACE,OAAO3zF,KAAKgyF,WAAWsD,iBAAiBt1F,KAAK+0F,WAC/C,CACA,iBAAI7hD,GACF,OAAOlzC,KAAKgyF,WAAW9+C,aACzB,CACA,aAAI2/C,GACF,OAAOp9D,EAAOz1B,KAAM,cAAeA,KAAKgyF,WAAWc,YACrD,CACA,YAAMyC,GACJ,OAAOv1F,KAAKgyF,WAAWc,aAAa1jC,SAASpvD,KAAK+0F,aAAe,IACnE,CACA,MAAAjtD,EAAO,cACL0tD,EAAa,SACbhwD,EAAQ,OACRivC,EAAS,UAAS,eAClBghB,EAAiBjsE,EAAeE,OAAM,UACtCgF,EAAY,KAAI,WAChBslB,EAAa,KAAI,6BACjB0hD,EAA+B,KAAI,oBACnCxlB,EAAsB,KAAI,WAC1Bl+B,EAAa,KAAI,uBACjB2jD,EAAyB,KAAI,UAC7BxlD,GAAY,IAEZnwC,KAAKi1F,QAAQ9xD,KAAK,WAClB,MAAMyyD,EAAa51F,KAAKgyF,WAAW+B,mBAAmBtf,EAAQghB,EAAgBE,EAAwBxlD,IAChG,gBACJ6uC,EAAe,SACfrL,GACEiiB,EACJ51F,MAAK,IAAkB,EACvB01F,IAAiC11F,KAAKgyF,WAAW8B,yBAAyB9U,GAC1E,IAAI6W,EAAc71F,KAAKm1F,cAAch3F,IAAIw1E,GACpCkiB,IACHA,EAAct3F,OAAO6M,OAAO,MAC5BpL,KAAKm1F,cAAczwF,IAAIivE,EAAUkiB,IAE/BA,EAAYC,4BACdriD,aAAaoiD,EAAYC,2BACzBD,EAAYC,0BAA4B,MAE1C,MAAMC,KAAiB/W,EAAkBz1D,GACpCssE,EAAYG,yBACfH,EAAYG,uBAAyB7uF,QAAQiO,gBAC7CygF,EAAYnvB,aAAe,CACzBuL,QAAS,GACTD,UAAW,GACXikB,WAAW,EACXC,eAAgB,MAElBl2F,KAAKi1F,QAAQ9xD,KAAK,gBAClBnjC,KAAKm2F,kBAAkBP,IAEzB,MAAMpgC,EAAW71D,IACfk2F,EAAYO,YAAY/sD,OAAOgtD,GAC3BN,IACF/1F,MAAK,IAAkB,GAEzBA,MAAK,KACDL,GACF02F,EAAmB38B,WAAWhyD,OAAO/H,GACrCK,KAAKs2F,mBAAmB,CACtBT,cACAr3D,OAAQ7+B,aAAiB0W,MAAQ1W,EAAQ,IAAI0W,MAAM1W,MAGrD02F,EAAmB38B,WAAW/xD,UAE5B3H,KAAKi1F,SACPj1F,KAAKi1F,OAAO3xD,QAAQ,aACpBtjC,KAAKi1F,OAAO3xD,QAAQ,WAChBz+B,WAAW0xF,OAAOp1C,SACpBt8C,WAAW0xF,MAAM9lF,IAAIzQ,KAAK+0C,WAAY/0C,KAAKi1F,QAE/C,EAEIoB,EAAqB,IAAIG,GAAmB,CAChDlgF,SAAUk/C,EACV/gD,OAAQ,CACN+gF,gBACAhwD,WACA9W,YACAslB,cAEFijB,KAAMj3D,KAAKi3D,KACX8Y,WAAY/vE,KAAK+vE,WACjBG,sBACAxJ,aAAcmvB,EAAYnvB,aAC1B/sB,UAAW35C,KAAK+0F,WAChB9qB,cAAejqE,KAAKgyF,WAAW/nB,cAC/B/2B,cAAelzC,KAAKgyF,WAAW9+C,cAC/BujD,0BAA2BV,EAC3BxF,OAAQvwF,KAAKk1F,QACbljD,gBAED6jD,EAAYO,cAAgB,IAAI5jF,KAAO/B,IAAI4lF,GAC5C,MAAMK,EAAaL,EAAmB1H,KAgBtC,OAfAxnF,QAAQqO,IAAI,CAACqgF,EAAYG,uBAAuBpuF,QAAS8tF,IAA+BnqD,MAAK,EAAEimC,EAAcxB,MAC3G,GAAIhwE,KAAKwxF,UACPh8B,QADF,CAKA,GADAx1D,KAAKi1F,QAAQ9xD,KAAK,eACZ6sC,EAAsBgP,gBAAkBA,GAC5C,MAAM,IAAI3oE,MAAM,uIAElBggF,EAAmBM,mBAAmB,CACpCnlB,eACAxB,0BAEFqmB,EAAmBO,qBATnB,CASwC,IACvCx6B,MAAM5G,GACFkhC,CACT,CACA,eAAAG,EAAgB,OACdpiB,EAAS,UAAS,eAClBghB,EAAiBjsE,EAAeE,OAAM,uBACtCisE,EAAyB,KAAI,UAC7BxlD,GAAY,GACV,CAAC,GAOH,MAAMylD,EAAa51F,KAAKgyF,WAAW+B,mBAAmBtf,EAAQghB,EAAgBE,EAAwBxlD,GAAW,GACjH,IAKI2mD,EALAjB,EAAc71F,KAAKm1F,cAAch3F,IAAIy3F,EAAWjiB,UAoBpD,OAnBKkiB,IACHA,EAAct3F,OAAO6M,OAAO,MAC5BpL,KAAKm1F,cAAczwF,IAAIkxF,EAAWjiB,SAAUkiB,IAGzCA,EAAYkB,uBACfD,EAAav4F,OAAO6M,OAAO,MAC3B0rF,EAAWF,oBAfb,WACMf,EAAYnvB,aAAauvB,YAC3BJ,EAAYkB,qBAAqBpvF,QAAQkuF,EAAYnvB,cACrDmvB,EAAYO,YAAY/sD,OAAOytD,GAEnC,EAWEjB,EAAYkB,qBAAuB5vF,QAAQiO,iBAC1CygF,EAAYO,cAAgB,IAAI5jF,KAAO/B,IAAIqmF,GAC5CjB,EAAYnvB,aAAe,CACzBuL,QAAS,GACTD,UAAW,GACXikB,WAAW,EACXC,eAAgB,MAElBl2F,KAAKi1F,QAAQ9xD,KAAK,gBAClBnjC,KAAKm2F,kBAAkBP,IAElBC,EAAYkB,qBAAqBnvF,OAC1C,CACA,iBAAAovF,EAAkB,qBAChBC,GAAuB,EAAK,qBAC5BC,GAAuB,GACrB,CAAC,GAEH,OAAOl3F,KAAKgyF,WAAWN,eAAez3B,eAAe,iBAAkB,CACrEtgB,UAAW35C,KAAK+0F,WAChBkC,sBAA+C,IAAzBA,EACtBC,sBAA+C,IAAzBA,GACrB,CACDC,cAN8B,IAO9B,IAAAtnF,CAAK0xC,GACH,OAAOA,EAAYlJ,MAAM76C,MAC3B,GAEJ,CACA,cAAA45F,CAAe3iF,EAAS,CAAC,GACvB,GAAIzU,KAAKgyF,WAAWc,YAClB,OAAO9yF,KAAKu1F,SAAShqD,MAAKgjD,GAAOD,GAAQ/sC,YAAYgtC,KAEvD,MAAMlD,EAAiBrrF,KAAKg3F,kBAAkBviF,GAC9C,OAAO,IAAItN,SAAQ,SAAUQ,EAASD,GAgBpC,MAAMk7E,EAASyI,EAAe3D,YACxBnmC,EAAc,CAClBlJ,MAAO,GACP0zC,OAAQxtF,OAAO6M,OAAO,MACtB0gF,KAAM,OAnBR,SAASD,IACPjJ,EAAO97E,OAAOykC,MAAK,UAAU,MAC3B1sC,EAAK,KACLkC,IAEIA,EACF4G,EAAQ45C,IAGVA,EAAYuqC,OAASjtF,EAAMitF,KAC3BvtF,OAAO66C,OAAOmI,EAAYwqC,OAAQltF,EAAMktF,QACxCxqC,EAAYlJ,MAAM9vC,QAAQ1J,EAAMw5C,OAChCwzC,IACF,GAAGnkF,EACL,CAOAmkF,EACF,GACF,CACA,aAAAwL,GACE,OAAOr3F,KAAKgyF,WAAWqF,cAAcr3F,KAAK+0F,WAC5C,CACA,QAAAuC,GACEt3F,KAAKwxF,WAAY,EACjB,MAAM+F,EAAS,GACf,IAAK,MAAM1B,KAAe71F,KAAKm1F,cAAcp2E,SAM3C,GALA/e,KAAKs2F,mBAAmB,CACtBT,cACAr3D,OAAQ,IAAInoB,MAAM,uBAClBmhF,OAAO,KAEL3B,EAAYkB,qBAGhB,IAAK,MAAMV,KAAsBR,EAAYO,YAC3CmB,EAAOhvF,KAAK8tF,EAAmBoB,WAC/BpB,EAAmBn1C,SAKvB,OAFAlhD,KAAKi3D,KAAKz3C,QACVxf,MAAK,IAAkB,EAChBmH,QAAQqO,IAAI+hF,EACrB,CACA,OAAA7J,CAAQgK,GAAa,GACnB13F,MAAK,IAAkB,EACvB,MAAMs7D,EAAUt7D,MAAK,KAIrB,OAHI03F,GAAcp8B,IAChBt7D,KAAKi1F,SAAW,IAAIjyD,IAEfs4B,CACT,CACA,MACE,IAAKt7D,MAAK,IAAmBA,KAAKwxF,UAChC,OAAO,EAET,IAAK,MAAM,YACT4E,EAAW,aACX1vB,KACG1mE,KAAKm1F,cAAcp2E,SACtB,GAAIq3E,EAAYvmF,KAAO,IAAM62D,EAAauvB,UACxC,OAAO,EAMX,OAHAj2F,KAAKm1F,cAAc31E,QACnBxf,KAAKi3D,KAAKz3C,QACVxf,MAAK,IAAkB,GAChB,CACT,CACA,gBAAA23F,CAAiBnmB,EAAcmC,GAC7B,MAAMkiB,EAAc71F,KAAKm1F,cAAch3F,IAAIw1E,GACtCkiB,IAGL71F,KAAKi1F,QAAQ3xD,QAAQ,gBACrBuyD,EAAYG,wBAAwBruF,QAAQ6pE,GAC9C,CACA,gBAAAomB,CAAiBC,EAAmBhC,GAClC,IAAK,IAAI9vF,EAAI,EAAGi8B,EAAK61D,EAAkBr6F,OAAQuI,EAAIi8B,EAAIj8B,IACrD8vF,EAAYnvB,aAAauL,QAAQ1pE,KAAKsvF,EAAkB5lB,QAAQlsE,IAChE8vF,EAAYnvB,aAAasL,UAAUzpE,KAAKsvF,EAAkB7lB,UAAUjsE,IAEtE8vF,EAAYnvB,aAAauvB,UAAY4B,EAAkB5B,UACvDJ,EAAYnvB,aAAawvB,eAAiB2B,EAAkB3B,eAC5D,IAAK,MAAMG,KAAsBR,EAAYO,YAC3CC,EAAmBO,sBAEjBiB,EAAkB5B,WACpBj2F,MAAK,IAET,CACA,iBAAAm2F,EAAkB,gBAChBnX,EAAe,SACfrL,EAAQ,8BACRmkB,EAA6B,YAC7B7kC,IAEA,MAAM,IACJ9qD,EAAG,SACH7B,GACEwxF,EAQElV,EAPiB5iF,KAAKgyF,WAAWN,eAAez3B,eAAe,kBAAmB,CACtFtgB,UAAW35C,KAAK+0F,WAChBtgB,OAAQuK,EACRrL,WACA1gC,kBAAmB9qC,EACnB8qD,eACC3sD,GAC2BohF,YACxBmO,EAAc71F,KAAKm1F,cAAch3F,IAAIw1E,GAC3CkiB,EAAYkC,aAAenV,EAC3B,MAAMiJ,EAAO,KACXjJ,EAAO97E,OAAOykC,MAAK,EACjB1sC,QACAkC,WAEIA,EACF80F,EAAYkC,aAAe,KAGzB/3F,KAAKgyF,WAAWR,YAGpBxxF,KAAK43F,iBAAiB/4F,EAAOg3F,GAC7BhK,IAAM,IACLrtD,IAED,GADAq3D,EAAYkC,aAAe,MACvB/3F,KAAKgyF,WAAWR,UAApB,CAGA,GAAIqE,EAAYnvB,aAAc,CAC5BmvB,EAAYnvB,aAAauvB,WAAY,EACrC,IAAK,MAAMI,KAAsBR,EAAYO,YAC3CC,EAAmBO,sBAErB52F,MAAK,IACP,CACA,GAAI61F,EAAYG,uBACdH,EAAYG,uBAAuBtuF,OAAO82B,OACrC,KAAIq3D,EAAYkB,qBAGrB,MAAMv4D,EAFNq3D,EAAYkB,qBAAqBrvF,OAAO82B,EAG1C,CAdA,CAcA,GACA,EAEJqtD,GACF,CACA,kBAAAyK,EAAmB,YACjBT,EAAW,OACXr3D,EAAM,MACNg5D,GAAQ,IAER,GAAK3B,EAAYkC,aAAjB,CAOA,GAJIlC,EAAYC,4BACdriD,aAAaoiD,EAAYC,2BACzBD,EAAYC,0BAA4B,OAErC0B,EAAO,CACV,GAAI3B,EAAYO,YAAYvmF,KAAO,EACjC,OAEF,GAAI2uB,aAAkBqD,GAA6B,CACjD,IAAIm2D,EA1vBwB,IAswB5B,OAXIx5D,EAAOsD,WAAa,GAAKtD,EAAOsD,WAAa,MAC/Ck2D,GAASx5D,EAAOsD,iBAElB+zD,EAAYC,0BAA4Bn6C,YAAW,KACjDk6C,EAAYC,0BAA4B,KACxC91F,KAAKs2F,mBAAmB,CACtBT,cACAr3D,SACAg5D,OAAO,GACP,GACDQ,GAEL,CACF,CAGA,GAFAnC,EAAYkC,aAAa72C,OAAO,IAAI3qB,GAAeiI,EAAOrnB,UAAUilD,OAAM,SAC1Ey5B,EAAYkC,aAAe,MACvB/3F,KAAKgyF,WAAWR,UAApB,CAGA,IAAK,MAAOyG,EAAaC,KAAmBl4F,KAAKm1F,cAC/C,GAAI+C,IAAmBrC,EAAa,CAClC71F,KAAKm1F,cAAc9rD,OAAO4uD,GAC1B,KACF,CAEFj4F,KAAK0tF,SAPL,CA7BA,CAqCF,CACA,SAAI96B,GACF,OAAO5yD,KAAKi1F,MACd,EAEF,MAAM3F,GACJ,IAAcnoF,QAAQiO,gBACtB,IAAkB,KAClB,IAAQ,KACR,IAAa,KACbwpB,UAAuB,EACvBA,WAA2B,EAC3BA,UAAsB,IAAIx5B,eAEpB8jB,IACFlpB,MAAK,IAAoB,EACzBu+E,GAAoBG,YAAc,oBAEpC1+E,KAAKm4F,cAAgB,CAACvjE,EAASwjE,KAC7B,MAAMv8E,EAAOJ,IAAIC,MAAMkZ,GACvB,IAAK/Y,GAAMqoC,QAA0B,SAAhBroC,EAAKqoC,OACxB,OAAO,EAET,MAAMh0C,EAAQ,IAAIuL,IAAI28E,EAAUv8E,GAChC,OAAOA,EAAKqoC,SAAWh0C,EAAMg0C,MAAM,EAErClkD,KAAKq4F,kBAAoB18E,IACvB,MAAM28E,EAAU,iBAAiB38E,OACjC,OAAOF,IAAI88E,gBAAgB,IAAIxsD,KAAK,CAACusD,GAAU,CAC7C3yF,KAAM,oBACL,EAEL3F,KAAKw4F,SAAW/jF,IA7rWpB,IAAoBwhB,EA+rWd,GA/rWcA,EA8rWH,gEA7rWf5B,QAAQC,IAAI,yBAA2B2B,IA8rW9BxhB,GAAQw8E,KACX,MAAM,IAAI56E,MAAM,kDAElB,OAAOrW,KAAKoL,OAAOqJ,EAAO,CAE9B,CACA,WAAAlV,EAAY,KACVN,EAAO,KAAI,KACXgyF,EAAO,KAAI,UACXn9D,EAAYI,KACV,CAAC,GAIH,GAHAl0B,KAAKf,KAAOA,EACZe,KAAKwxF,WAAY,EACjBxxF,KAAK8zB,UAAYA,EACbm9D,EAAM,CACR,GAAI3B,IAAU,GAAa3qF,IAAIssF,GAC7B,MAAM,IAAI56E,MAAM,gDAElBi5E,IAAU,GAAa5qF,IAAIusF,EAAMjxF,MACjCA,MAAK,GAAoBixF,EAC3B,MACEjxF,MAAK,IAET,CACA,WAAI4H,GACF,OAAO5H,MAAK,GAAY4H,OAC1B,CACA,MACE5H,MAAK,GAAY2H,UACjB3H,MAAK,GAAgB+/B,KAAK,YAAa,CACrCjM,UAAW9zB,KAAK8zB,WAEpB,CACA,QAAIm9D,GACF,OAAOjxF,MAAK,EACd,CACA,kBAAI0xF,GACF,OAAO1xF,MAAK,EACd,CACA,IAAoBixF,GAClBjxF,MAAK,GAAQixF,EACbjxF,MAAK,GAAkB,IAAI+4D,GAAe,OAAQ,SAAUk4B,GAC5DjxF,MAAK,GAAgB20C,GAAG,SAAS,SACjC30C,MAAK,IACP,CACA,MACE,GAAIsvF,IAAU,IAAqBA,IAAU,GAE3C,YADAtvF,MAAK,KAGP,IAAI,UACF0+E,GACE4Q,GACJ,IACOA,GAAU6I,cAAchmF,OAAO08E,SAAUnQ,KAC5CA,EAAY4Q,GAAU+I,kBAAkB,IAAI58E,IAAIijE,EAAWvsE,OAAO08E,UAAUpwE,OAE9E,MAAM4wE,EAAS,IAAI5Q,OAAOC,EAAW,CACnC/4E,KAAM,WAEF+rF,EAAiB,IAAI34B,GAAe,OAAQ,SAAUs2B,GACtDoJ,EAAiB,KACrBt6D,EAAGI,QACHmzD,EAAetnD,UACfilD,EAAO32B,YACH14D,KAAKwxF,UACPxxF,MAAK,GAAY0H,OAAO,IAAI2O,MAAM,yBAElCrW,MAAK,IACP,EAEIm+B,EAAK,IAAIC,gBACfixD,EAAO5wD,iBAAiB,SAAS,KAC1Bz+B,MAAK,IACRy4F,GACF,GACC,CACDp6D,OAAQF,EAAGE,SAEbqzD,EAAe/8C,GAAG,QAAQrnC,IACxB6wB,EAAGI,SACCv+B,KAAKwxF,WAAclkF,GAIvBtN,MAAK,GAAkB0xF,EACvB1xF,MAAK,GAAQqvF,EACbrvF,MAAK,GAAaqvF,EAClBrvF,MAAK,MANHy4F,GAMa,IAEjB/G,EAAe/8C,GAAG,SAASrnC,IAEzB,GADA6wB,EAAGI,QACCv+B,KAAKwxF,UACPiH,SAGF,IACEC,GACF,CAAE,MACA14F,MAAK,IACP,KAEF,MAAM04F,EAAW,KACf,MAAMC,EAAU,IAAIjyF,WACpBgrF,EAAe3xD,KAAK,OAAQ44D,EAAS,CAACA,EAAQxyF,QAAQ,EAGxD,YADAuyF,GAEF,CAAE,MACAvkE,EAAK,gCACP,CACAn0B,MAAK,IACP,CACA,MACOsvF,IAAU,KACb/6D,EAAK,2BACL+6D,IAAU,IAAoB,GAEhCA,GAAUsJ,uBAAuBrtD,MAAKstD,IACpC,GAAI74F,KAAKwxF,UAEP,YADAxxF,MAAK,GAAY0H,OAAO,IAAI2O,MAAM,yBAGpC,MAAM46E,EAAO,IAAI54B,GACjBr4D,MAAK,GAAQixF,EACb,MAAMzhF,EAAK,OAAO8/E,IAAU,KACtBwJ,EAAgB,IAAI//B,GAAevpD,EAAK,UAAWA,EAAIyhF,GAC7D4H,EAAqBE,MAAMD,EAAe7H,GAC1CjxF,MAAK,GAAkB,IAAI+4D,GAAevpD,EAAIA,EAAK,UAAWyhF,GAC9DjxF,MAAK,IAAU,IACdo8D,OAAM59B,IACPx+B,MAAK,GAAY0H,OAAO,IAAI2O,MAAM,mCAAmCmoB,EAAOrnB,aAAa,GAE7F,CACA,OAAAizB,GACEpqC,KAAKwxF,WAAY,EACjBxxF,MAAK,IAAY04D,YACjB14D,MAAK,GAAa,KAClBsvF,IAAU,GAAajmD,OAAOrpC,MAAK,IACnCA,MAAK,GAAQ,KACbA,MAAK,IAAiBoqC,UACtBpqC,MAAK,GAAkB,IACzB,CACA,aAAOoL,CAAOqJ,GACZ,MAAMukF,EAAah5F,MAAK,GAAa7B,IAAIsW,GAAQw8E,MACjD,GAAI+H,EAAY,CACd,GAAIA,EAAW7G,gBACb,MAAM,IAAI97E,MAAM,yHAElB,OAAO2iF,CACT,CACA,OAAO,IAAI1J,GAAU76E,EACvB,CACA,oBAAWiqE,GACT,GAAIH,GAAoBG,UACtB,OAAOH,GAAoBG,UAE7B,MAAM,IAAIroE,MAAM,gDAClB,CACA,aAAW,GACT,IACE,OAAOxR,WAAWo0F,aAAaJ,sBAAwB,IACzD,CAAE,MACA,OAAO,IACT,CACF,CACA,iCAAWD,GAWT,OAAOnjE,EAAOz1B,KAAM,yBAVL8+B,WACb,GAAI9+B,MAAK,GACP,OAAOA,MAAK,GAMd,aAJqBk5F,OAGrBl5F,KAAK0+E,YACSma,oBAAoB,EAEUM,GAChD,EAEF,MAAMpH,GACJ,IAAkB,IAAI90D,IACtB,IAAa,IAAIA,IACjB,IAAgB,IAAIA,IACpB,IAAgB,IAAIA,IACpB,IAAsB,KACtB,WAAA19B,CAAYmyF,EAAgB8C,EAAa7C,EAAel9E,EAAQ2kF,GAC9Dp5F,KAAK0xF,eAAiBA,EACtB1xF,KAAKw0F,YAAcA,EACnBx0F,KAAK+vE,WAAa,IAAIwb,GACtBvrF,KAAKq5F,WAAa,IAAIlmC,GAAW,CAC/BC,cAAe3+C,EAAO2+C,cACtBC,aAAc5+C,EAAO4+C,eAEvBrzD,KAAKuxF,cAAgB98E,EAAO88E,cAC5BvxF,KAAKs5F,QAAU7kF,EACfzU,KAAKiqE,cAAgBmvB,EAAQnvB,cAC7BjqE,KAAKkzC,cAAgBkmD,EAAQlmD,cAC7BlzC,KAAK8wF,kBAAoBsI,EAAQtI,kBACjC9wF,KAAK+wF,wBAA0BqI,EAAQrI,wBACvC/wF,KAAKgxF,YAAcoI,EAAQpI,YAC3BhxF,KAAKwxF,WAAY,EACjBxxF,KAAKu5F,kBAAoB,KACzBv5F,KAAKw5F,eAAiB7H,EACtB3xF,KAAKy5F,YAAc,KACnBz5F,KAAK05F,cAAgB,KACrB15F,KAAKq0F,uBAAyBltF,QAAQiO,gBACtCpV,KAAK25F,qBACP,CACA,IAAmB16F,EAAMqO,EAAO,MAC9B,MAAMssF,EAAgB55F,MAAK,GAAgB7B,IAAIc,GAC/C,GAAI26F,EACF,OAAOA,EAET,MAAMhyF,EAAU5H,KAAK0xF,eAAe13B,gBAAgB/6D,EAAMqO,GAE1D,OADAtN,MAAK,GAAgB0E,IAAIzF,EAAM2I,GACxBA,CACT,CACA,qBAAIqrC,GACF,OAAOxd,EAAOz1B,KAAM,oBAAqB,IAAI+xD,GAC/C,CACA,kBAAAgiC,CAAmBtf,EAAQghB,EAAiBjsE,EAAeE,OAAQisE,EAAyB,KAAMxlD,GAAY,EAAO0pD,GAAW,GAC9H,IAAI7a,EAAkBz1D,EAClBuuE,EAAgChmC,GACpC,OAAQ2iB,GACN,IAAK,MACHuK,EAAkBz1D,EAClB,MACF,IAAK,UACH,MACF,IAAK,QACHy1D,EAAkBz1D,EAClB,MACF,QACEgL,EAAK,wCAAwCkgD,KAEjD,MAAMxhC,EAAoB+rC,EAAkBz1D,GAA6BosE,aAAkCnjC,GAAyBmjC,EAAyB31F,KAAKizC,kBAClK,OAAQwiD,GACN,KAAKjsE,EAAeC,QAClBu1D,GAAmBz1D,EACnB,MACF,KAAKC,EAAeE,OAClB,MACF,KAAKF,EAAeG,aAClBq1D,GAAmBz1D,EACnB,MACF,KAAKC,EAAeI,eAClBo1D,GAAmBz1D,EACnBuuE,EAAgC7kD,EAAkBwf,aAClD,MACF,QACEl+B,EAAK,gDAAgDkhE,KAErDtlD,IACF6uC,GAAmBz1D,GAEjBswE,IACF7a,GAAmBz1D,GAErB,MACE2pC,IAAKD,EACLr0C,KAAMk7E,GACJ7mD,EAAkBggB,YAEtB,MAAO,CACL+rB,kBACArL,SAHkB,CAACqL,EAAiB8Y,EAA8Bl5E,KAAMk7E,GAGlDn7F,KAAK,KAC3Bm5F,gCACA7kC,cAEJ,CACA,OAAA7oB,GACE,GAAIpqC,KAAKu5F,kBACP,OAAOv5F,KAAKu5F,kBAAkB3xF,QAEhC5H,KAAKwxF,WAAY,EACjBxxF,KAAKu5F,kBAAoBpyF,QAAQiO,gBACjCpV,MAAK,IAAqB0H,OAAO,IAAI2O,MAAM,oDAC3C,MAAMkhF,EAAS,GACf,IAAK,MAAMv/B,KAAQh4D,MAAK,GAAW+e,SACjCw4E,EAAOhvF,KAAKyvD,EAAKs/B,YAEnBt3F,MAAK,GAAWwf,QAChBxf,MAAK,GAAcwf,QACnBxf,MAAK,GAAcwf,QACfxf,KAAKuC,eAAe,sBACtBvC,KAAKizC,kBAAkBof,gBAEzB,MAAM0nC,EAAa/5F,KAAK0xF,eAAe13B,gBAAgB,YAAa,MAapE,OAZAu9B,EAAOhvF,KAAKwxF,GACZ5yF,QAAQqO,IAAI+hF,GAAQhsD,MAAK,KACvBvrC,KAAK+vE,WAAWvwD,QAChBxf,KAAKq5F,WAAW75E,QAChBxf,MAAK,GAAgBwf,QACrBxf,KAAKkzC,cAAc9I,UACnBohD,GAAUkC,UACV1tF,KAAKw5F,gBAAgBrW,kBAAkB,IAAI5sD,GAAe,2BAC1Dv2B,KAAK0xF,gBAAgBtnD,UACrBpqC,KAAK0xF,eAAiB,KACtB1xF,KAAKu5F,kBAAkB5xF,SAAS,GAC/B3H,KAAKu5F,kBAAkB7xF,QACnB1H,KAAKu5F,kBAAkB3xF,OAChC,CACA,mBAAA+xF,GACE,MAAM,eACJjI,EAAc,YACd8C,GACEx0F,KACJ0xF,EAAe/8C,GAAG,aAAa,CAACrnC,EAAM0sF,KACpCvlE,EAAOz0B,KAAKw5F,eAAgB,mDAC5Bx5F,KAAKy5F,YAAcz5F,KAAKw5F,eAAe3W,gBACvC7iF,KAAKy5F,YAAY/W,WAAa3vC,IAC5B/yC,KAAK05F,cAAgB,CACnBxkC,OAAQniB,EAAImiB,OACZ6sB,MAAOhvC,EAAIgvC,MACZ,EAEHiY,EAAK5+B,OAAS,KACZp7D,KAAKy5F,YAAY3yF,OAAOykC,MAAK,UAAU,MACrC1sC,EAAK,KACLkC,IAEIA,EACFi5F,EAAK5vF,SAGPqqB,EAAO51B,aAAiBuH,YAAa,wCACrC4zF,EAAKj/B,QAAQ,IAAIr0D,WAAW7H,GAAQ,EAAG,CAACA,IAC1C,IAAGu9D,OAAM59B,IACPw7D,EAAKr6F,MAAM6+B,EAAO,GAClB,EAEJw7D,EAAK3+B,SAAW78B,IACdx+B,KAAKy5F,YAAYv4C,OAAO1iB,GACxBw7D,EAAK7+B,MAAMiB,OAAM69B,IACf,IAAIj6F,KAAKwxF,UAGT,MAAMyI,CAAW,GACjB,CACH,IAEHvI,EAAe/8C,GAAG,sBAAsB7V,gBAChC9+B,KAAKy5F,YAAYhW,aACvB,MAAM,qBACJE,EAAoB,iBACpBD,EAAgB,cAChBE,GACE5jF,KAAKy5F,YAYT,OAXK9V,GAAyBD,IACxB1jF,KAAK05F,eACPlF,EAAY9R,aAAa1iF,KAAK05F,eAEhC15F,KAAKy5F,YAAY/W,WAAa3vC,IAC5ByhD,EAAY9R,aAAa,CACvBxtB,OAAQniB,EAAImiB,OACZ6sB,MAAOhvC,EAAIgvC,OACX,GAGC,CACL4B,uBACAD,mBACAE,gBACD,IAEH8N,EAAe/8C,GAAG,kBAAkB,CAACrnC,EAAM0sF,KACzCvlE,EAAOz0B,KAAKw5F,eAAgB,wDAC5B,MAAMlX,EAActiF,KAAKw5F,eAAexW,eAAe11E,EAAKs0E,MAAOt0E,EAAKiU,KACnE+gE,GAIL0X,EAAK5+B,OAAS,KACZknB,EAAYx7E,OAAOykC,MAAK,UAAU,MAChC1sC,EAAK,KACLkC,IAEIA,EACFi5F,EAAK5vF,SAGPqqB,EAAO51B,aAAiBuH,YAAa,6CACrC4zF,EAAKj/B,QAAQ,IAAIr0D,WAAW7H,GAAQ,EAAG,CAACA,IAC1C,IAAGu9D,OAAM59B,IACPw7D,EAAKr6F,MAAM6+B,EAAO,GAClB,EAEJw7D,EAAK3+B,SAAW78B,IACd8jD,EAAYphC,OAAO1iB,GACnBw7D,EAAK7+B,MAAMiB,OAAM69B,IACf,IAAIj6F,KAAKwxF,UAGT,MAAMyI,CAAW,GACjB,GAzBFD,EAAK5vF,OA0BN,IAEHsnF,EAAe/8C,GAAG,UAAU,EAC1B89C,cAEAzyF,KAAKk6F,UAAYzH,EAAQE,SACzB3yF,KAAK8yF,YAAcL,EAAQ0H,kBACpB1H,EAAQ0H,WACf3F,EAAYvC,YAAYtqF,QAAQ,IAAI6qF,GAAiBC,EAASzyF,MAAM,IAEtE0xF,EAAe/8C,GAAG,gBAAgBmE,IAChC07C,EAAYvC,YAAYvqF,OAAOoxD,GAAWhgB,GAAI,IAEhD44C,EAAe/8C,GAAG,mBAAmBmE,IACnC94C,MAAK,GAAsBmH,QAAQiO,gBACnC,IACE,IAAKo/E,EAAYtC,WACf,MAAMp5B,GAAWhgB,GAEnB,MAAMshD,EAAiBlL,IACjBA,aAAoB74E,MACtBrW,MAAK,GAAoB0H,OAAOwnF,GAEhClvF,MAAK,GAAoB2H,QAAQ,CAC/BunF,YAEJ,EAEFsF,EAAYtC,WAAWkI,EAAgBthD,EAAGhjB,KAC5C,CAAE,MAAOukE,GACPr6F,MAAK,GAAoB0H,OAAO2yF,EAClC,CACA,OAAOr6F,MAAK,GAAoB4H,OAAO,IAEzC8pF,EAAe/8C,GAAG,cAAcrnC,IAC9BknF,EAAY9R,aAAa,CACvBxtB,OAAQ5nD,EAAK9P,OACbukF,MAAOz0E,EAAK9P,SAEdwC,KAAKq0F,uBAAuB1sF,QAAQ2F,EAAK,IAE3CokF,EAAe/8C,GAAG,mBAAmBrnC,IACnC,GAAItN,KAAKwxF,UACP,OAEWxxF,MAAK,GAAW7B,IAAImP,EAAKqsC,WACjCg+C,iBAAiBrqF,EAAKkkE,aAAclkE,EAAKqmE,SAAS,IAEzD+d,EAAe/8C,GAAG,aAAa,EAAEnlC,EAAI7J,EAAM20F,MACzC,GAAIt6F,KAAKwxF,UACP,OAAO,KAET,GAAIxxF,KAAK+vE,WAAWprE,IAAI6K,GACtB,OAAO,KAET,OAAQ7J,GACN,IAAK,OACH,GAAI,UAAW20F,EAAc,CAC3B,MAAMC,EAAgBD,EAAa36F,MACnC40B,EAAK,8BAA8BgmE,KACnCv6F,KAAK+vE,WAAWpoE,QAAQ6H,EAAI+qF,GAC5B,KACF,CACA,MAAM/jC,EAAcx2D,KAAKs5F,QAAQ/I,QAAU1rF,WAAW4mF,eAAetqC,QAAU,CAAC2T,EAAMn5C,IAAQ9W,WAAW4mF,cAAc+O,UAAU1lC,EAAMn5C,GAAO,KACxIm5C,EAAO,IAAIwB,GAAegkC,EAAc9jC,GAC9Cx2D,KAAKq5F,WAAW/2F,KAAKwyD,GAAMsH,OAAM,IAAMs1B,EAAe13B,gBAAgB,eAAgB,CACpFxqD,SACEm8E,SAAQ,MACL72B,EAAKyC,qBAAuBzC,EAAKxnD,OACpCwnD,EAAKxnD,KAAO,MAEdtN,KAAK+vE,WAAWpoE,QAAQ6H,EAAIslD,EAAK,IAEnC,MACF,IAAK,iBACH,MAAM,SACJ2lC,GACEH,EACJ7lE,EAAOgmE,EAAU,iCACjB,IAAK,MAAMC,KAAa16F,MAAK,GAAW+e,SACtC,IAAK,MAAO,CAAEzR,KAASotF,EAAUzjC,KAC/B,GAAI3pD,GAAM4lF,MAAQuH,EAGlB,OAAKntF,EAAKqtF,SAGV36F,KAAK+vE,WAAWpoE,QAAQ6H,EAAItJ,gBAAgBoH,IACrCA,EAAKqtF,SAHH,KAMb,MACF,IAAK,WACL,IAAK,QACL,IAAK,UACH36F,KAAK+vE,WAAWpoE,QAAQ6H,EAAI8qF,GAC5B,MACF,QACE,MAAM,IAAIjkF,MAAM,kCAAkC1Q,KAEtD,OAAO,IAAI,IAEb+rF,EAAe/8C,GAAG,OAAO,EAAEnlC,EAAImqC,EAAWh0C,EAAMi1F,MAC9C,GAAI56F,KAAKwxF,UACP,OAEF,MAAMkJ,EAAY16F,MAAK,GAAW7B,IAAIw7C,GACtC,IAAI+gD,EAAUzjC,KAAKtyD,IAAI6K,GAGvB,GAAqC,IAAjCkrF,EAAUvF,cAActlF,KAI5B,OAAQlK,GACN,IAAK,QACL,IAAK,UACH+0F,EAAUzjC,KAAKtvD,QAAQ6H,EAAIorF,GAC3B,MACF,QACE,MAAM,IAAIvkF,MAAM,2BAA2B1Q,UAT7Ci1F,GAAW58E,QAAQ5T,OAUrB,IAEFsnF,EAAe/8C,GAAG,eAAernC,IAC3BtN,KAAKwxF,WAGTgD,EAAY9R,aAAa,CACvBxtB,OAAQ5nD,EAAK4nD,OACb6sB,MAAOz0E,EAAKy0E,OACZ,IAEJ2P,EAAe/8C,GAAG,mBAAmB7V,UACnC,GAAI9+B,KAAKwxF,UACP,MAAM,IAAIn7E,MAAM,yBAElB,MAAM+iF,EAAUp5F,KAAKsN,EAAK3H,MAC1B,IAAKyzF,EACH,MAAM,IAAI/iF,MAAM,GAAG/I,EAAK3H,+DAE1B,OAAOyzF,EAAQj6D,MAAM7xB,EAAK,GAE9B,CACA,OAAAurC,GACE,OAAO74C,KAAK0xF,eAAe13B,gBAAgB,UAAW,KACxD,CACA,YAAAm6B,GACMn0F,KAAKizC,kBAAkBpjC,MAAQ,GACjC0kB,EAAK,kGAEP,MAAM,IACJpsB,EAAG,SACH7B,GACEtG,KAAKizC,kBAAkBwf,aAC3B,OAAOzyD,KAAK0xF,eAAe13B,gBAAgB,eAAgB,CACzD64B,YAAa7yF,KAAK8yF,YAClBH,SAAU3yF,KAAKk6F,UACfjnD,kBAAmB9qC,EACnBi6B,SAAUpiC,KAAKy5F,aAAar3D,UAAY,MACvC97B,GAAUqlF,SAAQ,KACnB3rF,KAAKizC,kBAAkBof,eAAe,GAE1C,CACA,OAAA2gC,CAAQj+C,GACN,IAAK/yB,OAAOiS,UAAU8gB,IAAeA,GAAc,GAAKA,EAAa/0C,KAAKk6F,UACxE,OAAO/yF,QAAQO,OAAO,IAAI2O,MAAM,0BAElC,MAAMsjC,EAAY5E,EAAa,EAC7B6kD,EAAgB55F,MAAK,GAAc7B,IAAIw7C,GACzC,GAAIigD,EACF,OAAOA,EAET,MAAMhyF,EAAU5H,KAAK0xF,eAAe13B,gBAAgB,UAAW,CAC7DrgB,cACCpO,MAAKupD,IACN,GAAI90F,KAAKwxF,UACP,MAAM,IAAIn7E,MAAM,uBAEdy+E,EAAS+F,QACX76F,MAAK,GAAc0E,IAAIowF,EAAS+F,OAAQ9lD,GAE1C,MAAMijB,EAAO,IAAI68B,GAAal7C,EAAWm7C,EAAU90F,KAAMA,KAAKs5F,QAAQ/I,QAEtE,OADAvwF,MAAK,GAAW0E,IAAIi1C,EAAWqe,GACxBA,CAAI,IAGb,OADAh4D,MAAK,GAAc0E,IAAIi1C,EAAW/xC,GAC3BA,CACT,CACA,YAAAqrF,CAAaC,GACX,OAAKz7B,GAAWy7B,GAGTlzF,KAAK0xF,eAAe13B,gBAAgB,eAAgB,CACzDtC,IAAKw7B,EAAIx7B,IACTC,IAAKu7B,EAAIv7B,MAJFxwD,QAAQO,OAAO,IAAI2O,MAAM,8BAMpC,CACA,cAAAg/E,CAAe17C,EAAW86B,GACxB,OAAOz0E,KAAK0xF,eAAe13B,gBAAgB,iBAAkB,CAC3DrgB,YACA86B,UAEJ,CACA,eAAAigB,GACE,OAAO10F,MAAK,GAAmB,kBACjC,CACA,YAAA20F,GACE,OAAO30F,MAAK,GAAmB,eACjC,CACA,sBAAA40F,GACE,OAAO50F,KAAK0xF,eAAe13B,gBAAgB,yBAA0B,KACvE,CACA,eAAAm5B,GACE,OAAOnzF,KAAK0xF,eAAe13B,gBAAgB,kBAAmB,KAChE,CACA,cAAAo5B,CAAe5jF,GACb,MAAkB,iBAAPA,EACFrI,QAAQO,OAAO,IAAI2O,MAAM,iCAE3BrW,KAAK0xF,eAAe13B,gBAAgB,iBAAkB,CAC3DxqD,MAEJ,CACA,aAAA6jF,GACE,OAAOrzF,KAAK0xF,eAAe13B,gBAAgB,gBAAiB,KAC9D,CACA,aAAAs5B,GACE,OAAOtzF,KAAK0xF,eAAe13B,gBAAgB,gBAAiB,KAC9D,CACA,WAAAu5B,GACE,OAAOvzF,KAAK0xF,eAAe13B,gBAAgB,cAAe,KAC5D,CACA,oBAAAw5B,GACE,OAAOxzF,KAAK0xF,eAAe13B,gBAAgB,uBAAwB,KACrE,CACA,aAAAy5B,GACE,OAAOzzF,KAAK0xF,eAAe13B,gBAAgB,gBAAiB,KAC9D,CACA,cAAA05B,GACE,OAAO1zF,KAAK0xF,eAAe13B,gBAAgB,iBAAkB,KAC/D,CACA,eAAA45B,GACE,OAAO5zF,MAAK,GAAmB,kBACjC,CACA,gBAAAs1F,CAAiB37C,GACf,OAAO35C,KAAK0xF,eAAe13B,gBAAgB,mBAAoB,CAC7DrgB,aAEJ,CACA,aAAA09C,CAAc19C,GACZ,OAAO35C,KAAK0xF,eAAe13B,gBAAgB,gBAAiB,CAC1DrgB,aAEJ,CACA,UAAAk6C,GACE,OAAO7zF,KAAK0xF,eAAe13B,gBAAgB,aAAc,KAC3D,CACA,wBAAA85B,CAAyB9U,GACvB,OAAOh/E,MAAK,GAAmB,4BAA4BurC,MAAKj+B,GAAQ,IAAImyE,GAAsBnyE,EAAM0xE,IAC1G,CACA,cAAAgV,GACE,OAAOh0F,KAAK0xF,eAAe13B,gBAAgB,iBAAkB,KAC/D,CACA,WAAAi6B,GACE,MAAMh1F,EAAO,cACX26F,EAAgB55F,MAAK,GAAgB7B,IAAIc,GAC3C,GAAI26F,EACF,OAAOA,EAET,MAAMhyF,EAAU5H,KAAK0xF,eAAe13B,gBAAgB/6D,EAAM,MAAMssC,MAAKuvD,IAAW,CAC9E3mE,KAAM2mE,EAAQ,GACdx1F,SAAUw1F,EAAQ,GAAK,IAAInc,GAASmc,EAAQ,IAAM,KAClD7Z,2BAA4BjhF,KAAKy5F,aAAar3D,UAAY,KAC1DwhD,cAAe5jF,KAAKy5F,aAAa7V,eAAiB,SAGpD,OADA5jF,MAAK,GAAgB0E,IAAIzF,EAAM2I,GACxBA,CACT,CACA,WAAAssF,GACE,OAAOl0F,KAAK0xF,eAAe13B,gBAAgB,cAAe,KAC5D,CACA,kBAAMu6B,CAAaD,GAAkB,GACnC,IAAIt0F,KAAKwxF,UAAT,OAGMxxF,KAAK0xF,eAAe13B,gBAAgB,UAAW,MACrD,IAAK,MAAMhC,KAAQh4D,MAAK,GAAW+e,SAAU,CAE3C,IAD0Bi5C,EAAK01B,UAE7B,MAAM,IAAIr3E,MAAM,sBAAsB2hD,EAAKjjB,qCAE/C,CACA/0C,KAAK+vE,WAAWvwD,QACX80E,GACHt0F,KAAKq5F,WAAW75E,QAElBxf,MAAK,GAAgBwf,QACrBxf,KAAKkzC,cAAc9I,SAAQ,GAC3BohD,GAAUkC,SAdV,CAeF,CACA,gBAAA+G,CAAiBvB,GACf,IAAKz7B,GAAWy7B,GACd,OAAO,KAET,MAAM2H,EAAqB,IAAZ3H,EAAIv7B,IAAY,GAAGu7B,EAAIx7B,OAAS,GAAGw7B,EAAIx7B,OAAOw7B,EAAIv7B,MACjE,OAAO33D,MAAK,GAAc7B,IAAI08F,IAAW,IAC3C,EAEF,MAAME,GACJ,IAAsB,KACtBC,WAAa,KACb3S,QAAU,KACV,WAAA9oF,CAAY82F,GACVr2F,MAAK,GAAsBq2F,CAC7B,CACA,WAAIzuF,GACF,OAAO5H,MAAK,GAAoB05D,WAAW9xD,OAC7C,CACA,MAAAs5C,CAAOpf,EAAa,GAClB9hC,MAAK,GAAoBkhD,OAAO,KAAMpf,EACxC,CACA,kBAAIo0D,GACF,MAAM,eACJA,GACEl2F,MAAK,GAAoB0mE,aAC7B,IAAKwvB,EACH,OAAO,EAET,MAAM,oBACJhmB,GACElwE,MAAK,GACT,OAAOk2F,EAAe+E,MAAQ/E,EAAejpD,QAAUijC,GAAqBrgE,KAAO,CACrF,EAEF,MAAM2mF,GACJ,IAAO,KACP53D,UAAsB,IAAIs8D,QAC1B,WAAA37F,EAAY,SACV+W,EAAQ,OACR7B,EAAM,KACNwiD,EAAI,WACJ8Y,EAAU,oBACVG,EAAmB,aACnBxJ,EAAY,UACZ/sB,EAAS,cACTswB,EAAa,cACb/2B,EAAa,yBACbujD,GAA2B,EAAK,OAChClG,GAAS,EAAK,WACdv+C,EAAa,OAEbhyC,KAAKsW,SAAWA,EAChBtW,KAAKyU,OAASA,EACdzU,KAAKi3D,KAAOA,EACZj3D,KAAK+vE,WAAaA,EAClB/vE,KAAKkwE,oBAAsBA,EAC3BlwE,KAAKm7F,gBAAkB,KACvBn7F,KAAK0mE,aAAeA,EACpB1mE,KAAK+0F,WAAap7C,EAClB35C,KAAKiqE,cAAgBA,EACrBjqE,KAAKkzC,cAAgBA,EACrBlzC,KAAKk1F,QAAU3E,EACfvwF,KAAKgyC,WAAaA,EAClBhyC,KAAKo7F,SAAU,EACfp7F,KAAKq7F,sBAAwB,KAC7Br7F,KAAKs7F,eAAgB,EACrBt7F,KAAKu7F,2BAAyD,IAA7B9E,GAAuD,oBAAXtkF,OAC7EnS,KAAKw7F,WAAY,EACjBx7F,KAAK05D,WAAavyD,QAAQiO,gBAC1BpV,KAAK2uF,KAAO,IAAIoM,GAAW/6F,MAC3BA,KAAKy7F,aAAez7F,KAAKkhD,OAAO5+C,KAAKtC,MACrCA,KAAK07F,eAAiB17F,KAAK27F,UAAUr5F,KAAKtC,MAC1CA,KAAK47F,mBAAqB57F,KAAK67F,cAAcv5F,KAAKtC,MAClDA,KAAK87F,WAAa97F,KAAK+7F,MAAMz5F,KAAKtC,MAClCA,KAAKg8F,QAAUvnF,EAAO+gF,cAAcvoD,MACtC,CACA,aAAIwqD,GACF,OAAOz3F,KAAK05D,WAAW9xD,QAAQw0D,OAAM,WAAa,GACpD,CACA,kBAAAu6B,EAAmB,aACjBnlB,GAAe,EAAK,sBACpBxB,IAEA,GAAIhwE,KAAKw7F,UACP,OAEF,GAAIx7F,KAAKg8F,QAAS,CAChB,GAAIxF,IAAmB,GAAa7xF,IAAI3E,KAAKg8F,SAC3C,MAAM,IAAI3lF,MAAM,mJAElBmgF,IAAmB,GAAa/lF,IAAIzQ,KAAKg8F,QAC3C,CACIh8F,KAAKk1F,SAAWrwF,WAAWo3F,gBAAgB96C,UAC7CnhD,KAAK+xE,QAAUltE,WAAWo3F,eAAe7wF,OAAOpL,KAAK+0F,YACrD/0F,KAAK+xE,QAAQmqB,KAAKl8F,KAAK0mE,cACvB1mE,KAAK+xE,QAAQQ,eAAiBvyE,KAAK+xE,QAAQoqB,qBAE7C,MAAM,cACJ3G,EAAa,SACbhwD,EAAQ,UACR9W,EAAS,WACTslB,GACEh0C,KAAKyU,OACTzU,KAAKo8F,IAAM,IAAIvsB,GAAe2lB,EAAex1F,KAAK+vE,WAAY/vE,KAAKi3D,KAAMj3D,KAAKiqE,cAAejqE,KAAKkzC,cAAe,CAC/G88B,yBACChwE,KAAKkwE,oBAAqBlwE,KAAKgyC,YAClChyC,KAAKo8F,IAAI7qB,aAAa,CACpB7iD,YACA8W,WACAgsC,eACAx9B,eAEFh0C,KAAKm7F,gBAAkB,EACvBn7F,KAAKs7F,eAAgB,EACrBt7F,KAAKq7F,yBACP,CACA,MAAAn6C,CAAOvhD,EAAQ,KAAMmiC,EAAa,GAChC9hC,KAAKo7F,SAAU,EACfp7F,KAAKw7F,WAAY,EACjBx7F,KAAKo8F,KAAKn0B,aACNjoE,MAAK,KACPmS,OAAOkqF,qBAAqBr8F,MAAK,IACjCA,MAAK,GAAO,MAEdw2F,IAAmB,GAAantD,OAAOrpC,KAAKg8F,SAC5Cr8F,IAAU,IAAIkiC,GAA4B,6BAA6B7hC,KAAK+0F,WAAa,IAAKjzD,GAC9F9hC,KAAKsW,SAAS3W,GACdK,KAAK2uF,KAAKtG,UAAU1oF,EACtB,CACA,mBAAAi3F,GACO52F,KAAKs7F,eAIVt7F,KAAK+xE,SAASuqB,mBAAmBt8F,KAAK0mE,cAClC1mE,KAAKo7F,SAGTp7F,KAAK27F,aAPH37F,KAAKq7F,wBAA0Br7F,KAAK07F,cAQxC,CACA,SAAAC,GACE37F,KAAKo7F,SAAU,EACXp7F,KAAKw7F,YAGLx7F,KAAK2uF,KAAKqM,WACZh7F,KAAK2uF,KAAKqM,WAAWh7F,KAAK47F,oBAE1B57F,KAAK67F,gBAET,CACA,aAAAA,GACM77F,KAAKu7F,0BACPv7F,MAAK,GAAOmS,OAAOoqF,uBAAsB,KACvCv8F,MAAK,GAAO,KACZA,KAAK87F,aAAa1/B,MAAMp8D,KAAKy7F,aAAa,IAG5Ct0F,QAAQQ,UAAU4jC,KAAKvrC,KAAK87F,YAAY1/B,MAAMp8D,KAAKy7F,aAEvD,CACA,WAAMM,GACA/7F,KAAKw7F,YAGTx7F,KAAKm7F,gBAAkBn7F,KAAKo8F,IAAIp0B,oBAAoBhoE,KAAK0mE,aAAc1mE,KAAKm7F,gBAAiBn7F,KAAK07F,eAAgB17F,KAAK+xE,SACnH/xE,KAAKm7F,kBAAoBn7F,KAAK0mE,aAAasL,UAAUx0E,SACvDwC,KAAKo7F,SAAU,EACXp7F,KAAK0mE,aAAauvB,YACpBj2F,KAAKo8F,IAAIn0B,aACTuuB,IAAmB,GAAantD,OAAOrpC,KAAKg8F,SAC5Ch8F,KAAKsW,aAGX,EAEF,MAAMtE,GAAU,SACVwqF,GAAQ,YAGa,EAAoB,KAI/C,SAASC,GAAct5F,GACrB,OAAOJ,KAAKC,MAAoC,IAA9BD,KAAKkO,IAAI,EAAGlO,KAAKiG,IAAI,EAAG7F,KAAWpD,SAAS,IAAIo4B,SAAS,EAAG,IAChF,CACA,SAASukE,GAAcx5F,GACrB,OAAOH,KAAKkO,IAAI,EAAGlO,KAAKiG,IAAI,IAAK,IAAM9F,GACzC,CACA,MAAMy5F,GACJ,aAAOC,EAAQ7kF,EAAG6jB,EAAG3jB,EAAGpD,IACtB,MAAO,CAAC,IAAK,EAAI9R,KAAKiG,IAAI,EAAG,GAAM+O,EAAI,IAAOE,EAAI,IAAO2jB,EAAI/mB,GAC/D,CACA,aAAOgoF,EAAQtkE,IACb,MAAO,CAAC,OAAQ,EAAG,EAAG,EAAG,EAAIA,EAC/B,CACA,YAAOukE,EAAOvkE,IACZ,MAAO,CAAC,MAAOA,EAAGA,EAAGA,EACvB,CACA,YAAOwkE,EAAOxkE,IAEZ,MAAO,CADPA,EAAImkE,GAAcnkE,GACPA,EAAGA,EAChB,CACA,aAAOykE,EAAQzkE,IACb,MAAM0kE,EAAIR,GAAclkE,GACxB,MAAO,IAAI0kE,IAAIA,IAAIA,GACrB,CACA,YAAOC,EAAO5kE,EAAGC,EAAGjd,IAClB,MAAO,CAAC,IAAK,GAAMgd,EAAI,IAAOC,EAAI,IAAOjd,EAC3C,CACA,cAAO6hF,CAAQp4D,GACb,OAAOA,EAAM58B,IAAIu0F,GACnB,CACA,eAAOU,CAASr4D,GACd,MAAO,IAAIA,EAAM58B,IAAIs0F,IAAe99F,KAAK,KAC3C,CACA,aAAO0+F,GACL,MAAO,WACT,CACA,YAAOC,GACL,MAAO,CAAC,KACV,CACA,eAAOC,EAAUxlF,EAAG6jB,EAAG3jB,EAAGpD,IACxB,MAAO,CAAC,MAAO,EAAI9R,KAAKiG,IAAI,EAAG+O,EAAIlD,GAAI,EAAI9R,KAAKiG,IAAI,EAAGiP,EAAIpD,GAAI,EAAI9R,KAAKiG,IAAI,EAAG4yB,EAAI/mB,GACrF,CACA,eAAO2oF,EAAUzlF,EAAG6jB,EAAG3jB,EAAGpD,IACxB,MAAO,CAAC6nF,GAAc,EAAI35F,KAAKiG,IAAI,EAAG+O,EAAIlD,IAAK6nF,GAAc,EAAI35F,KAAKiG,IAAI,EAAGiP,EAAIpD,IAAK6nF,GAAc,EAAI35F,KAAKiG,IAAI,EAAG4yB,EAAI/mB,IAC1H,CACA,gBAAO4oF,CAAUC,GACf,MAAM9tD,EAAM5vC,KAAKu9F,SAASG,GAAYj/F,MAAM,GAC5C,OAAOuB,KAAKo9F,SAASxtD,EACvB,CACA,eAAO+tD,EAAUrlE,EAAGC,EAAGjd,IACrB,MAAMvD,EAAI,EAAIugB,EACRrgB,EAAI,EAAIsgB,EACRqD,EAAI,EAAItgB,EAEd,MAAO,CAAC,OAAQvD,EAAGE,EAAG2jB,EADZ74B,KAAKiG,IAAI+O,EAAGE,EAAG2jB,GAE3B,EAQF,MAAMgiE,GACJ,MAAAxyF,CAAO41B,EAAOC,EAAQ48D,GAAiB,GACrC,GAAI78D,GAAS,GAAKC,GAAU,EAC1B,MAAM,IAAI5qB,MAAM,0BAElB,MAAMgnD,EAAMr9D,KAAK89F,WAAW,WAQ5B,OAPAzgC,EAAIr3B,aAAa,UAAW,OACvB63D,IACHxgC,EAAIr3B,aAAa,QAAS,GAAGhF,OAC7Bq8B,EAAIr3B,aAAa,SAAU,GAAG/E,QAEhCo8B,EAAIr3B,aAAa,sBAAuB,QACxCq3B,EAAIr3B,aAAa,UAAW,OAAOhF,KAASC,KACrCo8B,CACT,CACA,aAAA/rD,CAAc3L,GACZ,GAAoB,iBAATA,EACT,MAAM,IAAI0Q,MAAM,4BAElB,OAAOrW,KAAK89F,WAAWn4F,EACzB,CACA,UAAAm4F,CAAWn4F,GACT6uB,EAAY,uCACd,EAEF,MAAMupE,WAAsBH,GAC1B,UAAAE,CAAWn4F,GACT,OAAOiF,SAAS0yD,gBAAgB5+B,GAAQ/4B,EAC1C,EAMF,MAAMq4F,GACJ,mBAAOC,CAAax0F,EAAM+F,EAAIm5B,EAASu1D,EAASzpB,GAC9C,MAAM0pB,EAAaD,EAAQ/rC,SAAS3iD,EAAI,CACtC3Q,MAAO,OAET,OAAQ8pC,EAAQ1pC,MACd,IAAK,WAIH,GAHyB,OAArBk/F,EAAWt/F,QACb4K,EAAK83C,YAAc48C,EAAWt/F,OAEjB,UAAX41E,EACF,MAEFhrE,EAAKg1B,iBAAiB,SAASkQ,IAC7BuvD,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO8vC,EAAM3sC,OAAOnD,OACpB,IAEJ,MACF,IAAK,QACH,GAAgC,UAA5B8pC,EAAQ9D,WAAWl/B,MAAgD,aAA5BgjC,EAAQ9D,WAAWl/B,KAAqB,CAMjF,GALIw4F,EAAWt/F,QAAU8pC,EAAQ9D,WAAWu5D,MAC1C30F,EAAKu8B,aAAa,WAAW,GACpBm4D,EAAWt/F,QAAU8pC,EAAQ9D,WAAWw5D,QACjD50F,EAAK2tC,gBAAgB,WAER,UAAXq9B,EACF,MAEFhrE,EAAKg1B,iBAAiB,UAAUkQ,IAC9BuvD,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO8vC,EAAM3sC,OAAOs8F,QAAU3vD,EAAM3sC,OAAOi9C,aAAa,SAAWtQ,EAAM3sC,OAAOi9C,aAAa,WAC7F,GAEN,KAAO,CAIL,GAHyB,OAArBk/C,EAAWt/F,OACb4K,EAAKu8B,aAAa,QAASm4D,EAAWt/F,OAEzB,UAAX41E,EACF,MAEFhrE,EAAKg1B,iBAAiB,SAASkQ,IAC7BuvD,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO8vC,EAAM3sC,OAAOnD,OACpB,GAEN,CACA,MACF,IAAK,SACH,GAAyB,OAArBs/F,EAAWt/F,MAAgB,CAC7B4K,EAAKu8B,aAAa,QAASm4D,EAAWt/F,OACtC,IAAK,MAAM0/F,KAAU51D,EAAQymB,SACvBmvC,EAAO15D,WAAWhmC,QAAUs/F,EAAWt/F,MACzC0/F,EAAO15D,WAAW25D,UAAW,EACpBD,EAAO15D,WAAWtiC,eAAe,oBACnCg8F,EAAO15D,WAAW25D,QAG/B,CACA/0F,EAAKg1B,iBAAiB,SAASkQ,IAC7B,MAAMzvC,EAAUyvC,EAAM3sC,OAAO9C,QACvBL,GAAmC,IAA3BK,EAAQu/F,cAAuB,GAAKv/F,EAAQA,EAAQu/F,eAAe5/F,MACjFq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,SACA,IAIV,CACA,oBAAO6/F,EAAc,KACnBj1F,EAAI,QACJk/B,EAAO,QACPu1D,EAAU,KAAI,OACdzpB,EAAM,YACNkqB,IAEA,MAAM,WACJ95D,GACE8D,EACEi2D,EAAsBn1F,aAAgBo1F,kBACpB,UAApBh6D,EAAWl/B,OACbk/B,EAAW5lC,KAAO,GAAG4lC,EAAW5lC,QAAQw1E,KAE1C,IAAK,MAAO/rE,EAAK7J,KAAUN,OAAOoW,QAAQkwB,GACxC,GAAIhmC,QAGJ,OAAQ6J,GACN,IAAK,QACC7J,EAAMrB,QACRiM,EAAKu8B,aAAat9B,EAAK7J,EAAMF,KAAK,MAEpC,MACF,IAAK,SACH,MACF,IAAK,KACH8K,EAAKu8B,aAAa,kBAAmBnnC,GACrC,MACF,IAAK,QACHN,OAAO66C,OAAO3vC,EAAKqB,MAAOjM,GAC1B,MACF,IAAK,cACH4K,EAAK83C,YAAc1iD,EACnB,MACF,UACO+/F,GAA+B,SAARl2F,GAA0B,cAARA,IAC5Ce,EAAKu8B,aAAat9B,EAAK7J,GAI3B+/F,GACFD,EAAYG,kBAAkBr1F,EAAMo7B,EAAWpmB,KAAMomB,EAAWk6D,WAE9Db,GAAWr5D,EAAWm6D,QACxBh/F,KAAKi+F,aAAax0F,EAAMo7B,EAAWm6D,OAAQr2D,EAASu1D,EAExD,CACA,aAAOp2D,CAAOgd,GACZ,MAAMo5C,EAAUp5C,EAAW7R,kBACrB0rD,EAAc75C,EAAW65C,YACzBt6E,EAAOygC,EAAWm6C,QAClBxqB,EAAS3vB,EAAW2vB,QAAU,UAC9ByqB,EAAWt0F,SAAS0G,cAAc+S,EAAKplB,MACzColB,EAAKwgB,YACP7kC,KAAK0+F,cAAc,CACjBj1F,KAAMy1F,EACNv2D,QAAStkB,EACTowD,SACAkqB,gBAGJ,MAAMQ,EAA8B,aAAX1qB,EACnB2qB,EAAUt6C,EAAWvf,IAE3B,GADA65D,EAAQ9qF,OAAO4qF,GACXp6C,EAAWtf,SAAU,CACvB,MAAM9W,EAAY,UAAUo2B,EAAWtf,SAAS9W,UAAU/vB,KAAK,QAC/DygG,EAAQt0F,MAAM4jB,UAAYA,CAC5B,CACIywE,GACFC,EAAQp5D,aAAa,QAAS,oBAEhC,MAAMkmD,EAAW,GACjB,GAA6B,IAAzB7nE,EAAK+qC,SAAS5xD,OAAc,CAC9B,GAAI6mB,EAAKxlB,MAAO,CACd,MAAM6jB,EAAO9X,SAASy0F,eAAeh7E,EAAKxlB,OAC1CqgG,EAAS5qF,OAAOoO,GACZy8E,GAAoB7Q,GAAQG,gBAAgBpqE,EAAKplB,OACnDitF,EAAS3jF,KAAKma,EAElB,CACA,MAAO,CACLwpE,WAEJ,CACA,MAAM90E,EAAQ,CAAC,CAACiN,GAAO,EAAG66E,IAC1B,KAAO9nF,EAAM5Z,OAAS,GAAG,CACvB,MAAOotC,EAAQ7kC,EAAG0D,GAAQ2N,EAAM2J,IAAI,GACpC,GAAIhb,EAAI,IAAM6kC,EAAOwkB,SAAS5xD,OAAQ,CACpC4Z,EAAMwgE,MACN,QACF,CACA,MAAMjoB,EAAQ/kB,EAAOwkB,WAAWh4C,EAAM2J,IAAI,GAAG,IAC7C,GAAc,OAAV4uC,EACF,SAEF,MAAM,KACJ1wD,GACE0wD,EACJ,GAAa,UAAT1wD,EAAkB,CACpB,MAAMyjB,EAAO9X,SAASy0F,eAAe1vC,EAAM9wD,OAC3CqtF,EAAS3jF,KAAKma,GACdjZ,EAAK6K,OAAOoO,GACZ,QACF,CACA,MAAM48E,EAAY3vC,GAAO9qB,YAAY06D,MAAQ30F,SAAS0yD,gBAAgB3N,EAAM9qB,WAAW06D,MAAOtgG,GAAQ2L,SAAS0G,cAAcrS,GAW7H,GAVAwK,EAAK6K,OAAOgrF,GACR3vC,EAAM9qB,YACR7kC,KAAK0+F,cAAc,CACjBj1F,KAAM61F,EACN32D,QAASgnB,EACTuuC,UACAzpB,SACAkqB,gBAGAhvC,EAAMP,UAAU5xD,OAAS,EAC3B4Z,EAAM7O,KAAK,CAAConD,GAAQ,EAAG2vC,SAClB,GAAI3vC,EAAM9wD,MAAO,CACtB,MAAM6jB,EAAO9X,SAASy0F,eAAe1vC,EAAM9wD,OACvCsgG,GAAoB7Q,GAAQG,gBAAgBxvF,IAC9CitF,EAAS3jF,KAAKma,GAEhB48E,EAAUhrF,OAAOoO,EACnB,CACF,CACA,IAAK,MAAM6F,KAAM62E,EAAQI,iBAAiB,yDACxCj3E,EAAGyd,aAAa,YAAY,GAE9B,MAAO,CACLkmD,WAEJ,CACA,aAAOh7B,CAAOpM,GACZ,MAAMp2B,EAAY,UAAUo2B,EAAWtf,SAAS9W,UAAU/vB,KAAK,QAC/DmmD,EAAWvf,IAAIz6B,MAAM4jB,UAAYA,EACjCo2B,EAAWvf,IAAIk6D,QAAS,CAC1B,EAqBF,MACMC,GAAuB,IAAIxE,QACjC,MAAMyE,GACJ,aAAOv0F,CAAO05C,GAEZ,OADgBA,EAAWx3C,KAAKsyF,gBAE9B,KAAK1zE,EAAeE,KAClB,OAAO,IAAIyzE,GAAsB/6C,GACnC,KAAK54B,EAAeC,KAClB,OAAO,IAAI2zE,GAAsBh7C,GACnC,KAAK54B,EAAegB,OAElB,OADkB43B,EAAWx3C,KAAKyyF,WAEhC,IAAK,KACH,OAAO,IAAIC,GAA4Bl7C,GACzC,IAAK,MACH,OAAIA,EAAWx3C,KAAK2yF,YACX,IAAIC,GAAmCp7C,GACrCA,EAAWx3C,KAAK6yF,SAClB,IAAIC,GAAgCt7C,GAEtC,IAAIu7C,GAAkCv7C,GAC/C,IAAK,KACH,OAAO,IAAIw7C,GAA8Bx7C,GAC3C,IAAK,MACH,OAAO,IAAIy7C,GAAiCz7C,GAEhD,OAAO,IAAI07C,GAAwB17C,GACrC,KAAK54B,EAAeY,MAClB,OAAO,IAAI2zE,GAAuB37C,GACpC,KAAK54B,EAAelC,SAClB,OAAO,IAAI02E,GAA0B57C,GACvC,KAAK54B,EAAeG,KAClB,OAAO,IAAIs0E,GAAsB77C,GACnC,KAAK54B,EAAeI,OAClB,OAAO,IAAIs0E,GAAwB97C,GACrC,KAAK54B,EAAeK,OAClB,OAAO,IAAIs0E,GAAwB/7C,GACrC,KAAK54B,EAAeO,SAClB,OAAO,IAAIq0E,GAA0Bh8C,GACvC,KAAK54B,EAAeW,MAClB,OAAO,IAAIk0E,GAAuBj8C,GACpC,KAAK54B,EAAe/B,IAClB,OAAO,IAAI62E,GAAqBl8C,GAClC,KAAK54B,EAAeM,QAClB,OAAO,IAAIy0E,GAAyBn8C,GACtC,KAAK54B,EAAejC,UAClB,OAAO,IAAIi3E,GAA2Bp8C,GACxC,KAAK54B,EAAeQ,UAClB,OAAO,IAAIy0E,GAA2Br8C,GACxC,KAAK54B,EAAeS,SAClB,OAAO,IAAIy0E,GAA0Bt8C,GACvC,KAAK54B,EAAeU,UAClB,OAAO,IAAIy0E,GAA2Bv8C,GACxC,KAAK54B,EAAehC,MAClB,OAAO,IAAIo3E,GAAuBx8C,GACpC,KAAK54B,EAAea,eAClB,OAAO,IAAIw0E,GAAgCz8C,GAC7C,QACE,OAAO,IAAI08C,GAAkB18C,GAEnC,EAEF,MAAM08C,GACJ,IAAW,KACX,KAAa,EACb,IAAgB,KAChB,WAAAjiG,CAAYulD,GAAY,aACtB28C,GAAe,EAAK,aACpBC,GAAe,EAAK,qBACpBC,GAAuB,GACrB,CAAC,GACH3hG,KAAKyhG,aAAeA,EACpBzhG,KAAKsN,KAAOw3C,EAAWx3C,KACvBtN,KAAKwzC,MAAQsR,EAAWtR,MACxBxzC,KAAK2+F,YAAc75C,EAAW65C,YAC9B3+F,KAAK4hG,gBAAkB98C,EAAW88C,gBAClC5hG,KAAK6hG,mBAAqB/8C,EAAW+8C,mBACrC7hG,KAAK8hG,YAAch9C,EAAWg9C,YAC9B9hG,KAAK+hG,WAAaj9C,EAAWi9C,WAC7B/hG,KAAKizC,kBAAoB6R,EAAW7R,kBACpCjzC,KAAKgiG,gBAAkBl9C,EAAWk9C,gBAClChiG,KAAK20F,aAAe7vC,EAAW6vC,aAC/B30F,KAAKiiG,cAAgBn9C,EAAWo9C,aAChCliG,KAAK4qC,OAASka,EAAWla,OACrB62D,IACFzhG,KAAK0xC,UAAY1xC,KAAKmiG,iBAAiBT,IAErCC,GACF3hG,KAAKoiG,uBAET,CACA,oBAAOC,EAAc,YACnBC,EAAW,SACXC,IAEA,SAAUD,GAAaxrE,MAAOyrE,GAAUzrE,IAC1C,CACA,eAAI0rE,GACF,OAAOxiG,KAAKsN,KAAKm1F,UACnB,CACA,gBAAIC,GACF,OAAOlB,GAAkBa,cAAcriG,KAAKsN,KAC9C,CACA,YAAAq1F,CAAaluF,GACX,IAAKzU,KAAK0xC,UACR,OAEF1xC,MAAK,KAAa,CAChB25B,KAAM35B,KAAKsN,KAAKqsB,KAAKl7B,MAAM,IAE7B,MAAM,KACJk7B,GACEllB,EACAklB,GACF35B,MAAK,GAAe25B,GAEtB35B,MAAK,IAAe4iG,MAAMD,aAAaluF,EACzC,CACA,WAAAouF,GACO7iG,MAAK,KAGVA,MAAK,GAAeA,MAAK,GAAS25B,MAClC35B,MAAK,IAAe4iG,MAAMC,cAC1B7iG,MAAK,GAAW,KAClB,CACA,IAAe25B,GACb,MACE+X,WAAW,MACT5mC,GAEFwC,MACEqsB,KAAMmpE,EAAW,SACjB1iE,GAEFwK,QACEpF,UACEtE,SAAS,UACPE,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,MAIJvhC,KACJ8iG,GAAa50D,OAAO,EAAG,KAAMvU,GAC7B7uB,EAAM09C,KAAU,KAAO7uB,EAAK,GAAK2H,GAASF,EAA7B,IACbt2B,EAAM29B,IAAS,KAAOpH,EAAa1H,EAAK,GAAK4H,GAASF,EAA1C,IACK,IAAbjB,GACFt1B,EAAMk2B,MAAW,KAAOrH,EAAK,GAAKA,EAAK,IAAMyH,EAA/B,IACdt2B,EAAMm2B,OAAY,KAAOtH,EAAK,GAAKA,EAAK,IAAM0H,EAA/B,KAEfrhC,KAAK+iG,YAAY3iE,EAErB,CACA,gBAAA+hE,CAAiBT,GACf,MAAM,KACJp0F,EACAs9B,QAAQ,KACNotB,EAAI,SACJxyB,IAEAxlC,KACE0xC,EAAY9mC,SAAS0G,cAAc,WACzCogC,EAAU1L,aAAa,qBAAsB14B,EAAKkC,IAC5CxP,gBAAgBwgG,KACpB9uD,EAAUtI,SAAW,GAEvB,MAAM,MACJt+B,GACE4mC,EAQJ,GAPA5mC,EAAMo8C,OAASlnD,KAAK4qC,OAAOsc,SACvB55C,EAAK01F,kBACPtxD,EAAUvH,MAAQ78B,EAAK01F,iBAErB11F,EAAK21F,UACPvxD,EAAU1J,UAAUv3B,IAAI,aAErBnD,EAAKqsB,MAAQ35B,gBAAgBygG,GAAwB,CACxD,MAAM,SACJrgE,GACE9yB,EAIJ,OAHKA,EAAKyvE,cAA6B,IAAb38C,GACxBpgC,KAAK+iG,YAAY3iE,EAAUsR,GAEtBA,CACT,CACA,MAAM,MACJ1Q,EAAK,OACLC,GACEjhC,KACJ,IAAK0hG,GAAgBp0F,EAAK41F,YAAYliE,MAAQ,EAAG,CAC/Cl2B,EAAMq4F,YAAc,GAAG71F,EAAK41F,YAAYliE,UACxC,MAAMoiE,EAAmB91F,EAAK41F,YAAYG,uBACpCC,EAAiBh2F,EAAK41F,YAAYK,qBACxC,GAAIH,EAAmB,GAAKE,EAAiB,EAAG,CAC9C,MAAME,EAAS,QAAQJ,2CAA0DE,mCACjFx4F,EAAM24F,aAAeD,CACvB,MAAO,GAAIxjG,gBAAgBkgG,GAAoC,CAC7D,MAAMsD,EAAS,QAAQxiE,2CAA+CC,mCACtEn2B,EAAM24F,aAAeD,CACvB,CACA,OAAQl2F,EAAK41F,YAAYp4F,OACvB,KAAK2iB,EACH3iB,EAAMo4F,YAAc,QACpB,MACF,KAAKz1E,EACH3iB,EAAMo4F,YAAc,SACpB,MACF,KAAKz1E,EACH8G,EAAK,uCACL,MACF,KAAK9G,EACH8G,EAAK,qCACL,MACF,KAAK9G,EACH3iB,EAAM44F,kBAAoB,QAK9B,MAAMC,EAAcr2F,EAAKq2F,aAAe,KACpCA,GACF3jG,MAAK,IAAa,EAClB8K,EAAM64F,YAAcvrE,GAAKC,aAA8B,EAAjBsrE,EAAY,GAAyB,EAAjBA,EAAY,GAAyB,EAAjBA,EAAY,KAE1F74F,EAAMq4F,YAAc,CAExB,CACA,MAAMxpE,EAAOvB,GAAK+C,cAAc,CAAC7tB,EAAKqsB,KAAK,GAAIq+B,EAAKmnB,KAAK,GAAK7xE,EAAKqsB,KAAK,GAAKq+B,EAAKmnB,KAAK,GAAI7xE,EAAKqsB,KAAK,GAAIq+B,EAAKmnB,KAAK,GAAK7xE,EAAKqsB,KAAK,GAAKq+B,EAAKmnB,KAAK,MAC3I,UACJ/9C,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,GACEiE,EAAStE,QACbp2B,EAAM09C,KAAU,KAAO7uB,EAAK,GAAK2H,GAASF,EAA7B,IACbt2B,EAAM29B,IAAS,KAAO9O,EAAK,GAAK4H,GAASF,EAA7B,IACZ,MAAM,SACJjB,GACE9yB,EAOJ,OANIA,EAAKyvE,cAA6B,IAAb38C,GACvBt1B,EAAMk2B,MAAW,IAAMA,EAAQI,EAAjB,IACdt2B,EAAMm2B,OAAY,IAAMA,EAASI,EAAlB,KAEfrhC,KAAK+iG,YAAY3iE,EAAUsR,GAEtBA,CACT,CACA,WAAAqxD,CAAYj6C,EAAOpX,EAAY1xC,KAAK0xC,WAClC,IAAK1xC,KAAKsN,KAAKqsB,KACb,OAEF,MAAM,UACJyH,EAAS,WACTC,GACErhC,KAAK4qC,OAAOpF,SAAStE,QACzB,IAAI,MACFF,EAAK,OACLC,GACEjhC,KACA8oD,EAAQ,KAAQ,KACjB9nB,EAAOC,GAAU,CAACA,EAAQD,IAE7B0Q,EAAU5mC,MAAMk2B,MAAW,IAAMA,EAAQI,EAAjB,IACxBsQ,EAAU5mC,MAAMm2B,OAAY,IAAMA,EAASI,EAAlB,IACzBqQ,EAAU1L,aAAa,sBAAuB,IAAM8iB,GAAS,IAC/D,CACA,kBAAI86C,GACF,MAAMC,EAAW,CAACC,EAAQC,EAAWp1D,KACnC,MAAM5J,EAAQ4J,EAAMq1D,OAAOF,GACrBG,EAAYl/D,EAAM,GAClBm/D,EAAan/D,EAAMtmC,MAAM,GAC/BkwC,EAAM3sC,OAAO8I,MAAMi5F,GAAapH,GAAgB,GAAGsH,UAAkBC,GACrElkG,KAAKizC,kBAAkB+D,SAASh3C,KAAKsN,KAAKkC,GAAI,CAC5C,CAACu0F,GAAYpH,GAAgB,GAAGsH,SAAiBC,IACjD,EAEJ,OAAOzuE,EAAOz1B,KAAM,iBAAkB,CACpC+K,QAAS4jC,IACP,MAAM,QACJ5jC,GACE4jC,EAAMq1D,OACJvE,EAAS10F,EAAU,GAAM,EAC/B/K,KAAK0xC,UAAU5mC,MAAMukC,WAAaowD,EAAS,SAAW,UACtDz/F,KAAKizC,kBAAkB+D,SAASh3C,KAAKsN,KAAKkC,GAAI,CAC5C20F,OAAQ1E,EACR2E,QAAqB,IAAZr5F,GAA6B,IAAZA,GAC1B,EAEJwnD,MAAO5jB,IACL3uC,KAAKizC,kBAAkB+D,SAASh3C,KAAKsN,KAAKkC,GAAI,CAC5C40F,SAAUz1D,EAAMq1D,OAAOzxC,OACvB,EAEJktC,OAAQ9wD,IACN,MAAM,OACJ8wD,GACE9wD,EAAMq1D,OACVhkG,KAAK0xC,UAAU5mC,MAAMukC,WAAaowD,EAAS,SAAW,UACtDz/F,KAAKizC,kBAAkB+D,SAASh3C,KAAKsN,KAAKkC,GAAI,CAC5C40F,QAAS3E,EACT0E,OAAQ1E,GACR,EAEJxqD,MAAOtG,IACLgN,YAAW,IAAMhN,EAAM3sC,OAAOizC,MAAM,CAClC4a,eAAe,KACb,EAAE,EAERw0C,SAAU11D,IACRA,EAAM3sC,OAAOmoC,MAAQwE,EAAMq1D,OAAOK,QAAQ,EAE5CC,SAAU31D,IACRA,EAAM3sC,OAAOo/C,SAAWzS,EAAMq1D,OAAOM,QAAQ,EAE/Ch2F,SAAUqgC,IACR3uC,KAAKukG,aAAa51D,EAAM3sC,OAAQ2sC,EAAMq1D,OAAO11F,SAAS,EAExDouD,QAAS/tB,IACPk1D,EAAS,UAAW,kBAAmBl1D,EAAM,EAE/Cm6B,UAAWn6B,IACTk1D,EAAS,YAAa,kBAAmBl1D,EAAM,EAEjD8tB,QAAS9tB,IACPk1D,EAAS,UAAW,QAASl1D,EAAM,EAErC61D,UAAW71D,IACTk1D,EAAS,YAAa,QAASl1D,EAAM,EAEvCg1D,YAAah1D,IACXk1D,EAAS,cAAe,cAAel1D,EAAM,EAE/Co6B,YAAap6B,IACXk1D,EAAS,cAAe,cAAel1D,EAAM,EAE/CvO,SAAUuO,IACR,MAAMma,EAAQna,EAAMq1D,OAAO5jE,SAC3BpgC,KAAK+iG,YAAYj6C,GACjB9oD,KAAKizC,kBAAkB+D,SAASh3C,KAAKsN,KAAKkC,GAAI,CAC5C4wB,SAAU0oB,GACV,GAGR,CACA,yBAAA27C,CAA0BC,EAASC,GACjC,MAAMC,EAAgB5kG,KAAK4jG,eAC3B,IAAK,MAAM3kG,KAAQV,OAAOwF,KAAK4gG,EAAQX,QAAS,CAC9C,MAAMlpD,EAAS4pD,EAAQzlG,IAAS2lG,EAAc3lG,GAC9C67C,IAAS6pD,EACX,CACF,CACA,2BAAAE,CAA4Bl8D,GAC1B,IAAK3oC,KAAKgiG,gBACR,OAEF,MAAM7D,EAAan+F,KAAKizC,kBAAkBuM,YAAYx/C,KAAKsN,KAAKkC,IAChE,IAAK2uF,EACH,OAEF,MAAMyG,EAAgB5kG,KAAK4jG,eAC3B,IAAK,MAAOhqC,EAAYoqC,KAAWzlG,OAAOoW,QAAQwpF,GAAa,CAC7D,MAAMrjD,EAAS8pD,EAAchrC,GAC7B,GAAI9e,EAAQ,CAOVA,EANmB,CACjBkpD,OAAQ,CACN,CAACpqC,GAAaoqC,GAEhBhiG,OAAQ2mC,WAGHw1D,EAAWvkC,EACpB,CACF,CACF,CACA,qBAAAwoC,GACE,IAAKpiG,KAAK0xC,UACR,OAEF,MAAM,WACJozD,GACE9kG,KAAKsN,KACT,IAAKw3F,EACH,OAEF,MAAOC,EAASC,EAASC,EAASC,GAAWllG,KAAKsN,KAAKqsB,KAAKxxB,KAAIjF,GAAKH,KAAKysE,OAAOtsE,KACjF,GAA0B,IAAtB4hG,EAAWtnG,OAAc,CAC3B,MAAO2nG,EAAKC,EAAKC,EAAKC,GAAOR,EAAWluE,SAAS,EAAG,GACpD,GAAIquE,IAAYE,GAAOD,IAAYE,GAAOL,IAAYM,GAAOL,IAAYM,EACvE,MAEJ,CACA,MAAM,MACJx6F,GACE9K,KAAK0xC,UACT,IAAI6zD,EACJ,GAAIvlG,MAAK,GAAY,CACnB,MAAM,YACJ2jG,EAAW,YACXR,GACEr4F,EACJA,EAAMq4F,YAAc,EACpBoC,EAAY,CAAC,gCAAiC,0CAA2C,iDAAkD,iCAAiC5B,oBAA8BR,OAC1MnjG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,YAC/B,CACA,MAAMuwB,EAAQikE,EAAUF,EAClB9jE,EAASikE,EAAUF,GACnB,WACJjD,GACE/hG,KACEq9D,EAAM0kC,EAAWzwF,cAAc,OACrC+rD,EAAIr1B,UAAUv3B,IAAI,2BAClB4sD,EAAIr3B,aAAa,QAAS,GAC1Bq3B,EAAIr3B,aAAa,SAAU,GAC3Bq3B,EAAImoC,KAAO,OACX,MAAMC,EAAO1D,EAAWzwF,cAAc,QACtC+rD,EAAI/oD,OAAOmxF,GACX,MAAMC,EAAW3D,EAAWzwF,cAAc,YACpC9B,EAAK,YAAYxP,KAAKsN,KAAKkC,KACjCk2F,EAAS1/D,aAAa,KAAMx2B,GAC5Bk2F,EAAS1/D,aAAa,gBAAiB,qBACvCy/D,EAAKnxF,OAAOoxF,GACZ,IAAK,IAAI3/F,EAAI,EAAGi8B,EAAK8iE,EAAWtnG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACtD,MAAMo/F,EAAML,EAAW/+F,GACjBq/F,EAAMN,EAAW/+F,EAAI,GACrBs/F,EAAMP,EAAW/+F,EAAI,GACrBu/F,EAAMR,EAAW/+F,EAAI,GACrB4zB,EAAOooE,EAAWzwF,cAAc,QAChCpO,GAAKmiG,EAAMN,GAAW/jE,EACtBpF,GAAKspE,EAAUE,GAAOnkE,EACtB0kE,GAAaR,EAAME,GAAOrkE,EAC1B4kE,GAAcR,EAAME,GAAOrkE,EACjCtH,EAAKqM,aAAa,IAAK9iC,GACvBy2B,EAAKqM,aAAa,IAAKpK,GACvBjC,EAAKqM,aAAa,QAAS2/D,GAC3BhsE,EAAKqM,aAAa,SAAU4/D,GAC5BF,EAASpxF,OAAOqlB,GAChB4rE,GAAWh9F,KAAK,+CAA+CrF,SAAS04B,aAAa+pE,cAAsBC,OAC7G,CACI5lG,MAAK,KACPulG,EAAUh9F,KAAK,gBACfuC,EAAM+6F,gBAAkBN,EAAU5mG,KAAK,KAEzCqB,KAAK0xC,UAAUp9B,OAAO+oD,GACtBr9D,KAAK0xC,UAAU5mC,MAAM46F,SAAW,QAAQl2F,IAC1C,CACA,YAAAs2F,GACE,MAAM,KACJx4F,GACEtN,KACE4iG,EAAQ5iG,MAAK,GAAgB,IAAIygG,GAAuB,CAC5DnzF,KAAM,CACJy3B,MAAOz3B,EAAKy3B,MACZghE,SAAUz4F,EAAKy4F,SACfC,iBAAkB14F,EAAK04F,iBACvB1D,YAAah1F,EAAKg1F,YAClBC,SAAUj1F,EAAKi1F,SACf0D,WAAY34F,EAAKqsB,KACjBupE,YAAa,EACb1zF,GAAI,SAASlC,EAAKkC,KAClB4wB,SAAU9yB,EAAK8yB,SACf6iE,UAAU,GAEZr4D,OAAQ5qC,KAAK4qC,OACb5kB,SAAU,CAAChmB,QAEbA,KAAK4qC,OAAOrF,IAAIjxB,OAAOsuF,EAAM96D,SAC/B,CACA,MAAAA,GACEtT,EAAY,oDACd,CACA,kBAAA0xE,CAAmBjnG,EAAMknG,EAAS,MAChC,MAAMC,EAAS,GACf,GAAIpmG,KAAKiiG,cAAe,CACtB,MAAMoE,EAAWrmG,KAAKiiG,cAAchjG,GACpC,GAAIonG,EACF,IAAK,MAAM,KACTruC,EAAI,GACJxoD,EAAE,aACF82F,KACGD,EAAU,CACb,IAAc,IAAVruC,EACF,SAEF,GAAIxoD,IAAO22F,EACT,SAEF,MAAMI,EAAsC,iBAAjBD,EAA4BA,EAAe,KAChEE,EAAa57F,SAAS4lD,cAAc,qBAAqBhhD,QAC3Dg3F,GAAe9G,GAAqB/6F,IAAI6hG,GAI5CJ,EAAO79F,KAAK,CACViH,KACA+2F,cACAC,eANAjyE,EAAK,6CAA6C/kB,IAQtD,CAEF,OAAO42F,CACT,CACA,IAAK,MAAMI,KAAc57F,SAAS67F,kBAAkBxnG,GAAO,CACzD,MAAM,YACJsnG,GACEC,EACEh3F,EAAKg3F,EAAWvnD,aAAa,mBAC/BzvC,IAAO22F,IAGNzG,GAAqB/6F,IAAI6hG,IAG9BJ,EAAO79F,KAAK,CACViH,KACA+2F,cACAC,eAEJ,CACA,OAAOJ,CACT,CACA,IAAAr9D,GACM/oC,KAAK0xC,YACP1xC,KAAK0xC,UAAU+tD,QAAS,GAE1Bz/F,KAAK4iG,OAAO8D,WACd,CACA,IAAA79D,GACM7oC,KAAK0xC,YACP1xC,KAAK0xC,UAAU+tD,QAAS,GAE1Bz/F,KAAK4iG,OAAO+D,WACd,CACA,yBAAAC,GACE,OAAO5mG,KAAK0xC,SACd,CACA,gBAAAm1D,GACE,MAAMC,EAAW9mG,KAAK4mG,4BACtB,GAAI93F,MAAMwD,QAAQw0F,GAChB,IAAK,MAAMn+D,KAAWm+D,EACpBn+D,EAAQX,UAAUv3B,IAAI,sBAGxBq2F,EAAS9+D,UAAUv3B,IAAI,gBAE3B,CACA,kBAAAs2F,GACE,IAAK/mG,KAAKwiG,YACR,OAEF,MACEwE,qBAAsB9nF,EACtB5R,MACEkC,GAAI0qC,IAEJl6C,KACJA,KAAK0xC,UAAUjT,iBAAiB,YAAY,KAC1Cz+B,KAAK2+F,YAAY7sD,UAAU+C,SAAS,6BAA8B,CAChEh1C,OAAQG,KACRkf,OACAg7B,SACAE,qBAAqB,GACrB,GAEN,CACA,SAAIpZ,GACF,OAAOhhC,KAAKsN,KAAKqsB,KAAK,GAAK35B,KAAKsN,KAAKqsB,KAAK,EAC5C,CACA,UAAIsH,GACF,OAAOjhC,KAAKsN,KAAKqsB,KAAK,GAAK35B,KAAKsN,KAAKqsB,KAAK,EAC5C,EAEF,MAAMkmE,WAA8B2B,GAClC,WAAAjiG,CAAYulD,EAAY5lD,EAAU,MAChC62B,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,eAAgBxiG,GAASwiG,aACzBC,sBAAsB,IAExB3hG,KAAKinG,cAAgBniD,EAAWx3C,KAAK25F,aACvC,CACA,MAAAn/D,GACE,MAAM,KACJx6B,EAAI,YACJqxF,GACE3+F,KACEknG,EAAOt8F,SAAS0G,cAAc,KACpC41F,EAAKlhE,aAAa,kBAAmB14B,EAAKkC,IAC1C,IAAI23F,GAAU,EAiCd,OAhCI75F,EAAKqO,KACPgjF,EAAYG,kBAAkBoI,EAAM55F,EAAKqO,IAAKrO,EAAKyxF,WACnDoI,GAAU,GACD75F,EAAKwtC,QACd96C,KAAKonG,iBAAiBF,EAAM55F,EAAKwtC,QACjCqsD,GAAU,GACD75F,EAAK+5F,YACdrnG,MAAK,GAAgBknG,EAAM55F,EAAK+5F,WAAY/5F,EAAKg6F,gBACjDH,GAAU,GACD75F,EAAKizE,aACdvgF,MAAK,GAAiBknG,EAAM55F,EAAKizE,aACjC4mB,GAAU,GACD75F,EAAKyqD,MACd/3D,KAAKunG,UAAUL,EAAM55F,EAAKyqD,MAC1BovC,GAAU,IAEN75F,EAAKo3F,UAAYp3F,EAAKo3F,QAAQ8C,QAAUl6F,EAAKo3F,QAAQ,aAAep3F,EAAKo3F,QAAQ,gBAAkB1kG,KAAKgiG,iBAAmBhiG,KAAK20F,eAClI30F,KAAKynG,cAAcP,EAAM55F,GACzB65F,GAAU,GAER75F,EAAKo6F,WACP1nG,KAAK2nG,qBAAqBT,EAAM55F,EAAKo6F,WACrCP,GAAU,GACDnnG,KAAKinG,gBAAkBE,IAChCnnG,KAAKunG,UAAUL,EAAM,IACrBC,GAAU,IAGdnnG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,kBACzB02F,GACFnnG,KAAK0xC,UAAUp9B,OAAO4yF,GAEjBlnG,KAAK0xC,SACd,CACA,MACE1xC,KAAK0xC,UAAU1L,aAAa,qBAAsB,GACpD,CACA,SAAAuhE,CAAUL,EAAMU,GACdV,EAAKzoF,KAAOze,KAAK2+F,YAAYkJ,mBAAmBD,GAChDV,EAAKY,QAAU,KACTF,GACF5nG,KAAK2+F,YAAYoJ,gBAAgBH,IAE5B,IAELA,GAA+B,KAAhBA,IACjB5nG,MAAK,IAET,CACA,gBAAAonG,CAAiBF,EAAMpsD,GACrBosD,EAAKzoF,KAAOze,KAAK2+F,YAAYqJ,aAAa,IAC1Cd,EAAKY,QAAU,KACb9nG,KAAK2+F,YAAYsJ,mBAAmBntD,IAC7B,GAET96C,MAAK,IACP,CACA,IAAgBknG,EAAMG,EAAYtvC,EAAO,MACvCmvC,EAAKzoF,KAAOze,KAAK2+F,YAAYqJ,aAAa,IACtCX,EAAWn9D,cACbg9D,EAAK/8D,MAAQk9D,EAAWn9D,aAE1Bg9D,EAAKY,QAAU,KACb9nG,KAAK4hG,iBAAiBsG,mBAAmBb,EAAWr9F,QAASq9F,EAAWjlE,SAAU21B,IAC3E,GAET/3D,MAAK,IACP,CACA,IAAiBknG,EAAMpsD,GACrBosD,EAAKzoF,KAAOze,KAAK2+F,YAAYqJ,aAAa,IAC1Cd,EAAKY,QAAU,KACb9nG,KAAK2+F,YAAYwJ,mBAAmBrtD,IAC7B,GAET96C,MAAK,IACP,CACA,aAAAynG,CAAcP,EAAM55F,GAClB45F,EAAKzoF,KAAOze,KAAK2+F,YAAYqJ,aAAa,IAC1C,MAAM7/F,EAAM,IAAI80B,IAAI,CAAC,CAAC,SAAU,WAAY,CAAC,WAAY,aAAc,CAAC,aAAc,iBACtF,IAAK,MAAMh+B,KAAQV,OAAOwF,KAAKuJ,EAAKo3F,SAAU,CAC5C,MAAMZ,EAAS37F,EAAIhK,IAAIc,GAClB6kG,IAGLoD,EAAKpD,GAAU,KACb9jG,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,GAAIlC,EAAKkC,GACTvQ,WAGG,GAEX,CACKioG,EAAKY,UACRZ,EAAKY,QAAU,KAAM,GAEvB9nG,MAAK,IACP,CACA,oBAAA2nG,CAAqBT,EAAMQ,GACzB,MAAMU,EAAmBlB,EAAKY,QAK9B,GAJKM,IACHlB,EAAKzoF,KAAOze,KAAK2+F,YAAYqJ,aAAa,KAE5ChoG,MAAK,MACAA,KAAKiiG,cAKR,OAJA1tE,EAAK,uHACA6zE,IACHlB,EAAKY,QAAU,KAAM,IAIzBZ,EAAKY,QAAU,KACbM,MACA,MACEhC,OAAQiC,EACRC,KAAMC,EAAa,QACnBC,GACEd,EACEe,EAAY,GAClB,GAA+B,IAA3BJ,EAAgB7qG,QAAyC,IAAzB+qG,EAAc/qG,OAAc,CAC9D,MAAMkrG,EAAW,IAAIl2F,IAAI+1F,GACzB,IAAK,MAAMI,KAAaN,EAAiB,CACvC,MAAMjC,EAASpmG,KAAKiiG,cAAc0G,IAAc,GAChD,IAAK,MAAM,GACTn5F,KACG42F,EACHsC,EAASj4F,IAAIjB,EAEjB,CACA,IAAK,MAAM42F,KAAU7nG,OAAOwgB,OAAO/e,KAAKiiG,eACtC,IAAK,MAAM2G,KAASxC,EACdsC,EAAS/jG,IAAIikG,EAAMp5F,MAAQg5F,GAC7BC,EAAUlgG,KAAKqgG,EAIvB,MACE,IAAK,MAAMxC,KAAU7nG,OAAOwgB,OAAO/e,KAAKiiG,eACtCwG,EAAUlgG,QAAQ69F,GAGtB,MAAMlI,EAAUl+F,KAAKizC,kBACf41D,EAAS,GACf,IAAK,MAAMD,KAASH,EAAW,CAC7B,MAAM,GACJj5F,GACEo5F,EAEJ,OADAC,EAAOtgG,KAAKiH,GACJo5F,EAAMjjG,MACZ,IAAK,OACH,CACE,MAAM9G,EAAQ+pG,EAAMx2C,cAAgB,GACpC8rC,EAAQlnD,SAASxnC,EAAI,CACnB3Q,UAEF,KACF,CACF,IAAK,WACL,IAAK,cACH,CACE,MAAMA,EAAQ+pG,EAAMx2C,eAAiBw2C,EAAMtC,aAC3CpI,EAAQlnD,SAASxnC,EAAI,CACnB3Q,UAEF,KACF,CACF,IAAK,WACL,IAAK,UACH,CACE,MAAMA,EAAQ+pG,EAAMx2C,cAAgB,GACpC8rC,EAAQlnD,SAASxnC,EAAI,CACnB3Q,UAEF,KACF,CACF,QACE,SAEJ,MAAM2nG,EAAa57F,SAAS4lD,cAAc,qBAAqBhhD,OAC1Dg3F,IAEO9G,GAAqB/6F,IAAI6hG,GAIrCA,EAAWsC,cAAc,IAAIC,MAAM,cAHjCx0E,EAAK,+CAA+C/kB,KAIxD,CAWA,OAVIxP,KAAKgiG,iBACPhiG,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,GAAI,MACJ0jD,IAAK21C,EACL5pG,KAAM,gBAIL,CAAK,CAEhB,EAEF,MAAM6gG,WAA8B0B,GAClC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,GAElB,CACA,MAAA35D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,kBAC7B,MAAM46B,EAAQzgC,SAAS0G,cAAc,OAUrC,OATA+5B,EAAMpgC,IAAMjL,KAAK6hG,mBAAqB,cAAgB7hG,KAAKsN,KAAKrO,KAAKyO,cAAgB,OACrF29B,EAAMrF,aAAa,eAAgB,8BACnCqF,EAAMrF,aAAa,iBAAkBjkB,KAAKo1B,UAAU,CAClDxxC,KAAM3F,KAAKsN,KAAKrO,SAEbe,KAAKsN,KAAKyhD,UAAY/uD,KAAK0iG,cAC9B1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAUp9B,OAAO+2B,GACfrrC,KAAK0xC,SACd,EAEF,MAAM8uD,WAAgCgB,GACpC,MAAA15D,GACE,OAAO9nC,KAAK0xC,SACd,CACA,wBAAAs3D,CAAyBrgE,GACnB3oC,KAAKsN,KAAKyvE,eAC8B,WAAtCp0C,EAAQsgE,iBAAiBx4C,WAC3B9nB,EAAQsgE,gBAAgBxJ,QAAS,GAEnC92D,EAAQ82D,QAAS,EAErB,CACA,eAAAyJ,CAAgBv6D,GACd,OAAO3X,GAAiBS,SAASG,MAAQ+W,EAAMG,QAAUH,EAAME,OACjE,CACA,iBAAAs6D,CAAkBxgE,EAASygE,EAAaC,EAAUC,EAAWC,GACvDF,EAASh5F,SAAS,SACpBs4B,EAAQlK,iBAAiB4qE,GAAU16D,IACjC3uC,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,GAAIxP,KAAKsN,KAAKkC,GACdvQ,KAAMqqG,EACNzqG,MAAO0qG,EAAY56D,GACnBhmB,MAAOgmB,EAAMI,SACby6D,SAAUxpG,KAAKkpG,gBAAgBv6D,KAEjC,IAGJhG,EAAQlK,iBAAiB4qE,GAAU16D,IACjC,GAAiB,SAAb06D,EAAqB,CACvB,IAAKD,EAAYK,UAAY96D,EAAM4Y,cACjC,OAEF6hD,EAAYK,SAAU,CACxB,MAAO,GAAiB,UAAbJ,EAAsB,CAC/B,GAAID,EAAYK,QACd,OAEFL,EAAYK,SAAU,CACxB,CACKF,GAGLvpG,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,GAAIxP,KAAKsN,KAAKkC,GACdvQ,KAAMqqG,EACNzqG,MAAO0qG,EAAY56D,KAErB,GAGR,CACA,kBAAA+6D,CAAmB/gE,EAASygE,EAAa3gG,EAAOtJ,GAC9C,IAAK,MAAOkqG,EAAUC,KAAc7gG,GAChB,WAAd6gG,GAA0BtpG,KAAKsN,KAAKo3F,UAAU4E,MAC9B,UAAdA,GAAuC,SAAdA,IAC3BF,IAAgB,CACdK,SAAS,IAGbzpG,KAAKmpG,kBAAkBxgE,EAASygE,EAAaC,EAAUC,EAAWnqG,GAChD,UAAdmqG,GAA0BtpG,KAAKsN,KAAKo3F,SAASiF,KAExB,SAAdL,GAAyBtpG,KAAKsN,KAAKo3F,SAASkF,OACrD5pG,KAAKmpG,kBAAkBxgE,EAASygE,EAAa,QAAS,QAAS,MAF/DppG,KAAKmpG,kBAAkBxgE,EAASygE,EAAa,OAAQ,OAAQ,MAMrE,CACA,mBAAAS,CAAoBlhE,GAClB,MAAM5D,EAAQ/kC,KAAKsN,KAAKo4D,iBAAmB,KAC3C/8B,EAAQ79B,MAAM46D,gBAA4B,OAAV3gC,EAAiB,cAAgB3M,GAAKC,aAAa0M,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAC/G,CACA,aAAA+kE,CAAcnhE,GACZ,MAAMohE,EAAiB,CAAC,OAAQ,SAAU,UACpC,UACJC,GACEhqG,KAAKsN,KAAK28F,sBACRx+B,EAAWzrE,KAAKsN,KAAK28F,sBAAsBx+B,UAl4BV,EAm4BjC3gE,EAAQ69B,EAAQ79B,MACtB,IAAIo/F,EACJ,MACMC,EAAoBjnG,GAAKH,KAAKsnD,MAAM,GAAKnnD,GAAK,GACpD,GAAIlD,KAAKsN,KAAK88F,UAAW,CACvB,MAAMnpE,EAASl+B,KAAK25B,IAAI18B,KAAKsN,KAAKqsB,KAAK,GAAK35B,KAAKsN,KAAKqsB,KAAK,GAHzC,GAKZm0D,EAAa7sD,GADGl+B,KAAKsnD,MAAMppB,GAAU3X,EAAcmiD,KAAc,GAEvEy+B,EAAmBnnG,KAAKiG,IAAIyiE,EAAU0+B,EAAkBrc,EAAaxkE,GACvE,KAAO,CACL,MAAM2X,EAASl+B,KAAK25B,IAAI18B,KAAKsN,KAAKqsB,KAAK,GAAK35B,KAAKsN,KAAKqsB,KAAK,GARzC,GASlBuwE,EAAmBnnG,KAAKiG,IAAIyiE,EAAU0+B,EAAkBlpE,EAAS3X,GACnE,CACAxe,EAAM2gE,SAAW,QAAQy+B,mCACzBp/F,EAAMi6B,MAAQ3M,GAAKC,aAAa2xE,EAAU,GAAIA,EAAU,GAAIA,EAAU,IACtC,OAA5BhqG,KAAKsN,KAAK+8F,gBACZv/F,EAAMw/F,UAAYP,EAAe/pG,KAAKsN,KAAK+8F,eAE/C,CACA,YAAA9F,CAAa57D,EAAS4hE,GAChBA,EACF5hE,EAAQ3C,aAAa,YAAY,GAEjC2C,EAAQyO,gBAAgB,YAE1BzO,EAAQ3C,aAAa,gBAAiBukE,EACxC,EAEF,MAAMvK,WAAoCQ,GACxC,WAAAjhG,CAAYulD,GAEV/uB,MAAM+uB,EAAY,CAChB28C,aAFmB38C,EAAWg9C,aAAeh9C,EAAWx3C,KAAKyvE,eAAiBj4B,EAAWx3C,KAAKk9F,iBAAmB1lD,EAAWx3C,KAAKm9F,YAIrI,CACA,qBAAAC,CAAsB7uF,EAAMnT,EAAK7J,EAAO8rG,GACtC,MAAMzM,EAAUl+F,KAAKizC,kBACrB,IAAK,MAAMtK,KAAW3oC,KAAKkmG,mBAAmBrqF,EAAK5c,KAAM4c,EAAKrM,IACxDm5B,EAAQ69D,aACV79D,EAAQ69D,WAAW99F,GAAO7J,GAE5Bq/F,EAAQlnD,SAASrO,EAAQn5B,GAAI,CAC3B,CAACm7F,GAAe9rG,GAGtB,CACA,MAAAipC,GACE,MAAMo2D,EAAUl+F,KAAKizC,kBACfzjC,EAAKxP,KAAKsN,KAAKkC,GACrBxP,KAAK0xC,UAAU1J,UAAUv3B,IAAI,wBAC7B,IAAIk4B,EAAU,KACd,GAAI3oC,KAAK8hG,YAAa,CACpB,MAAM3D,EAAaD,EAAQ/rC,SAAS3iD,EAAI,CACtC3Q,MAAOmB,KAAKsN,KAAKm9F,aAEnB,IAAIlpD,EAAc48C,EAAWt/F,OAAS,GACtC,MAAM+rG,EAAS1M,EAAQ/rC,SAAS3iD,EAAI,CAClCq7F,UAAW7qG,KAAKsN,KAAKs9F,SACpBC,UACCD,GAAUrpD,EAAY/jD,OAASotG,IACjCrpD,EAAcA,EAAY9iD,MAAM,EAAGmsG,IAErC,IAAIE,EAAuB3M,EAAW4M,gBAAkB/qG,KAAKsN,KAAKi0C,aAAa5iD,KAAK,OAAS,KACzFmsG,GAAwB9qG,KAAKsN,KAAK09F,OACpCF,EAAuBA,EAAqB5tE,WAAW,OAAQ,KAEjE,MAAMksE,EAAc,CAClB6B,UAAW1pD,EACXwpD,eAAgBD,EAChBI,mBAAoB,KACpBC,UAAW,EACX1B,SAAS,GAEPzpG,KAAKsN,KAAK88F,WACZzhE,EAAU/9B,SAAS0G,cAAc,YACjCq3B,EAAQ4Y,YAAcupD,GAAwBvpD,EAC1CvhD,KAAKsN,KAAK89F,cACZziE,EAAQ79B,MAAMugG,UAAY,YAG5B1iE,EAAU/9B,SAAS0G,cAAc,SACjCq3B,EAAQhjC,KAAO3F,KAAKsN,KAAK4hF,SAAW,WAAa,OACjDvmD,EAAQ3C,aAAa,QAAS8kE,GAAwBvpD,GAClDvhD,KAAKsN,KAAK89F,cACZziE,EAAQ79B,MAAMwgG,UAAY,WAG1BtrG,KAAKsN,KAAKyvE,eACZp0C,EAAQ82D,QAAS,GAEnBC,GAAqBjvF,IAAIk4B,GACzBA,EAAQ3C,aAAa,kBAAmBx2B,GACxCm5B,EAAQyY,SAAWphD,KAAKsN,KAAKi+F,SAC7B5iE,EAAQ1pC,KAAOe,KAAKsN,KAAKq7F,UACzBhgE,EAAQS,SAAW,EACnB,MAAMoiE,EAASxrG,KAAKsN,KAAKm+F,YAAczrG,KAAKsN,KAAKo+F,WAC7CF,IACF7iE,EAAQwB,MAAQqhE,GAElBxrG,KAAKukG,aAAa57D,EAAS3oC,KAAKsN,KAAKgB,UACjCs8F,IACFjiE,EAAQv/B,UAAYwhG,GAEtBjiE,EAAQlK,iBAAiB,SAASkQ,IAChCuvD,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO8vC,EAAM3sC,OAAOnD,QAEtBmB,KAAK0qG,sBAAsB/hE,EAAS,QAASgG,EAAM3sC,OAAOnD,MAAO,SACjEuqG,EAAY2B,eAAiB,IAAI,IAEnCpiE,EAAQlK,iBAAiB,aAAakQ,IACpC,MAAMyjB,EAAepyD,KAAKsN,KAAKq+F,mBAAqB,GACpDhjE,EAAQ9pC,MAAQuqG,EAAY6B,UAAY74C,EACxCg3C,EAAY2B,eAAiB,IAAI,IAEnC,IAAIa,EAAej9D,IACjB,MAAM,eACJo8D,GACE3B,EACA2B,UACFp8D,EAAM3sC,OAAOnD,MAAQksG,GAEvBp8D,EAAM3sC,OAAO6pG,WAAa,CAAC,EAE7B,GAAI7rG,KAAKgiG,iBAAmBhiG,KAAK20F,aAAc,CAC7ChsD,EAAQlK,iBAAiB,SAASkQ,IAChC,GAAIy6D,EAAYK,QACd,OAEF,MAAM,OACJznG,GACE2sC,EACAy6D,EAAY6B,YACdjpG,EAAOnD,MAAQuqG,EAAY6B,WAE7B7B,EAAY8B,mBAAqBlpG,EAAOnD,MACxCuqG,EAAY+B,UAAY,EACnBnrG,KAAKsN,KAAKo3F,SAASkF,QACtBR,EAAYK,SAAU,EACxB,IAEF9gE,EAAQlK,iBAAiB,qBAAqBkmE,IAC5C3kG,KAAKgpG,yBAAyBrE,EAAQ3iG,QACtC,MAAM0iG,EAAU,CACd,KAAA7lG,CAAM8vC,GACJy6D,EAAY6B,UAAYt8D,EAAMq1D,OAAOnlG,OAAS,GAC9Cq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOuqG,EAAY6B,UAAUlrG,aAE/B4uC,EAAM3sC,OAAOnD,MAAQuqG,EAAY6B,SACnC,EACA,cAAAF,CAAep8D,GACb,MAAM,eACJo8D,GACEp8D,EAAMq1D,OACVoF,EAAY2B,eAAiBA,EACzBA,SAA2Dp8D,EAAM3sC,SAAW4I,SAAS8lC,gBACvF/B,EAAM3sC,OAAOnD,MAAQksG,GAEvB7M,EAAQlnD,SAASxnC,EAAI,CACnBu7F,kBAEJ,EACA,QAAAe,CAASn9D,GACPA,EAAM3sC,OAAO+pG,qBAAqBp9D,EAAMq1D,OAAO8H,SACjD,EACAjB,UAAWl8D,IACT,MAAM,UACJk8D,GACEl8D,EAAMq1D,QACJ,OACJhiG,GACE2sC,EACJ,GAAkB,IAAdk8D,EAEF,YADA7oG,EAAOo1C,gBAAgB,aAGzBp1C,EAAOgkC,aAAa,YAAa6kE,GACjC,IAAIhsG,EAAQuqG,EAAY6B,WACnBpsG,GAASA,EAAMrB,QAAUqtG,IAG9BhsG,EAAQA,EAAMJ,MAAM,EAAGosG,GACvB7oG,EAAOnD,MAAQuqG,EAAY6B,UAAYpsG,EACvCq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,UAEFmB,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,KACAvQ,KAAM,YACNJ,QACAmtG,YAAY,EACZb,UAAW,EACXc,SAAUjqG,EAAOkqG,eACjBC,OAAQnqG,EAAOoqG,gBAEjB,GAGNpsG,KAAKykG,0BAA0BC,EAASC,EAAQ,IAElDh8D,EAAQlK,iBAAiB,WAAWkQ,IAClCy6D,EAAY+B,UAAY,EACxB,IAAIA,GAAa,EAQjB,GAPkB,WAAdx8D,EAAMjmC,IACRyiG,EAAY,EACW,UAAdx8D,EAAMjmC,KAAoB1I,KAAKsN,KAAK88F,UAEtB,QAAdz7D,EAAMjmC,MACf0gG,EAAY+B,UAAY,GAFxBA,EAAY,GAIK,IAAfA,EACF,OAEF,MAAM,MACJtsG,GACE8vC,EAAM3sC,OACNonG,EAAY8B,qBAAuBrsG,IAGvCuqG,EAAY8B,mBAAqBrsG,EACjCuqG,EAAY6B,UAAYpsG,EACxBmB,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,KACAvQ,KAAM,YACNJ,QACAmtG,YAAY,EACZb,YACAc,SAAUt9D,EAAM3sC,OAAOkqG,eACvBC,OAAQx9D,EAAM3sC,OAAOoqG,gBAEvB,IAEJ,MAAMC,EAAgBT,EACtBA,EAAe,KACfjjE,EAAQlK,iBAAiB,QAAQkQ,IAC/B,IAAKy6D,EAAYK,UAAY96D,EAAM4Y,cACjC,OAEGvnD,KAAKsN,KAAKo3F,SAASiF,OACtBP,EAAYK,SAAU,GAExB,MAAM,MACJ5qG,GACE8vC,EAAM3sC,OACVonG,EAAY6B,UAAYpsG,EACpBuqG,EAAY8B,qBAAuBrsG,GACrCmB,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,KACAvQ,KAAM,YACNJ,QACAmtG,YAAY,EACZb,UAAW/B,EAAY+B,UACvBc,SAAUt9D,EAAM3sC,OAAOkqG,eACvBC,OAAQx9D,EAAM3sC,OAAOoqG,gBAI3BC,EAAc19D,EAAM,IAElB3uC,KAAKsN,KAAKo3F,SAAS4H,WACrB3jE,EAAQlK,iBAAiB,eAAekQ,IACtCy6D,EAAY8B,mBAAqB,KACjC,MAAM,KACJ59F,EAAI,OACJtL,GACE2sC,GACE,MACJ9vC,EAAK,eACLqtG,EAAc,aACdE,GACEpqG,EACJ,IAAIiqG,EAAWC,EACbC,EAASC,EACX,OAAQz9D,EAAM49D,WACZ,IAAK,qBACH,CACE,MAAMvkF,EAAQnpB,EAAMqjC,UAAU,EAAGgqE,GAAgBlkF,MAAM,cACnDA,IACFikF,GAAYjkF,EAAM,GAAGxqB,QAEvB,KACF,CACF,IAAK,oBACH,CACE,MAAMwqB,EAAQnpB,EAAMqjC,UAAUgqE,GAAgBlkF,MAAM,cAChDA,IACFmkF,GAAUnkF,EAAM,GAAGxqB,QAErB,KACF,CACF,IAAK,wBACC0uG,IAAmBE,IACrBH,GAAY,GAEd,MACF,IAAK,uBACCC,IAAmBE,IACrBD,GAAU,GAIhBx9D,EAAMhL,iBACN3jC,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,KACAvQ,KAAM,YACNJ,QACA2tG,OAAQl/F,GAAQ,GAChB0+F,YAAY,EACZC,WACAE,WAEF,IAGNnsG,KAAK0pG,mBAAmB/gE,EAASygE,EAAa,CAAC,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,cAAcz6D,GAASA,EAAM3sC,OAAOnD,OACjO,CAIA,GAHI+sG,GACFjjE,EAAQlK,iBAAiB,OAAQmtE,GAE/B5rG,KAAKsN,KAAK09F,KAAM,CAClB,MACMyB,GADazsG,KAAKsN,KAAKqsB,KAAK,GAAK35B,KAAKsN,KAAKqsB,KAAK,IACvBixE,EAC/BjiE,EAAQX,UAAUv3B,IAAI,QACtBk4B,EAAQ79B,MAAM4hG,cAAgB,QAAQD,wCACxC,CACF,MACE9jE,EAAU/9B,SAAS0G,cAAc,OACjCq3B,EAAQ4Y,YAAcvhD,KAAKsN,KAAKm9F,WAChC9hE,EAAQ79B,MAAM6hG,cAAgB,SAC9BhkE,EAAQ79B,MAAMC,QAAU,aACpB/K,KAAKsN,KAAKyvE,eACZp0C,EAAQ82D,QAAS,GAOrB,OAJAz/F,KAAK8pG,cAAcnhE,GACnB3oC,KAAK6pG,oBAAoBlhE,GACzB3oC,KAAK6kG,4BAA4Bl8D,GACjC3oC,KAAK0xC,UAAUp9B,OAAOq0B,GACf3oC,KAAK0xC,SACd,EAEF,MAAM6uD,WAAyCC,GAC7C,WAAAjhG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,eAAgB38C,EAAWx3C,KAAKyvE,cAEpC,EAEF,MAAMqjB,WAAwCI,GAC5C,WAAAjhG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,aAAc38C,EAAWg9C,aAE7B,CACA,MAAAh6D,GACE,MAAMo2D,EAAUl+F,KAAKizC,kBACf3lC,EAAOtN,KAAKsN,KACZkC,EAAKlC,EAAKkC,GAChB,IAAI3Q,EAAQq/F,EAAQ/rC,SAAS3iD,EAAI,CAC/B3Q,MAAOyO,EAAKi5F,cAAgBj5F,EAAKm9F,aAChC5rG,MACkB,iBAAVA,IACTA,EAAkB,QAAVA,EACRq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,WAGJmB,KAAK0xC,UAAU1J,UAAUv3B,IAAI,yBAA0B,YACvD,MAAMk4B,EAAU/9B,SAAS0G,cAAc,SAmDvC,OAlDAouF,GAAqBjvF,IAAIk4B,GACzBA,EAAQ3C,aAAa,kBAAmBx2B,GACxCm5B,EAAQyY,SAAW9zC,EAAKi+F,SACxBvrG,KAAKukG,aAAa57D,EAAS3oC,KAAKsN,KAAKgB,UACrCq6B,EAAQhjC,KAAO,WACfgjC,EAAQ1pC,KAAOqO,EAAKq7F,UAChB9pG,GACF8pC,EAAQ3C,aAAa,WAAW,GAElC2C,EAAQ3C,aAAa,cAAe14B,EAAKi5F,aACzC59D,EAAQS,SAAW,EACnBT,EAAQlK,iBAAiB,UAAUkQ,IACjC,MAAM,KACJ1vC,EAAI,QACJq/F,GACE3vD,EAAM3sC,OACV,IAAK,MAAM4qG,KAAY5sG,KAAKkmG,mBAAmBjnG,EAAMuQ,GAAK,CACxD,MAAMq9F,EAAavO,GAAWsO,EAASrG,cAAgBj5F,EAAKi5F,YACxDqG,EAASpG,aACXoG,EAASpG,WAAWlI,QAAUuO,GAEhC3O,EAAQlnD,SAAS41D,EAASp9F,GAAI,CAC5B3Q,MAAOguG,GAEX,CACA3O,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOy/F,GACP,IAEJ31D,EAAQlK,iBAAiB,aAAakQ,IACpC,MAAMyjB,EAAe9kD,EAAKq+F,mBAAqB,MAC/Ch9D,EAAM3sC,OAAOs8F,QAAUlsC,IAAiB9kD,EAAKi5F,WAAW,IAEtDvmG,KAAKgiG,iBAAmBhiG,KAAK20F,eAC/BhsD,EAAQlK,iBAAiB,qBAAqBkmE,IAC5C,MAAMD,EAAU,CACd,KAAA7lG,CAAM8vC,GACJA,EAAM3sC,OAAOs8F,QAAiC,QAAvB3vD,EAAMq1D,OAAOnlG,MACpCq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO8vC,EAAM3sC,OAAOs8F,SAExB,GAEFt+F,KAAKykG,0BAA0BC,EAASC,EAAQ,IAElD3kG,KAAK0pG,mBAAmB/gE,EAAS,KAAM,CAAC,CAAC,SAAU,YAAa,CAAC,SAAU,UAAW,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,cAAcgG,GAASA,EAAM3sC,OAAOs8F,WAExQt+F,KAAK6pG,oBAAoBlhE,GACzB3oC,KAAK6kG,4BAA4Bl8D,GACjC3oC,KAAK0xC,UAAUp9B,OAAOq0B,GACf3oC,KAAK0xC,SACd,EAEF,MAAMwuD,WAA2CM,GAC/C,WAAAjhG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,aAAc38C,EAAWg9C,aAE7B,CACA,MAAAh6D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,yBAA0B,eACvD,MAAMytF,EAAUl+F,KAAKizC,kBACf3lC,EAAOtN,KAAKsN,KACZkC,EAAKlC,EAAKkC,GAChB,IAAI3Q,EAAQq/F,EAAQ/rC,SAAS3iD,EAAI,CAC/B3Q,MAAOyO,EAAKm9F,aAAen9F,EAAKw/F,cAC/BjuG,MAOH,GANqB,iBAAVA,IACTA,EAAQA,IAAUyO,EAAKw/F,YACvB5O,EAAQlnD,SAASxnC,EAAI,CACnB3Q,WAGAA,EACF,IAAK,MAAMkuG,KAAS/sG,KAAKkmG,mBAAmB54F,EAAKq7F,UAAWn5F,GAC1D0uF,EAAQlnD,SAAS+1D,EAAMv9F,GAAI,CACzB3Q,OAAO,IAIb,MAAM8pC,EAAU/9B,SAAS0G,cAAc,SA6BvC,GA5BAouF,GAAqBjvF,IAAIk4B,GACzBA,EAAQ3C,aAAa,kBAAmBx2B,GACxCm5B,EAAQyY,SAAW9zC,EAAKi+F,SACxBvrG,KAAKukG,aAAa57D,EAAS3oC,KAAKsN,KAAKgB,UACrCq6B,EAAQhjC,KAAO,QACfgjC,EAAQ1pC,KAAOqO,EAAKq7F,UAChB9pG,GACF8pC,EAAQ3C,aAAa,WAAW,GAElC2C,EAAQS,SAAW,EACnBT,EAAQlK,iBAAiB,UAAUkQ,IACjC,MAAM,KACJ1vC,EAAI,QACJq/F,GACE3vD,EAAM3sC,OACV,IAAK,MAAM+qG,KAAS/sG,KAAKkmG,mBAAmBjnG,EAAMuQ,GAChD0uF,EAAQlnD,SAAS+1D,EAAMv9F,GAAI,CACzB3Q,OAAO,IAGXq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOy/F,GACP,IAEJ31D,EAAQlK,iBAAiB,aAAakQ,IACpC,MAAMyjB,EAAe9kD,EAAKq+F,kBAC1Bh9D,EAAM3sC,OAAOs8F,QAAUlsC,SAAuDA,IAAiB9kD,EAAKw/F,WAAW,IAE7G9sG,KAAKgiG,iBAAmBhiG,KAAK20F,aAAc,CAC7C,MAAMqY,EAAiB1/F,EAAKw/F,YAC5BnkE,EAAQlK,iBAAiB,qBAAqBkmE,IAC5C,MAAMD,EAAU,CACd7lG,MAAO8vC,IACL,MAAM2vD,EAAU0O,IAAmBr+D,EAAMq1D,OAAOnlG,MAChD,IAAK,MAAMkuG,KAAS/sG,KAAKkmG,mBAAmBv3D,EAAM3sC,OAAO/C,MAAO,CAC9D,MAAM4tG,EAAavO,GAAWyO,EAAMv9F,KAAOA,EACvCu9F,EAAMvG,aACRuG,EAAMvG,WAAWlI,QAAUuO,GAE7B3O,EAAQlnD,SAAS+1D,EAAMv9F,GAAI,CACzB3Q,MAAOguG,GAEX,IAGJ7sG,KAAKykG,0BAA0BC,EAASC,EAAQ,IAElD3kG,KAAK0pG,mBAAmB/gE,EAAS,KAAM,CAAC,CAAC,SAAU,YAAa,CAAC,SAAU,UAAW,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,cAAcgG,GAASA,EAAM3sC,OAAOs8F,SACxQ,CAIA,OAHAt+F,KAAK6pG,oBAAoBlhE,GACzB3oC,KAAK6kG,4BAA4Bl8D,GACjC3oC,KAAK0xC,UAAUp9B,OAAOq0B,GACf3oC,KAAK0xC,SACd,EAEF,MAAM2uD,WAA0CR,GAC9C,WAAAtgG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB48C,aAAc58C,EAAWx3C,KAAKk9F,eAElC,CACA,MAAA1iE,GACE,MAAM4J,EAAY3b,MAAM+R,SACxB4J,EAAU1J,UAAUv3B,IAAI,yBAA0B,cAClD,MAAMw8F,EAAcv7D,EAAUge,UAO9B,OANI1vD,KAAKgiG,iBAAmBhiG,KAAK20F,cAAgBsY,IAC/CjtG,KAAK6kG,4BAA4BoI,GACjCA,EAAYxuE,iBAAiB,qBAAqBkmE,IAChD3kG,KAAKykG,0BAA0B,CAAC,EAAGE,EAAQ,KAGxCjzD,CACT,EAEF,MAAM4uD,WAAsCE,GAC1C,WAAAjhG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,aAAc38C,EAAWg9C,aAE7B,CACA,MAAAh6D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,0BAC7B,MAAMytF,EAAUl+F,KAAKizC,kBACfzjC,EAAKxP,KAAKsN,KAAKkC,GACf2uF,EAAaD,EAAQ/rC,SAAS3iD,EAAI,CACtC3Q,MAAOmB,KAAKsN,KAAKm9F,aAEbyC,EAAgBtiG,SAAS0G,cAAc,UAC7CouF,GAAqBjvF,IAAIy8F,GACzBA,EAAclnE,aAAa,kBAAmBx2B,GAC9C09F,EAAc9rD,SAAWphD,KAAKsN,KAAKi+F,SACnCvrG,KAAKukG,aAAa2I,EAAeltG,KAAKsN,KAAKgB,UAC3C4+F,EAAcjuG,KAAOe,KAAKsN,KAAKq7F,UAC/BuE,EAAc9jE,SAAW,EACzB,IAAI+jE,EAAkBntG,KAAKsN,KAAK8/F,OAASptG,KAAKsN,KAAKpO,QAAQ1B,OAAS,EAC/DwC,KAAKsN,KAAK8/F,QACbF,EAAcr9F,KAAO7P,KAAKsN,KAAKpO,QAAQ1B,OACnCwC,KAAKsN,KAAK+/F,cACZH,EAAcI,UAAW,IAG7BJ,EAAczuE,iBAAiB,aAAakQ,IAC1C,MAAMyjB,EAAepyD,KAAKsN,KAAKq+F,kBAC/B,IAAK,MAAMpN,KAAU2O,EAAchuG,QACjCq/F,EAAOC,SAAWD,EAAO1/F,QAAUuzD,CACrC,IAEF,IAAK,MAAMmsC,KAAUv+F,KAAKsN,KAAKpO,QAAS,CACtC,MAAMquG,EAAgB3iG,SAAS0G,cAAc,UAC7Ci8F,EAAchsD,YAAcg9C,EAAOiP,aACnCD,EAAc1uG,MAAQ0/F,EAAOgI,YACzBpI,EAAWt/F,MAAMwR,SAASkuF,EAAOgI,eACnCgH,EAAcvnE,aAAa,YAAY,GACvCmnE,GAAkB,GAEpBD,EAAc54F,OAAOi5F,EACvB,CACA,IAAIE,EAAmB,KACvB,GAAIN,EAAiB,CACnB,MAAMO,EAAoB9iG,SAAS0G,cAAc,UACjDo8F,EAAkB7uG,MAAQ,IAC1B6uG,EAAkB1nE,aAAa,UAAU,GACzC0nE,EAAkB1nE,aAAa,YAAY,GAC3CknE,EAAc1jD,QAAQkkD,GACtBD,EAAmB,KACjBC,EAAkBz9F,SAClBi9F,EAAcz0C,oBAAoB,QAASg1C,GAC3CA,EAAmB,IAAI,EAEzBP,EAAczuE,iBAAiB,QAASgvE,EAC1C,CACA,MAAMt7C,EAAWw7C,IACf,MAAM1uG,EAAO0uG,EAAW,QAAU,eAC5B,QACJzuG,EAAO,SACPouG,GACEJ,EACJ,OAAKI,EAGEx+F,MAAMrP,UAAUgM,OAAO5O,KAAKqC,GAASq/F,GAAUA,EAAOC,WAAUr2F,KAAIo2F,GAAUA,EAAOt/F,MAFxD,IAA3BC,EAAQu/F,cAAuB,KAAOv/F,EAAQA,EAAQu/F,eAAex/F,EAEoB,EAEpG,IAAI2uG,EAAiBz7C,GAAS,GAC9B,MAAM07C,EAAWl/D,IACf,MAAMzvC,EAAUyvC,EAAM3sC,OAAO9C,QAC7B,OAAO4P,MAAMrP,UAAU0I,IAAItL,KAAKqC,GAASq/F,IAAU,CACjDiP,aAAcjP,EAAOh9C,YACrBglD,YAAahI,EAAO1/F,SACnB,EAiJL,OA/IImB,KAAKgiG,iBAAmBhiG,KAAK20F,cAC/BuY,EAAczuE,iBAAiB,qBAAqBkmE,IAClD,MAAMD,EAAU,CACd,KAAA7lG,CAAM8vC,GACJ8+D,MACA,MAAM5uG,EAAQ8vC,EAAMq1D,OAAOnlG,MACrBkgB,EAAS,IAAIvM,IAAI1D,MAAMwD,QAAQzT,GAASA,EAAQ,CAACA,IACvD,IAAK,MAAM0/F,KAAU2O,EAAchuG,QACjCq/F,EAAOC,SAAWz/E,EAAOpa,IAAI45F,EAAO1/F,OAEtCq/F,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,KAElBy7C,EAAiBz7C,GAAS,EAC5B,EACA,iBAAA27C,CAAkBn/D,GAChBu+D,EAAcI,UAAW,CAC3B,EACA,MAAAr9F,CAAO0+B,GACL,MAAMzvC,EAAUguG,EAAchuG,QACxBiN,EAAQwiC,EAAMq1D,OAAO/zF,OAG3B,GAFA/Q,EAAQiN,GAAOqyF,UAAW,EAC1B0O,EAAcj9F,OAAO9D,GACjBjN,EAAQ1B,OAAS,EAAG,EAEX,IADDsR,MAAMrP,UAAUsuG,UAAUlxG,KAAKqC,GAASq/F,GAAUA,EAAOC,aAEjEt/F,EAAQ,GAAGs/F,UAAW,EAE1B,CACAN,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,GAChB9Z,MAAOw1D,EAASl/D,KAElBi/D,EAAiBz7C,GAAS,EAC5B,EACA,KAAA3yC,CAAMmvB,GACJ,KAAgC,IAAzBu+D,EAAc1vG,QACnB0vG,EAAcj9F,OAAO,GAEvBiuF,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO,KACPw5C,MAAO,KAETu1D,EAAiBz7C,GAAS,EAC5B,EACA,MAAA4D,CAAOpnB,GACL,MAAM,MACJxiC,EAAK,aACLqhG,EAAY,YACZjH,GACE53D,EAAMq1D,OAAOjuC,OACXi4C,EAAcd,EAAc99C,SAASjjD,GACrCohG,EAAgB3iG,SAAS0G,cAAc,UAC7Ci8F,EAAchsD,YAAcisD,EAC5BD,EAAc1uG,MAAQ0nG,EAClByH,EACFA,EAAY5hD,OAAOmhD,GAEnBL,EAAc54F,OAAOi5F,GAEvBrP,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,GAChB9Z,MAAOw1D,EAASl/D,KAElBi/D,EAAiBz7C,GAAS,EAC5B,EACA,KAAA9Z,CAAM1J,GACJ,MAAM,MACJ0J,GACE1J,EAAMq1D,OACV,KAAgC,IAAzBkJ,EAAc1vG,QACnB0vG,EAAcj9F,OAAO,GAEvB,IAAK,MAAMyB,KAAQ2mC,EAAO,CACxB,MAAM,aACJm1D,EAAY,YACZjH,GACE70F,EACE67F,EAAgB3iG,SAAS0G,cAAc,UAC7Ci8F,EAAchsD,YAAcisD,EAC5BD,EAAc1uG,MAAQ0nG,EACtB2G,EAAc54F,OAAOi5F,EACvB,CACIL,EAAchuG,QAAQ1B,OAAS,IACjC0vG,EAAchuG,QAAQ,GAAGs/F,UAAW,GAEtCN,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,GAChB9Z,MAAOw1D,EAASl/D,KAElBi/D,EAAiBz7C,GAAS,EAC5B,EACA,OAAA87C,CAAQt/D,GACN,MAAMs/D,EAAU,IAAIz7F,IAAIm8B,EAAMq1D,OAAOiK,SACrC,IAAK,MAAM1P,KAAU5vD,EAAM3sC,OAAO9C,QAChCq/F,EAAOC,SAAWyP,EAAQtpG,IAAI45F,EAAOpyF,OAEvC+xF,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,KAElBy7C,EAAiBz7C,GAAS,EAC5B,EACA,QAAA+7C,CAASv/D,GACPA,EAAM3sC,OAAOo/C,UAAYzS,EAAMq1D,OAAOkK,QACxC,GAEFluG,KAAKykG,0BAA0BC,EAASC,EAAQ,IAElDuI,EAAczuE,iBAAiB,SAASkQ,IACtC,MAAM43D,EAAcp0C,GAAS,GACvBq6C,EAASr6C,GAAS,GACxB+rC,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAO0nG,IAET53D,EAAMhL,iBACN3jC,KAAK2+F,YAAY7sD,UAAU+C,SAAS,yBAA0B,CAC5Dh1C,OAAQG,KACRgkG,OAAQ,CACNx0F,KACAvQ,KAAM,YACNJ,MAAO+uG,EACPpB,SACA2B,SAAU5H,EACVyF,YAAY,EACZb,UAAW,EACXiD,SAAS,IAEX,IAEJpuG,KAAK0pG,mBAAmBwD,EAAe,KAAM,CAAC,CAAC,QAAS,SAAU,CAAC,OAAQ,QAAS,CAAC,YAAa,cAAe,CAAC,aAAc,eAAgB,CAAC,aAAc,cAAe,CAAC,UAAW,YAAa,CAAC,QAAS,UAAW,CAAC,QAAS,cAAcv+D,GAASA,EAAM3sC,OAAOnD,SAE1QquG,EAAczuE,iBAAiB,SAAS,SAAUkQ,GAChDuvD,EAAQlnD,SAASxnC,EAAI,CACnB3Q,MAAOszD,GAAS,IAEpB,IAEEnyD,KAAKsN,KAAK8/F,OACZptG,KAAK8pG,cAAcoD,GAErBltG,KAAK6pG,oBAAoBqD,GACzBltG,KAAK6kG,4BAA4BqI,GACjCltG,KAAK0xC,UAAUp9B,OAAO44F,GACfltG,KAAK0xC,SACd,EAEF,MAAM+uD,WAA+Be,GACnC,WAAAjiG,CAAYulD,GACV,MAAM,KACJx3C,EAAI,SACJ0Y,GACE8+B,EACJ/uB,MAAM+uB,EAAY,CAChB28C,aAAcD,GAAkBa,cAAc/0F,KAEhDtN,KAAKgmB,SAAWA,EAChBhmB,KAAK4iG,MAAQ,IACf,CACA,MAAA96D,GACE,MAAM,UACJ4J,GACE1xC,KACJ0xC,EAAU1J,UAAUv3B,IAAI,mBACxBihC,EAAU8zD,KAAO,UACjB,MAAM5C,EAAQ5iG,KAAK4iG,MAAQ,IAAIyL,GAAa,CAC1C38D,UAAW1xC,KAAK0xC,UAChB3M,MAAO/kC,KAAKsN,KAAKy3B,MACjBghE,SAAU/lG,KAAKsN,KAAKy4F,SACpBC,iBAAkBhmG,KAAKsN,KAAK04F,iBAC5B1D,YAAatiG,KAAKsN,KAAKg1F,YACvBC,SAAUviG,KAAKsN,KAAKi1F,SACpB5oE,KAAM35B,KAAKsN,KAAKqsB,KAChBssE,WAAYjmG,KAAKsN,KAAK24F,YAAc,KACpCr7D,OAAQ5qC,KAAK4qC,OACb5kB,SAAUhmB,KAAKgmB,SACf7a,KAAMnL,KAAKsN,KAAKnC,OAEZmjG,EAAa,GACnB,IAAK,MAAM3lE,KAAW3oC,KAAKgmB,SACzB2iB,EAAQi6D,MAAQA,EAChBj6D,EAAQ+I,UAAU68D,aAAe,SACjCD,EAAW/lG,KAAKogC,EAAQr7B,KAAKkC,IAC7Bm5B,EAAQk+D,mBAGV,OADA7mG,KAAK0xC,UAAU1L,aAAa,gBAAiBsoE,EAAWnmG,KAAIqH,GAAM,GAAGkuB,KAAmBluB,MAAM7Q,KAAK,MAC5FqB,KAAK0xC,SACd,EAEF,MAAM28D,GACJ,IAAgBruG,MAAK,GAASsC,KAAKtC,MACnC,IAAaA,MAAK,GAAMsC,KAAKtC,MAC7B,IAAaA,MAAK,GAAMsC,KAAKtC,MAC7B,IAAeA,MAAK,GAAQsC,KAAKtC,MACjC,IAAS,KACT,IAAa,KACb,IAAe,KACf,IAAW,KACX,IAAY,KACZ,IAAU,KACV,IAAc,KACd,KAAU,EACV,IAAS,KACT,GAAY,KACZ,IAAQ,KACR,IAAY,KACZ,IAAY,KACZ,IAAW,KACX,KAAc,EACd,WAAAT,EAAY,UACVmyC,EAAS,MACT3M,EAAK,SACL/e,EAAQ,SACR+/E,EAAQ,iBACRC,EAAgB,YAChB1D,EAAW,SACXC,EAAQ,OACR33D,EAAM,KACNjR,EAAI,WACJssE,EAAU,KACV96F,IAEAnL,MAAK,GAAa0xC,EAClB1xC,MAAK,GAAY+lG,EACjB/lG,MAAK,GAAesiG,EACpBtiG,MAAK,GAAYuiG,EACjBviG,MAAK,GAAU4qC,EACf5qC,MAAK,GAAS+kC,EACd/kC,MAAK,GAAQ25B,EACb35B,MAAK,GAAcimG,EACnBjmG,MAAK,GAAYgmB,EACjBhmB,MAAK,GAAW8jC,GAAcC,aAAaiiE,GAC3ChmG,KAAKwuG,QAAUxoF,EAAS5jB,SAAQgO,GAAKA,EAAEw2F,8BACvC,IAAK,MAAMj+D,KAAW3oC,KAAKwuG,QACzB7lE,EAAQlK,iBAAiB,QAASz+B,MAAK,IACvC2oC,EAAQlK,iBAAiB,aAAcz+B,MAAK,IAC5C2oC,EAAQlK,iBAAiB,aAAcz+B,MAAK,IAC5C2oC,EAAQX,UAAUv3B,IAAI,oBAExB,IAAK,MAAMk4B,KAAW3iB,EACpB2iB,EAAQ+I,WAAWjT,iBAAiB,UAAWz+B,MAAK,IAEtDA,MAAK,GAAWy/F,QAAS,EACrBt0F,GACFnL,MAAK,IAET,CACA,MAAA8nC,GACE,GAAI9nC,MAAK,GACP,OAEF,MAAM4iG,EAAQ5iG,MAAK,GAAS4K,SAAS0G,cAAc,OAEnD,GADAsxF,EAAMx6D,UAAY,QACdpoC,MAAK,GAAQ,CACf,MAAMyuG,EAAY7L,EAAM93F,MAAM4jG,aAAet2E,GAAKC,gBAAgBr4B,MAAK,IACvE4iG,EAAM93F,MAAM46D,gBAAkB,sBAAsB+oC,eACtD,CACA,MAAME,EAAS/jG,SAAS0G,cAAc,QACtCq9F,EAAOvmE,UAAY,SACnB,MAAM+B,EAAQv/B,SAAS0G,cAAc,MAOrC,GANAq9F,EAAOr6F,OAAO61B,KAEZgjD,IAAKhjD,EAAMgjD,IACXr2D,IAAKqT,EAAMoX,aACTvhD,MAAK,IACT4iG,EAAMtuF,OAAOq6F,GACT3uG,MAAK,GAAU,CACjB,MAAMgmG,EAAmBp7F,SAAS0G,cAAc,QAChD00F,EAAiBh+D,UAAUv3B,IAAI,aAC/Bu1F,EAAiBhgE,aAAa,eAAgB,qCAC9CggE,EAAiBhgE,aAAa,iBAAkBjkB,KAAKo1B,UAAU,CAC7Dy3D,QAAS5uG,MAAK,GAASqS,aAEzB2zF,EAAiB6I,SAAW7uG,MAAK,GAAS8uG,cAC1CH,EAAOr6F,OAAO0xF,EAChB,CACA,MAAMv8F,EAAOzJ,MAAK,GAClB,GAAIyJ,EACFu0F,GAASl2D,OAAO,CACdm3D,QAASx1F,EACTgrE,OAAQ,WACRlvC,IAAKq9D,IAEPA,EAAMlzC,UAAU1nB,UAAUv3B,IAAI,WAAY,oBACrC,CACL,MAAMs+F,EAAW/uG,KAAKgvG,gBAAgBhvG,MAAK,IAC3C4iG,EAAMtuF,OAAOy6F,EACf,CACA/uG,MAAK,GAAWsU,OAAOsuF,EACzB,CACA,MAAI,GACF,MAAML,EAAWviG,MAAK,GAChBsiG,EAActiG,MAAK,GACzB,OAAIuiG,GAAUzrE,KAASwrE,GAAaxrE,KAAOwrE,EAAYxrE,MAAQyrE,EAASzrE,IAGjE,KAFE92B,MAAK,GAAUyJ,MAAQ,IAGlC,CACA,MAAI,GACF,OAAOzJ,MAAK,IAAO6kC,YAAY/5B,OAAO2gE,UAAY,CACpD,CACA,MAAI,GACF,OAAOzrE,MAAK,IAAO6kC,YAAY/5B,OAAOi6B,OAAS,IACjD,CACA,IAAkB3gB,GAChB,MAAM6qF,EAAa,GACbC,EAAe,CACnBp4E,IAAK1S,EACL3a,KAAM,CACJxK,KAAM,MACN4lC,WAAY,CACVsoD,IAAK,QAEP/9B,SAAU,CAAC,CACTnwD,KAAM,IACNmwD,SAAU6/C,MAIVE,EAAiB,CACrBrkG,MAAO,CACLi6B,MAAO/kC,MAAK,GACZyrE,SAAUzrE,MAAK,GAAY,QAAQA,MAAK,oCAA6C,KAGzF,IAAK,MAAMovG,KAAQhrF,EAAKrlB,MAAM,MAC5BkwG,EAAW1mG,KAAK,CACdtJ,KAAM,OACNJ,MAAOuwG,EACPvqE,WAAYsqE,IAGhB,OAAOD,CACT,CACA,eAAAF,EAAgB,IACdl4E,EAAG,IACHq2D,IAEA,MAAMt0D,EAAIjuB,SAAS0G,cAAc,KACjCunB,EAAEmP,UAAUv3B,IAAI,gBAChBooB,EAAEs0D,IAAMA,EACR,MAAMkiB,EAAQv4E,EAAI/3B,MAAM,gBACxB,IAAK,IAAIgH,EAAI,EAAGi8B,EAAKqtE,EAAM7xG,OAAQuI,EAAIi8B,IAAMj8B,EAAG,CAC9C,MAAMqpG,EAAOC,EAAMtpG,GACnB8yB,EAAEvkB,OAAO1J,SAASy0F,eAAe+P,IAC7BrpG,EAAIi8B,EAAK,GACXnJ,EAAEvkB,OAAO1J,SAAS0G,cAAc,MAEpC,CACA,OAAOunB,CACT,CACA,IAAS8V,GACHA,EAAMC,QAAUD,EAAMI,UAAYJ,EAAME,SAAWF,EAAMG,UAG3C,UAAdH,EAAMjmC,KAAiC,WAAdimC,EAAMjmC,KAAoB1I,MAAK,KAC1DA,MAAK,IAET,CACA,YAAA2iG,EAAa,KACXhpE,EAAI,aACJu1E,IAEAlvG,MAAK,KAAa,CAChBsiG,YAAatiG,MAAK,GAClBuiG,SAAUviG,MAAK,IAEb25B,IACF35B,MAAK,EAAY,MAEfkvG,IACFlvG,MAAK,GAAYA,MAAK,GAAkBkvG,GACxClvG,MAAK,GAAe,MAEtBA,MAAK,IAAQiQ,SACbjQ,MAAK,GAAS,IAChB,CACA,WAAA6iG,GACO7iG,MAAK,OAIRsiG,YAAatiG,MAAK,GAClBuiG,SAAUviG,MAAK,IACbA,MAAK,IACTA,MAAK,GAAW,KAChBA,MAAK,IAAQiQ,SACbjQ,MAAK,GAAS,KACdA,MAAK,EAAY,KACnB,CACA,MACE,GAAuB,OAAnBA,MAAK,EACP,OAEF,MACEg4D,MAAM,KACJmnB,GAEF35C,UACEtE,SAAS,UACPE,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,KAGFvhC,MAAK,GACT,IAAIsvG,IAAkBtvG,MAAK,GACvB25B,EAAO21E,EAAgBtvG,MAAK,GAAcA,MAAK,GACnD,IAAK,MAAM2oC,KAAW3oC,MAAK,GACzB,IAAK25B,GAAoD,OAA5CvB,GAAKgD,UAAUuN,EAAQr7B,KAAKqsB,KAAMA,GAAgB,CAC7DA,EAAOgP,EAAQr7B,KAAKqsB,KACpB21E,GAAgB,EAChB,KACF,CAEF,MAAMC,EAAiBn3E,GAAK+C,cAAc,CAACxB,EAAK,GAAIwlD,EAAK,GAAKxlD,EAAK,GAAKwlD,EAAK,GAAIxlD,EAAK,GAAIwlD,EAAK,GAAKxlD,EAAK,GAAKwlD,EAAK,KAE7GrgC,EAAcwwD,EAAgB31E,EAAK,GAAKA,EAAK,GADT,EACkD,EACtF61E,EAAYD,EAAe,GAAKzwD,EAChC2wD,EAAWF,EAAe,GAChCvvG,MAAK,EAAY,CAAC,KAAOwvG,EAAYluE,GAASF,EAAW,KAAOquE,EAAWluE,GAASF,GACpF,MAAM,MACJv2B,GACE9K,MAAK,GACT8K,EAAM09C,KAAO,GAAGxoD,MAAK,EAAU,MAC/B8K,EAAM29B,IAAM,GAAGzoC,MAAK,EAAU,KAChC,CACA,MACEA,MAAK,IAAWA,MAAK,GACjBA,MAAK,IACPA,MAAK,KACLA,MAAK,GAAWy+B,iBAAiB,QAASz+B,MAAK,IAC/CA,MAAK,GAAWy+B,iBAAiB,UAAWz+B,MAAK,MAEjDA,MAAK,KACLA,MAAK,GAAWy4D,oBAAoB,QAASz4D,MAAK,IAClDA,MAAK,GAAWy4D,oBAAoB,UAAWz4D,MAAK,IAExD,CACA,MACOA,MAAK,IACRA,KAAK8nC,SAEF9nC,KAAK29E,UAIC39E,MAAK,IACdA,MAAK,GAAWgoC,UAAUv3B,IAAI,YAJ9BzQ,MAAK,KACLA,MAAK,GAAWy/F,QAAS,EACzBz/F,MAAK,GAAW8K,MAAMo8C,OAASn+C,SAAS/I,MAAK,GAAW8K,MAAMo8C,QAAU,IAI5E,CACA,MACElnD,MAAK,GAAWgoC,UAAU/3B,OAAO,YAC7BjQ,MAAK,IAAYA,KAAK29E,YAG1B39E,MAAK,GAAWy/F,QAAS,EACzBz/F,MAAK,GAAW8K,MAAMo8C,OAASn+C,SAAS/I,MAAK,GAAW8K,MAAMo8C,QAAU,IAC1E,CACA,SAAAy/C,GACE3mG,MAAK,GAAcA,KAAK29E,UACnB39E,MAAK,KAGVA,MAAK,GAAWy/F,QAAS,EAC3B,CACA,SAAAiH,GACO1mG,MAAK,KAGLA,MAAK,IACRA,MAAK,KAEPA,MAAK,IAAc,EACnBA,MAAK,GAAWy/F,QAAS,EAC3B,CACA,aAAI9hB,GACF,OAAkC,IAA3B39E,MAAK,GAAWy/F,MACzB,EAEF,MAAMiB,WAAkCc,GACtC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,IAEhB1hG,KAAKuhD,YAAcuD,EAAWx3C,KAAKi0C,YACnCvhD,KAAK0vG,aAAe5qD,EAAWx3C,KAAKoiG,aACpC1vG,KAAKgnG,qBAAuBl9E,EAAqBE,QACnD,CACA,MAAA8d,GAEE,GADA9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,sBACzBzQ,KAAKuhD,YAAa,CACpB,MAAMv3C,EAAUY,SAAS0G,cAAc,OACvCtH,EAAQg+B,UAAUv3B,IAAI,yBACtBzG,EAAQg8B,aAAa,OAAQ,WAC7B,IAAK,MAAMopE,KAAQpvG,KAAKuhD,YAAa,CACnC,MAAMouD,EAAW/kG,SAAS0G,cAAc,QACxCq+F,EAASpuD,YAAc6tD,EACvBplG,EAAQsK,OAAOq7F,EACjB,CACA3vG,KAAK0xC,UAAUp9B,OAAOtK,EACxB,CAKA,OAJKhK,KAAKsN,KAAKyhD,UAAY/uD,KAAK0iG,cAC9B1iG,KAAK8lG,eAEP9lG,KAAK+mG,qBACE/mG,KAAK0xC,SACd,EAEF,MAAMivD,WAA8Ba,GAClC,IAAQ,KACR,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,GAElB,CACA,MAAA55D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,kBAC7B,MAAM,KACJnD,EAAI,MACJ0zB,EAAK,OACLC,GACEjhC,KACEq9D,EAAMr9D,KAAK+hG,WAAW32F,OAAO41B,EAAOC,GAAQ,GAC5CmuE,EAAOpvG,MAAK,GAAQA,KAAK+hG,WAAWzwF,cAAc,YAaxD,OAZA89F,EAAKppE,aAAa,KAAM14B,EAAKqsB,KAAK,GAAKrsB,EAAKsiG,gBAAgB,IAC5DR,EAAKppE,aAAa,KAAM14B,EAAKqsB,KAAK,GAAKrsB,EAAKsiG,gBAAgB,IAC5DR,EAAKppE,aAAa,KAAM14B,EAAKqsB,KAAK,GAAKrsB,EAAKsiG,gBAAgB,IAC5DR,EAAKppE,aAAa,KAAM14B,EAAKqsB,KAAK,GAAKrsB,EAAKsiG,gBAAgB,IAC5DR,EAAKppE,aAAa,eAAgB14B,EAAK41F,YAAYliE,OAAS,GAC5DouE,EAAKppE,aAAa,SAAU,eAC5BopE,EAAKppE,aAAa,OAAQ,eAC1Bq3B,EAAI/oD,OAAO86F,GACXpvG,KAAK0xC,UAAUp9B,OAAO+oD,IACjB/vD,EAAKyhD,UAAY/uD,KAAK0iG,cACzB1iG,KAAK8lG,eAEA9lG,KAAK0xC,SACd,CACA,yBAAAk1D,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,EAEF,MAAMmwF,WAAgCY,GACpC,IAAU,KACV,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,GAElB,CACA,MAAA55D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,oBAC7B,MAAM,KACJnD,EAAI,MACJ0zB,EAAK,OACLC,GACEjhC,KACEq9D,EAAMr9D,KAAK+hG,WAAW32F,OAAO41B,EAAOC,GAAQ,GAC5CkiE,EAAc71F,EAAK41F,YAAYliE,MAC/B6uE,EAAS7vG,MAAK,GAAUA,KAAK+hG,WAAWzwF,cAAc,YAa5D,OAZAu+F,EAAO7pE,aAAa,IAAKm9D,EAAc,GACvC0M,EAAO7pE,aAAa,IAAKm9D,EAAc,GACvC0M,EAAO7pE,aAAa,QAAShF,EAAQmiE,GACrC0M,EAAO7pE,aAAa,SAAU/E,EAASkiE,GACvC0M,EAAO7pE,aAAa,eAAgBm9D,GAAe,GACnD0M,EAAO7pE,aAAa,SAAU,eAC9B6pE,EAAO7pE,aAAa,OAAQ,eAC5Bq3B,EAAI/oD,OAAOu7F,GACX7vG,KAAK0xC,UAAUp9B,OAAO+oD,IACjB/vD,EAAKyhD,UAAY/uD,KAAK0iG,cACzB1iG,KAAK8lG,eAEA9lG,KAAK0xC,SACd,CACA,yBAAAk1D,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,EAEF,MAAMowF,WAAgCW,GACpC,IAAU,KACV,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,GAElB,CACA,MAAA55D,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,oBAC7B,MAAM,KACJnD,EAAI,MACJ0zB,EAAK,OACLC,GACEjhC,KACEq9D,EAAMr9D,KAAK+hG,WAAW32F,OAAO41B,EAAOC,GAAQ,GAC5CkiE,EAAc71F,EAAK41F,YAAYliE,MAC/B8uE,EAAS9vG,MAAK,GAAUA,KAAK+hG,WAAWzwF,cAAc,eAa5D,OAZAw+F,EAAO9pE,aAAa,KAAMhF,EAAQ,GAClC8uE,EAAO9pE,aAAa,KAAM/E,EAAS,GACnC6uE,EAAO9pE,aAAa,KAAMhF,EAAQ,EAAImiE,EAAc,GACpD2M,EAAO9pE,aAAa,KAAM/E,EAAS,EAAIkiE,EAAc,GACrD2M,EAAO9pE,aAAa,eAAgBm9D,GAAe,GACnD2M,EAAO9pE,aAAa,SAAU,eAC9B8pE,EAAO9pE,aAAa,OAAQ,eAC5Bq3B,EAAI/oD,OAAOw7F,GACX9vG,KAAK0xC,UAAUp9B,OAAO+oD,IACjB/vD,EAAKyhD,UAAY/uD,KAAK0iG,cACzB1iG,KAAK8lG,eAEA9lG,KAAK0xC,SACd,CACA,yBAAAk1D,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,EAEF,MAAMqwF,WAAkCU,GACtC,IAAY,KACZ,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,IAEhB1hG,KAAK+vG,mBAAqB,qBAC1B/vG,KAAKgwG,eAAiB,cACxB,CACA,MAAAloE,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAIzQ,KAAK+vG,oBAClC,MACEziG,MAAM,KACJqsB,EAAI,SACJs2E,EAAQ,YACR/M,EAAW,SACXn0C,GACD,MACD/tB,EAAK,OACLC,GACEjhC,KACJ,IAAKiwG,EACH,OAAOjwG,KAAK0xC,UAEd,MAAM2rB,EAAMr9D,KAAK+hG,WAAW32F,OAAO41B,EAAOC,GAAQ,GAClD,IAAIivE,EAAS,GACb,IAAK,IAAInqG,EAAI,EAAGi8B,EAAKiuE,EAASzyG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACpD,MAAM7C,EAAI+sG,EAASlqG,GAAK4zB,EAAK,GACvBiC,EAAIjC,EAAK,GAAKs2E,EAASlqG,EAAI,GACjCmqG,EAAO3nG,KAAK,GAAGrF,KAAK04B,IACtB,CACAs0E,EAASA,EAAOvxG,KAAK,KACrB,MAAMwxG,EAAWnwG,MAAK,GAAYA,KAAK+hG,WAAWzwF,cAActR,KAAKgwG,gBAUrE,OATAG,EAASnqE,aAAa,SAAUkqE,GAChCC,EAASnqE,aAAa,eAAgBk9D,EAAYliE,OAAS,GAC3DmvE,EAASnqE,aAAa,SAAU,eAChCmqE,EAASnqE,aAAa,OAAQ,eAC9Bq3B,EAAI/oD,OAAO67F,GACXnwG,KAAK0xC,UAAUp9B,OAAO+oD,IACjBtO,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEA9lG,KAAK0xC,SACd,CACA,yBAAAk1D,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,EAEF,MAAMwwF,WAAiCH,GACrC,WAAAvhG,CAAYulD,GACV/uB,MAAM+uB,GACN9kD,KAAK+vG,mBAAqB,oBAC1B/vG,KAAKgwG,eAAiB,aACxB,EAEF,MAAMjP,WAA+BS,GACnC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,GAElB,CACA,MAAA55D,GAKE,OAJA9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,oBACxBzQ,KAAKsN,KAAKyhD,UAAY/uD,KAAK0iG,cAC9B1iG,KAAK8lG,eAEA9lG,KAAK0xC,SACd,EAEF,MAAMsvD,WAA6BQ,GACjC,IAAyB,KACzB,IAAa,GACb,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,IAEhB1hG,KAAK+vG,mBAAqB,gBAC1B/vG,KAAKgwG,eAAiB,eACtBhwG,KAAKgnG,qBAAwC,iBAAjBhnG,KAAKsN,KAAK1Q,GAAwBktB,EAAqBG,UAAYH,EAAqBK,GACtH,CACA,IAAciW,EAAUzG,GACtB,OAAQyG,GACN,KAAK,GACH,MAAO,CACL1R,UAAW,yBAAyBiL,EAAK,MAAMA,EAAK,kBACpDqH,MAAOrH,EAAK,GAAKA,EAAK,GACtBsH,OAAQtH,EAAK,GAAKA,EAAK,IAE3B,KAAK,IACH,MAAO,CACLjL,UAAW,0BAA0BiL,EAAK,MAAMA,EAAK,kBACrDqH,MAAOrH,EAAK,GAAKA,EAAK,GACtBsH,OAAQtH,EAAK,GAAKA,EAAK,IAE3B,KAAK,IACH,MAAO,CACLjL,UAAW,0BAA0BiL,EAAK,MAAMA,EAAK,kBACrDqH,MAAOrH,EAAK,GAAKA,EAAK,GACtBsH,OAAQtH,EAAK,GAAKA,EAAK,IAE3B,QACE,MAAO,CACLjL,UAAW,cAAciL,EAAK,MAAMA,EAAK,kBACzCqH,MAAOrH,EAAK,GAAKA,EAAK,GACtBsH,OAAQtH,EAAK,GAAKA,EAAK,IAG/B,CACA,MAAAmO,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAIzQ,KAAK+vG,oBAClC,MACEziG,MAAM,KACJqsB,EAAI,SACJyG,EAAQ,SACRgwE,EAAQ,YACRlN,EAAW,SACXn0C,IAEA/uD,MACE,UACJ0uB,EAAS,MACTsS,EAAK,OACLC,GACEjhC,MAAK,GAAcogC,EAAUzG,GAC3B0jC,EAAMr9D,KAAK+hG,WAAW32F,OAAO41B,EAAOC,GAAQ,GAC5C1I,EAAIv4B,MAAK,GAAyBA,KAAK+hG,WAAWzwF,cAAc,SACtE+rD,EAAI/oD,OAAOikB,GACXA,EAAEyN,aAAa,eAAgBk9D,EAAYliE,OAAS,GACpDzI,EAAEyN,aAAa,iBAAkB,SACjCzN,EAAEyN,aAAa,kBAAmB,SAClCzN,EAAEyN,aAAa,oBAAqB,IACpCzN,EAAEyN,aAAa,SAAU,eACzBzN,EAAEyN,aAAa,OAAQ,eACvBzN,EAAEyN,aAAa,YAAatX,GAC5B,IAAK,IAAI3oB,EAAI,EAAGi8B,EAAKouE,EAAS5yG,OAAQuI,EAAIi8B,EAAIj8B,IAAK,CACjD,MAAMoqG,EAAWnwG,KAAK+hG,WAAWzwF,cAActR,KAAKgwG,gBACpDhwG,MAAK,GAAWuI,KAAK4nG,GACrBA,EAASnqE,aAAa,SAAUoqE,EAASrqG,GAAGpH,KAAK,MACjD45B,EAAEjkB,OAAO67F,EACX,CAMA,OALKphD,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAUp9B,OAAO+oD,GACtBr9D,KAAK+mG,qBACE/mG,KAAK0xC,SACd,CACA,YAAAixD,CAAaluF,GACXshB,MAAM4sE,aAAaluF,GACnB,MAAM,UACJ47F,EAAS,OACTH,EAAM,KACNv2E,GACEllB,EACE8jB,EAAIv4B,MAAK,GAIf,GAHIqwG,GAAa,GACf93E,EAAEyN,aAAa,eAAgBqqE,GAAa,GAE1CH,EACF,IAAK,IAAInqG,EAAI,EAAGi8B,EAAKhiC,MAAK,GAAWxC,OAAQuI,EAAIi8B,EAAIj8B,IACnD/F,MAAK,GAAW+F,GAAGigC,aAAa,SAAUkqE,EAAOnqG,GAAGpH,KAAK,MAG7D,GAAIg7B,EAAM,CACR,MAAM,UACJjL,EAAS,MACTsS,EAAK,OACLC,GACEjhC,MAAK,GAAcA,KAAKsN,KAAK8yB,SAAUzG,GAC9BpB,EAAEud,cACV9P,aAAa,UAAW,OAAOhF,KAASC,KAC7C1I,EAAEyN,aAAa,YAAatX,EAC9B,CACF,CACA,yBAAAk4E,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,EAEF,MAAMywF,WAAmCM,GACvC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,EACdC,sBAAsB,IAExB3hG,KAAKgnG,qBAAuBl9E,EAAqBG,SACnD,CACA,MAAA6d,GACE,MACEx6B,MAAM,aACJgjG,EAAY,SACZvhD,IAEA/uD,KAMJ,IALK+uD,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,uBAC7BzQ,KAAK+mG,qBACDuJ,EAAc,CAChB,MAAMC,EAAO3lG,SAAS0G,cAAc,QACpCi/F,EAAKvoE,UAAUv3B,IAAI,gBACnB8/F,EAAKhvD,YAAc+uD,EACnBtwG,KAAK0xC,UAAUp9B,OAAOi8F,EACxB,CACA,OAAOvwG,KAAK0xC,SACd,EAEF,MAAMyvD,WAAmCK,GACvC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAA75D,GACE,MACEx6B,MAAM,aACJgjG,EAAY,SACZvhD,IAEA/uD,KAKJ,IAJK+uD,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,uBACzB6/F,EAAc,CAChB,MAAME,EAAY5lG,SAAS0G,cAAc,KACzCk/F,EAAUxoE,UAAUv3B,IAAI,gBACxB+/F,EAAUjvD,YAAc+uD,EACxBtwG,KAAK0xC,UAAUp9B,OAAOk8F,EACxB,CACA,OAAOxwG,KAAK0xC,SACd,EAEF,MAAM0vD,WAAkCI,GACtC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAA75D,GACE,MACEx6B,MAAM,aACJgjG,EAAY,SACZvhD,IAEA/uD,KAKJ,IAJK+uD,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,sBACzB6/F,EAAc,CAChB,MAAME,EAAY5lG,SAAS0G,cAAc,KACzCk/F,EAAUxoE,UAAUv3B,IAAI,gBACxB+/F,EAAUjvD,YAAc+uD,EACxBtwG,KAAK0xC,UAAUp9B,OAAOk8F,EACxB,CACA,OAAOxwG,KAAK0xC,SACd,EAEF,MAAM2vD,WAAmCG,GACvC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,EACdC,sBAAsB,GAE1B,CACA,MAAA75D,GACE,MACEx6B,MAAM,aACJgjG,EAAY,SACZvhD,IAEA/uD,KAKJ,IAJK+uD,GAAY/uD,KAAK0iG,cACpB1iG,KAAK8lG,eAEP9lG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,uBACzB6/F,EAAc,CAChB,MAAMG,EAAY7lG,SAAS0G,cAAc,KACzCm/F,EAAUzoE,UAAUv3B,IAAI,gBACxBggG,EAAUlvD,YAAc+uD,EACxBtwG,KAAK0xC,UAAUp9B,OAAOm8F,EACxB,CACA,OAAOzwG,KAAK0xC,SACd,EAEF,MAAM4vD,WAA+BE,GACnC,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,EACdC,cAAc,IAEhB1hG,KAAKgnG,qBAAuBl9E,EAAqBI,KACnD,CACA,MAAA4d,GAOE,OANA9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,mBAC7BzQ,KAAK0xC,UAAU1L,aAAa,OAAQ,QAC/BhmC,KAAKsN,KAAKyhD,UAAY/uD,KAAK0iG,cAC9B1iG,KAAK8lG,eAEP9lG,KAAK+mG,qBACE/mG,KAAK0xC,SACd,EAEF,MAAM6vD,WAAwCC,GAC5C,IAAW,KACX,WAAAjiG,CAAYulD,GACV/uB,MAAM+uB,EAAY,CAChB28C,cAAc,IAEhB,MAAM,KACJ31D,GACE9rC,KAAKsN,KACTtN,KAAKoiC,SAAW0J,EAAK1J,SACrBpiC,KAAKgK,QAAU8hC,EAAK9hC,QACpBhK,KAAK2+F,YAAY7sD,UAAU+C,SAAS,2BAA4B,CAC9Dh1C,OAAQG,QACL8rC,GAEP,CACA,MAAAhE,GACE9nC,KAAK0xC,UAAU1J,UAAUv3B,IAAI,4BAC7B,MAAM,UACJihC,EAAS,KACTpkC,GACEtN,KACJ,IAAIwuG,EACAlhG,EAAKk9F,eAAoC,IAAnBl9F,EAAKk/D,UAC7BgiC,EAAU5jG,SAAS0G,cAAc,QAEjCk9F,EAAU5jG,SAAS0G,cAAc,OACjCk9F,EAAQvjG,IAAM,GAAGjL,KAAK6hG,gCAAgC,aAAax/F,KAAKiL,EAAKrO,MAAQ,YAAc,gBAC/FqO,EAAKk/D,WAAal/D,EAAKk/D,UAAY,IACrCgiC,EAAQ1jG,MAAQ,mBAAmB/H,KAAKsnD,MAAuB,IAAjB/8C,EAAKk/D,kBAGvDgiC,EAAQ/vE,iBAAiB,WAAYz+B,MAAK,GAAUsC,KAAKtC,OACzDA,MAAK,GAAWwuG,EAChB,MAAM,MACJ52E,GACEZ,GAAiBS,SAYrB,OAXAia,EAAUjT,iBAAiB,WAAWsU,IACpB,UAAZA,EAAIrqC,MAAoBkvB,EAAQmb,EAAIjE,QAAUiE,EAAIlE,UACpD7uC,MAAK,IACP,KAEGsN,EAAKyhD,UAAY/uD,KAAK0iG,aACzB1iG,KAAK8lG,eAEL0I,EAAQxmE,UAAUv3B,IAAI,oBAExBihC,EAAUp9B,OAAOk6F,GACV98D,CACT,CACA,yBAAAk1D,GACE,OAAO5mG,MAAK,EACd,CACA,gBAAA6mG,GACE7mG,KAAK0xC,UAAU1J,UAAUv3B,IAAI,gBAC/B,CACA,MACEzQ,KAAK4hG,iBAAiBsG,mBAAmBloG,KAAKgK,QAAShK,KAAKoiC,SAC9D,EAEF,MAAMsuE,GACJ,IAAwB,KACxB,IAAuB,KACvB,IAAuB,IAAIzzE,IAC3B,IAAmB,KACnB,WAAA19B,EAAY,IACVgmC,EAAG,qBACHorE,EAAoB,oBACpBzgC,EAAmB,0BACnB0gC,EAAyB,KACzB54C,EAAI,SACJxyB,EAAQ,gBACRqrE,IAEA7wG,KAAKulC,IAAMA,EACXvlC,MAAK,GAAwB2wG,EAC7B3wG,MAAK,GAAuBkwE,EAC5BlwE,MAAK,GAAmB6wG,GAAmB,KAC3C7wG,KAAKg4D,KAAOA,EACZh4D,KAAKwlC,SAAWA,EAChBxlC,KAAKknD,OAAS,EACdlnD,KAAK8wG,2BAA6BF,CACpC,CACA,sBAAAG,GACE,OAAO/wG,MAAK,GAAqB6P,KAAO,CAC1C,CACA,QAAM,CAAe84B,EAASn5B,EAAIwhG,GAChC,MAAMC,EAAiBtoE,EAAQ8mB,YAAc9mB,EACvCgX,EAAesxD,EAAezhG,GAAK,GAAGkuB,KAAmBluB,IACzD0hG,QAAuBlxG,MAAK,IAAkBmxG,kBAAkBxxD,IACtE,GAAIuxD,EACF,IAAK,MAAOxoG,EAAK7J,KAAUqyG,EACzBD,EAAejrE,aAAat9B,EAAK7J,GAGjCmyG,EACFA,EAAcjwF,IAAI,GAAG2wB,UAAU0/D,MAAMzoE,IAErC3oC,KAAKulC,IAAIjxB,OAAOq0B,GAChB3oC,MAAK,IAAuBqxG,iBAAiBrxG,KAAKulC,IAAKoD,EAASsoE,GAAgB,GAEpF,CACA,YAAMnpE,CAAOrzB,GACX,MAAM,YACJ68F,GACE78F,EACE++B,EAAQxzC,KAAKulC,IACnBD,GAAmBkO,EAAOxzC,KAAKwlC,UAC/B,MAAM+rE,EAAkB,IAAIt0E,IACtBu0E,EAAgB,CACpBlkG,KAAM,KACNkmC,QACAmrD,YAAalqF,EAAOkqF,YACpBiD,gBAAiBntF,EAAOmtF,gBACxBC,mBAAoBptF,EAAOotF,oBAAsB,GACjDC,aAAoC,IAAvBrtF,EAAOqtF,YACpBC,WAAY,IAAIhE,GAChB9qD,kBAAmBx+B,EAAOw+B,mBAAqB,IAAI8e,GACnDiwC,iBAA4C,IAA3BvtF,EAAOutF,gBACxBrN,aAAclgF,EAAOkgF,aACrBuN,aAAcztF,EAAOytF,aACrBt3D,OAAQ5qC,KACRgmB,SAAU,MAEZ,IAAK,MAAM1Y,KAAQgkG,EAAa,CAC9B,GAAIhkG,EAAKmkG,OACP,SAEF,MAAMC,EAAoBpkG,EAAKsyF,iBAAmB1zE,EAAeY,MACjE,GAAK4kF,EAIE,CACL,MAAM1rF,EAAWurF,EAAgBpzG,IAAImP,EAAKkC,IAC1C,IAAKwW,EACH,SAEFwrF,EAAcxrF,SAAWA,CAC3B,MATE,GAAI1Y,EAAKqsB,KAAK,KAAOrsB,EAAKqsB,KAAK,IAAMrsB,EAAKqsB,KAAK,KAAOrsB,EAAKqsB,KAAK,GAC9D,SASJ63E,EAAclkG,KAAOA,EACrB,MAAMq7B,EAAUg3D,GAAyBv0F,OAAOomG,GAChD,IAAK7oE,EAAQ84D,aACX,SAEF,IAAKiQ,GAAqBpkG,EAAKyhD,SAAU,CACvC,MAAM/oC,EAAWurF,EAAgBpzG,IAAImP,EAAKyhD,UACrC/oC,EAGHA,EAASzd,KAAKogC,GAFd4oE,EAAgB7sG,IAAI4I,EAAKyhD,SAAU,CAACpmB,GAIxC,CACA,MAAMgpE,EAAWhpE,EAAQb,SACrBx6B,EAAKmyF,SACPkS,EAAS7mG,MAAMukC,WAAa,gBAExBrvC,MAAK,GAAe2xG,EAAUrkG,EAAKkC,GAAIgiG,EAAcxrF,UACvD2iB,EAAQ65D,cACVxiG,MAAK,GAAqB0E,IAAIikC,EAAQr7B,KAAKkC,GAAIm5B,GAC/C3oC,KAAK8wG,4BAA4BzxD,wBAAwB1W,GAE7D,CACA3oC,MAAK,IACP,CACA,wBAAM4xG,CAAmBN,EAAa3S,GACpC,MAAM6S,EAAgB,CACpBlkG,KAAM,KACNkmC,MAAOxzC,KAAKulC,IACZo5D,cACAoD,WAAY,IAAIhE,GAChBnzD,OAAQ5qC,MAEV,IAAK,MAAMsN,KAAQgkG,EAAa,CAC9BhkG,EAAK41F,cAAgBwN,GAAgBmB,oBACrCL,EAAclkG,KAAOA,EACrB,MAAMq7B,EAAUg3D,GAAyBv0F,OAAOomG,GAChD,IAAK7oE,EAAQ84D,aACX,SAEF,MAAMkQ,EAAWhpE,EAAQb,eACnB9nC,MAAK,GAAe2xG,EAAUrkG,EAAKkC,GAAI,KAC/C,CACF,CACA,MAAA0hD,EAAO,SACL1rB,IAEA,MAAMgO,EAAQxzC,KAAKulC,IACnBvlC,KAAKwlC,SAAWA,EAChBF,GAAmBkO,EAAO,CACxBpT,SAAUoF,EAASpF,WAErBpgC,MAAK,KACLwzC,EAAMisD,QAAS,CACjB,CACA,MACE,IAAKz/F,MAAK,GACR,OAEF,MAAMwzC,EAAQxzC,KAAKulC,IACnB,IAAK,MAAO/1B,EAAIy9B,KAAWjtC,MAAK,GAAsB,CACpD,MAAM2oC,EAAU6K,EAAMgd,cAAc,wBAAwBhhD,OAC5D,IAAKm5B,EACH,SAEFsE,EAAO7E,UAAY,oBACnB,MAAM,WACJqnB,GACE9mB,EACC8mB,EAE8B,WAAxBA,EAAWgB,SACpBhB,EAAWqiD,YAAY7kE,GACbwiB,EAAWznB,UAAUyI,SAAS,qBAGxCgf,EAAW2hD,MAAMnkE,GAFjBwiB,EAAWrD,OAAOnf,GAJlBtE,EAAQr0B,OAAO24B,GAQjB,MAAM8kE,EAAqB/xG,MAAK,GAAqB7B,IAAIqR,GACpDuiG,IAGDA,EAAmBC,cACrBhyG,KAAK8wG,4BAA4BpxD,iBAAiBlwC,EAAIm5B,EAAQn5B,GAAIy9B,GAClE8kE,EAAmBC,cAAe,GAElCD,EAAmB9kE,OAASA,EAEhC,CACAjtC,MAAK,GAAqBwf,OAC5B,CACA,sBAAAyyF,GACE,OAAOnjG,MAAMqR,KAAKngB,MAAK,GAAqB+e,SAC9C,CACA,qBAAAmzF,CAAsB1iG,GACpB,OAAOxP,MAAK,GAAqB7B,IAAIqR,EACvC,CACA,8BAAWqiG,GACT,OAAOp8E,EAAOz1B,KAAM,sBAAuBzB,OAAOipC,OAAO,CACvDxG,MAAO,EACPmxE,SAAU,EACVrnG,MAAO2iB,EACP8mD,UAAW,CAAC,GACZ8uB,uBAAwB,EACxBE,qBAAsB,IAE1B,EAYF,MAAM6O,GAAc,YACpB,MAAMC,WAAuBluD,GAC3B,IACA,IAAW,GACX,IAAe,GAAGnkD,KAAKwP,YACvB,IAAc,KACd,IACAovB,+BAAiC,GACjCA,wBAA0B,EAC1BA,qBAAuB,KACvBA,wBAA0B,GAC1B,2BAAW2R,GACT,MAAMtuC,EAAQowG,GAAe5yG,UACvB+wC,EAAez8B,GAAQA,EAAKq8B,UAC5BY,EAAQf,GAA0BgB,gBAClCC,EAAMjB,GAA0BkB,cACtC,OAAO1b,EAAOz1B,KAAM,mBAAoB,IAAIuuC,GAAgB,CAAC,CAAC,CAAC,SAAU,aAAc,SAAU,cAAetsC,EAAMwzC,eAAgB,CACpIzG,SAAS,IACP,CAAC,CAAC,aAAc,iBAAkB,SAAU,cAAe/sC,EAAMwzC,gBAAiB,CAAC,CAAC,YAAa,iBAAkBxzC,EAAMqwG,gBAAiB,CAC5I/qG,KAAM,EAAEypC,EAAO,GACf/B,QAASuB,IACP,CAAC,CAAC,iBAAkB,uBAAwBvuC,EAAMqwG,gBAAiB,CACrE/qG,KAAM,EAAE2pC,EAAK,GACbjC,QAASuB,IACP,CAAC,CAAC,aAAc,kBAAmBvuC,EAAMqwG,gBAAiB,CAC5D/qG,KAAM,CAACypC,EAAO,GACd/B,QAASuB,IACP,CAAC,CAAC,kBAAmB,wBAAyBvuC,EAAMqwG,gBAAiB,CACvE/qG,KAAM,CAAC2pC,EAAK,GACZjC,QAASuB,IACP,CAAC,CAAC,UAAW,eAAgBvuC,EAAMqwG,gBAAiB,CACtD/qG,KAAM,CAAC,GAAIypC,GACX/B,QAASuB,IACP,CAAC,CAAC,eAAgB,qBAAsBvuC,EAAMqwG,gBAAiB,CACjE/qG,KAAM,CAAC,GAAI2pC,GACXjC,QAASuB,IACP,CAAC,CAAC,YAAa,iBAAkBvuC,EAAMqwG,gBAAiB,CAC1D/qG,KAAM,CAAC,EAAGypC,GACV/B,QAASuB,IACP,CAAC,CAAC,iBAAkB,uBAAwBvuC,EAAMqwG,gBAAiB,CACrE/qG,KAAM,CAAC,EAAG2pC,GACVjC,QAASuB,MAEb,CACA5R,aAAe,WACfA,mBAAqB9U,EAAqBE,SAC1C,WAAAzqB,CAAYkV,GACVshB,MAAM,IACDthB,EACHxV,KAAM,mBAERe,MAAK,GAASyU,EAAOswB,OAASstE,GAAeE,eAAiBpuD,GAAiBuB,kBAC/E1lD,MAAK,GAAYyU,EAAOg3D,UAAY4mC,GAAeG,iBAC9CxyG,KAAKs6C,qBACRt6C,KAAKioC,WAAWgP,UAAU,oCAE9B,CACA,iBAAOgJ,CAAWC,EAAM5V,GACtB6Z,GAAiBlE,WAAWC,EAAM5V,GAClC,MAAMx/B,EAAQ2kC,iBAAiB7kC,SAAS47C,iBACxCxmD,KAAKyyG,iBAAmBhsD,WAAW37C,EAAM47C,iBAAiB,sBAC5D,CACA,0BAAO3L,CAAoBp1C,EAAM9G,GAC/B,OAAQ8G,GACN,KAAK0kB,EAA2BG,cAC9B6nF,GAAeG,iBAAmB3zG,EAClC,MACF,KAAKwrB,EAA2BI,eAC9B4nF,GAAeE,cAAgB1zG,EAGrC,CACA,YAAAm0C,CAAartC,EAAM9G,GACjB,OAAQ8G,GACN,KAAK0kB,EAA2BG,cAC9BxqB,MAAK,GAAgBnB,GACrB,MACF,KAAKwrB,EAA2BI,eAC9BzqB,MAAK,GAAanB,GAGxB,CACA,oCAAW26C,GACT,MAAO,CAAC,CAACnvB,EAA2BG,cAAe6nF,GAAeG,kBAAmB,CAACnoF,EAA2BI,eAAgB4nF,GAAeE,eAAiBpuD,GAAiBuB,mBACpL,CACA,sBAAItJ,GACF,MAAO,CAAC,CAAC/xB,EAA2BG,cAAexqB,MAAK,IAAY,CAACqqB,EAA2BI,eAAgBzqB,MAAK,IACvH,CACA,IAAgByrE,GACd,MAAMinC,EAAc7iG,IAClB7P,KAAK2yG,UAAU7nG,MAAM2gE,SAAW,QAAQ57D,mCACxC7P,KAAKioD,UAAU,IAAKp4C,EAAO7P,MAAK,IAAaA,KAAKgpD,aAClDhpD,MAAK,GAAY6P,EACjB7P,MAAK,IAAsB,EAEvB4yG,EAAgB5yG,MAAK,GAC3BA,KAAKk5C,YAAY,CACfvL,IAAK+kE,EAAYpwG,KAAKtC,KAAMyrE,GAC5B79B,KAAM8kE,EAAYpwG,KAAKtC,KAAM4yG,GAC7B/kE,KAAM7tC,KAAKioC,WAAWqU,SAASh6C,KAAKtC,KAAKioC,WAAYjoC,MACrD8tC,UAAU,EACVnoC,KAAM0kB,EAA2BG,cACjCwjB,qBAAqB,EACrBC,UAAU,GAEd,CACA,IAAalJ,GACX,MAAM8+D,EAAWgP,IACf7yG,MAAK,GAASA,KAAK2yG,UAAU7nG,MAAMi6B,MAAQ8tE,CAAG,EAE1CC,EAAa9yG,MAAK,GACxBA,KAAKk5C,YAAY,CACfvL,IAAKk2D,EAASvhG,KAAKtC,KAAM+kC,GACzB6I,KAAMi2D,EAASvhG,KAAKtC,KAAM8yG,GAC1BjlE,KAAM7tC,KAAKioC,WAAWqU,SAASh6C,KAAKtC,KAAKioC,WAAYjoC,MACrD8tC,UAAU,EACVnoC,KAAM0kB,EAA2BI,eACjCujB,qBAAqB,EACrBC,UAAU,GAEd,CACA,eAAAqkE,CAAgBpvG,EAAG04B,GACjB57B,KAAKioC,WAAWwJ,yBAAyBvuC,EAAG04B,GAAG,EACjD,CACA,qBAAA0tB,GACE,MAAMnpB,EAAQngC,KAAKgpD,YACnB,MAAO,EAAEqpD,GAAeI,iBAAmBtyE,IAASkyE,GAAeI,iBAAmBzyG,MAAK,IAAamgC,EAC1G,CACA,OAAAie,GACOp+C,KAAK4qC,SAGV7U,MAAMqoB,UACW,OAAbp+C,KAAKulC,MAGJvlC,KAAKslD,iBACRtlD,KAAK4qC,OAAOn6B,IAAIzQ,OAEpB,CACA,cAAAouD,GACE,IAAKr4B,MAAMq4B,iBACT,OAAO,EAETpuD,KAAK+yG,WAAW/qE,UAAU/3B,OAAO,WACjCjQ,KAAK2yG,UAAUK,iBAAkB,EACjChzG,KAAK6mD,cAAe,EACpB7mD,KAAKulC,IAAI6R,gBAAgB,yBACzBp3C,MAAK,GAAc,IAAIo+B,gBACvB,MAAMC,EAASr+B,KAAKioC,WAAWyL,eAAe1zC,MAAK,IAgBnD,OAfAA,KAAK2yG,UAAUl0E,iBAAiB,UAAWz+B,KAAKizG,iBAAiB3wG,KAAKtC,MAAO,CAC3Eq+B,WAEFr+B,KAAK2yG,UAAUl0E,iBAAiB,QAASz+B,KAAKkzG,eAAe5wG,KAAKtC,MAAO,CACvEq+B,WAEFr+B,KAAK2yG,UAAUl0E,iBAAiB,OAAQz+B,KAAKmzG,cAAc7wG,KAAKtC,MAAO,CACrEq+B,WAEFr+B,KAAK2yG,UAAUl0E,iBAAiB,QAASz+B,KAAKozG,eAAe9wG,KAAKtC,MAAO,CACvEq+B,WAEFr+B,KAAK2yG,UAAUl0E,iBAAiB,QAASz+B,KAAKqzG,eAAe/wG,KAAKtC,MAAO,CACvEq+B,YAEK,CACT,CACA,eAAAgwB,GACE,QAAKt4B,MAAMs4B,oBAGXruD,KAAK+yG,WAAW/qE,UAAUv3B,IAAI,WAC9BzQ,KAAK2yG,UAAUK,iBAAkB,EACjChzG,KAAKulC,IAAIS,aAAa,wBAAyBhmC,MAAK,IACpDA,KAAK6mD,cAAe,EACpB7mD,MAAK,IAAau+B,QAClBv+B,MAAK,GAAc,KACnBA,KAAKulC,IAAI0P,MAAM,CACb4a,eAAe,IAEjB7vD,KAAKmwC,WAAY,EACjBnwC,KAAK4qC,OAAOrF,IAAIyC,UAAUv3B,IAAI,oBACvB,EACT,CACA,OAAA42C,CAAQ1Y,GACD3uC,KAAK0oC,sBAGV3S,MAAMsxB,QAAQ1Y,GACVA,EAAM3sC,SAAWhC,KAAK2yG,WACxB3yG,KAAK2yG,UAAU19D,QAEnB,CACA,SAAAkZ,CAAUlZ,GACJj1C,KAAKghC,QAGThhC,KAAKouD,iBACDnZ,GACFj1C,KAAK2yG,UAAU19D,QAEbj1C,KAAKskD,iBAAiBU,YACxBhlD,KAAK8mD,SAEP9mD,KAAKskD,gBAAkB,KACzB,CACA,OAAAlU,GACE,OAAQpwC,KAAK2yG,WAAiD,KAApC3yG,KAAK2yG,UAAUW,UAAUrxE,MACrD,CACA,MAAAhyB,GACEjQ,KAAKmwC,WAAY,EACbnwC,KAAK4qC,SACP5qC,KAAK4qC,OAAOyO,iBAAgB,GAC5Br5C,KAAK4qC,OAAOrF,IAAIyC,UAAUv3B,IAAI,oBAEhCslB,MAAM9lB,QACR,CACA,MACE,MAAM9J,EAAS,GACfnG,KAAK2yG,UAAUplG,YACf,IAAIgmG,EAAY,KAChB,IAAK,MAAM5jD,KAAS3vD,KAAK2yG,UAAUa,WAC7BD,GAAW39D,WAAa3yB,KAAK4yB,WAAgC,OAAnB8Z,EAAMc,WAGpDtqD,EAAOoC,KAAK8pG,IAAe,GAAgB1iD,IAC3C4jD,EAAY5jD,GAEd,OAAOxpD,EAAOxH,KAAK,KACrB,CACA,MACE,MAAOmgD,EAAaC,GAAgB/+C,KAAKqlD,iBACzC,IAAI1rB,EACJ,GAAI35B,KAAKslD,gBACP3rB,EAAO35B,KAAKulC,IAAI8P,4BACX,CACL,MAAM,aACJW,EAAY,IACZzQ,GACEvlC,KACEyzG,EAAeluE,EAAIz6B,MAAMC,QACzB2oG,EAAkBnuE,EAAIyC,UAAUyI,SAAS,UAC/ClL,EAAIyC,UAAU/3B,OAAO,UACrBs1B,EAAIz6B,MAAMC,QAAU,SACpBirC,EAAazQ,IAAIjxB,OAAOtU,KAAKulC,KAC7B5L,EAAO4L,EAAI8P,wBACX9P,EAAIt1B,SACJs1B,EAAIz6B,MAAMC,QAAU0oG,EACpBluE,EAAIyC,UAAUsN,OAAO,SAAUo+D,EACjC,CACI1zG,KAAKogC,SAAW,KAAQpgC,KAAK+mD,eAAiB,KAChD/mD,KAAKghC,MAAQrH,EAAKqH,MAAQ8d,EAC1B9+C,KAAKihC,OAAStH,EAAKsH,OAAS8d,IAE5B/+C,KAAKghC,MAAQrH,EAAKsH,OAAS6d,EAC3B9+C,KAAKihC,OAAStH,EAAKqH,MAAQ+d,GAE7B/+C,KAAKgnD,mBACP,CACA,MAAAjK,GACE,IAAK/8C,KAAKynD,eACR,OAEF1xB,MAAMgnB,SACN/8C,KAAKquD,kBACL,MAAMslD,EAAY3zG,MAAK,GACjB4zG,EAAU5zG,MAAK,GAAWA,MAAK,KAAe6zG,UACpD,GAAIF,IAAcC,EAChB,OAEF,MAAME,EAAU1vF,IACdpkB,MAAK,GAAWokB,EACXA,GAILpkB,MAAK,KACLA,KAAKioC,WAAWmW,QAAQp+C,MACxBA,MAAK,MALHA,KAAKiQ,QAKoB,EAE7BjQ,KAAKk5C,YAAY,CACfvL,IAAK,KACHmmE,EAAQF,EAAQ,EAElBhmE,KAAM,KACJkmE,EAAQH,EAAU,EAEpB7lE,UAAU,IAEZ9tC,MAAK,IACP,CACA,uBAAAu+C,GACE,OAAOv+C,KAAKynD,cACd,CACA,eAAAjN,GACEx6C,KAAKouD,iBACLpuD,KAAK2yG,UAAU19D,OACjB,CACA,OAAA2C,CAAQjJ,GACFA,EAAM3sC,SAAWhC,KAAKulC,KAAqB,UAAdoJ,EAAMjmC,MACrC1I,KAAKw6C,kBACL7L,EAAMhL,iBAEV,CACA,gBAAAsvE,CAAiBtkE,GACf0jE,GAAe9hE,iBAAiBtsC,KAAKjE,KAAM2uC,EAC7C,CACA,cAAAukE,CAAevkE,GACb3uC,KAAKmwC,WAAY,CACnB,CACA,aAAAgjE,CAAcxkE,GACZ3uC,KAAKmwC,WAAY,CACnB,CACA,cAAAijE,CAAezkE,GACb3uC,KAAK4qC,OAAOrF,IAAIyC,UAAUsN,OAAO,kBAAmBt1C,KAAKowC,UAC3D,CACA,cAAA0f,GACE9vD,KAAK2yG,UAAU3sE,aAAa,OAAQ,WACpChmC,KAAK2yG,UAAUv7D,gBAAgB,iBACjC,CACA,aAAA2Y,GACE/vD,KAAK2yG,UAAU3sE,aAAa,OAAQ,WACpChmC,KAAK2yG,UAAU3sE,aAAa,kBAAkB,EAChD,CACA,oBAAIgqB,GACF,OAAO,CACT,CACA,MAAAloB,GACE,GAAI9nC,KAAKulC,IACP,OAAOvlC,KAAKulC,IAEd,IAAIsiB,EAAOC,GACP9nD,KAAKokD,SAAWpkD,KAAKs6C,uBACvBuN,EAAQ7nD,KAAKkD,EACb4kD,EAAQ9nD,KAAK47B,GAEf7F,MAAM+R,SACN9nC,KAAK2yG,UAAY/nG,SAAS0G,cAAc,OACxCtR,KAAK2yG,UAAUvqE,UAAY,WAC3BpoC,KAAK2yG,UAAU3sE,aAAa,KAAMhmC,MAAK,IACvCA,KAAK2yG,UAAU3sE,aAAa,eAAgB,oBAC5ChmC,KAAK2yG,UAAU3sE,aAAa,kBAAmB,mBAC/ChmC,KAAK+vD,gBACL/vD,KAAK2yG,UAAUK,iBAAkB,EACjC,MAAM,MACJloG,GACE9K,KAAK2yG,UAOT,GANA7nG,EAAM2gE,SAAW,QAAQzrE,MAAK,oCAC9B8K,EAAMi6B,MAAQ/kC,MAAK,GACnBA,KAAKulC,IAAIjxB,OAAOtU,KAAK2yG,WACrB3yG,KAAK+yG,WAAanoG,SAAS0G,cAAc,OACzCtR,KAAK+yG,WAAW/qE,UAAUv3B,IAAI,UAAW,WACzCzQ,KAAKulC,IAAIjxB,OAAOtU,KAAK+yG,YACjB/yG,KAAKokD,SAAWpkD,KAAKs6C,oBAAqB,CAC5C,MAAOwE,EAAaC,GAAgB/+C,KAAKqlD,iBACzC,GAAIrlD,KAAKs6C,oBAAqB,CAC5B,MAAM,SACJjS,GACEroC,KAAKukD,aACT,IAAKtG,EAAIC,GAAMl+C,KAAKspD,yBACnBrL,EAAIC,GAAMl+C,KAAK+oD,wBAAwB9K,EAAIC,GAC5C,MAAO9c,EAAWC,GAAcrhC,KAAKmlD,gBAC9B7jB,EAAOC,GAASvhC,KAAKolD,gBAC5B,IAAI2uD,EAAMC,EACV,OAAQh0G,KAAKogC,UACX,KAAK,EACH2zE,EAAOlsD,GAASxf,EAAS,GAAK/G,GAASF,EACvC4yE,EAAOlsD,EAAQ9nD,KAAKihC,QAAUoH,EAAS,GAAK9G,GAASF,EACrD,MACF,KAAK,GACH0yE,EAAOlsD,GAASxf,EAAS,GAAK/G,GAASF,EACvC4yE,EAAOlsD,GAASzf,EAAS,GAAK9G,GAASF,GACtC4c,EAAIC,GAAM,CAACA,GAAKD,GACjB,MACF,KAAK,IACH81D,EAAOlsD,EAAQ7nD,KAAKghC,OAASqH,EAAS,GAAK/G,GAASF,EACpD4yE,EAAOlsD,GAASzf,EAAS,GAAK9G,GAASF,GACtC4c,EAAIC,GAAM,EAAED,GAAKC,GAClB,MACF,KAAK,IACH61D,EAAOlsD,GAASxf,EAAS,GAAK/G,EAAQthC,KAAKihC,OAASI,GAAcD,EAClE4yE,EAAOlsD,GAASzf,EAAS,GAAK9G,EAAQvhC,KAAKghC,MAAQI,GAAaC,GAC/D4c,EAAIC,GAAM,EAAEA,EAAID,GAGrBj+C,KAAK0nD,MAAMqsD,EAAOj1D,EAAak1D,EAAOj1D,EAAcd,EAAIC,EAC1D,MACEl+C,KAAK4nD,gBAAgBC,EAAOC,GAE9B9nD,MAAK,KACLA,KAAK6mD,cAAe,EACpB7mD,KAAK2yG,UAAUK,iBAAkB,CACnC,MACEhzG,KAAK6mD,cAAe,EACpB7mD,KAAK2yG,UAAUK,iBAAkB,EAEnC,OAAOhzG,KAAKulC,GACd,CACA,SAAO,CAAgB7iB,GACrB,OAAQA,EAAKkzB,WAAa3yB,KAAK4yB,UAAYnzB,EAAKuxF,UAAYvxF,EAAK4wF,WAAWp2E,WAAWk1E,GAAa,GACtG,CACA,cAAAiB,CAAe1kE,GACb,MAAMgK,EAAgBhK,EAAMgK,eAAiBxmC,OAAOwmC,eAC9C,MACJY,GACEZ,EACJ,GAAqB,IAAjBY,EAAM/7C,QAA6B,eAAb+7C,EAAM,GAC9B,OAEF5K,EAAMhL,iBACN,MAAMqU,EAAQq6D,IAAe,GAAoB15D,EAAcE,QAAQ,SAAW,IAAI3b,WAAWk1E,GAAa,MAC9G,IAAKp6D,EACH,OAEF,MAAM7B,EAAYhkC,OAAOikC,eACzB,IAAKD,EAAUwI,WACb,OAEF3+C,KAAK2yG,UAAUplG,YACf4oC,EAAU+9D,qBACV,MAAMh1D,EAAQ/I,EAAUyI,WAAW,GACnC,IAAK5G,EAAM3nC,SAAS,MAIlB,OAHA6uC,EAAMi1D,WAAWvpG,SAASy0F,eAAernD,IACzCh4C,KAAK2yG,UAAUplG,iBACf4oC,EAAUi+D,kBAGZ,MAAM,eACJC,EAAc,YACdC,GACEp1D,EACEq1D,EAAe,GACfC,EAAc,GACpB,GAAIH,EAAez+D,WAAa3yB,KAAK4yB,UAAW,CAC9C,MAAMjL,EAASypE,EAAev+D,cAE9B,GADA0+D,EAAYjsG,KAAK8rG,EAAeJ,UAAUx1G,MAAM61G,GAAap3E,WAAWk1E,GAAa,KACjFxnE,IAAW5qC,KAAK2yG,UAAW,CAC7B,IAAIxsG,EAASouG,EACb,IAAK,MAAM5kD,KAAS3vD,KAAK2yG,UAAUa,WAC7B7jD,IAAU/kB,EAIdzkC,EAAOoC,KAAK8pG,IAAe,GAAgB1iD,IAHzCxpD,EAASquG,CAKf,CACAD,EAAahsG,KAAK8rG,EAAeJ,UAAUx1G,MAAM,EAAG61G,GAAap3E,WAAWk1E,GAAa,IAC3F,MAAO,GAAIiC,IAAmBr0G,KAAK2yG,UAAW,CAC5C,IAAIxsG,EAASouG,EACTxuG,EAAI,EACR,IAAK,MAAM4pD,KAAS3vD,KAAK2yG,UAAUa,WAC7BztG,MAAQuuG,IACVnuG,EAASquG,GAEXruG,EAAOoC,KAAK8pG,IAAe,GAAgB1iD,GAE/C,CACA3vD,MAAK,GAAW,GAAGu0G,EAAa51G,KAAK,QAAQq5C,IAAQw8D,EAAY71G,KAAK,QACtEqB,MAAK,KACL,MAAMy0G,EAAW,IAAIC,MACrB,IAAIC,EAAe5xG,KAAKg7B,WAAWw2E,EAAapsG,KAAIinG,GAAQA,EAAK5xG,UACjE,IAAK,MAAM,WACTiyD,KACGzvD,KAAK2yG,UAAUa,WAClB,GAAI/jD,EAAW7Z,WAAa3yB,KAAK4yB,UAAW,CAC1C,MAAMr4C,EAASiyD,EAAWwkD,UAAUz2G,OACpC,GAAIm3G,GAAgBn3G,EAAQ,CAC1Bi3G,EAASG,SAASnlD,EAAYklD,GAC9BF,EAASI,OAAOplD,EAAYklD,GAC5B,KACF,CACAA,GAAgBn3G,CAClB,CAEF24C,EAAU2+D,kBACV3+D,EAAU4+D,SAASN,EACrB,CACA,MAEE,GADAz0G,KAAK2yG,UAAUqC,kBACVh1G,MAAK,GAGV,IAAK,MAAMovG,KAAQpvG,MAAK,GAASjB,MAAM,MAAO,CAC5C,MAAMwmC,EAAM36B,SAAS0G,cAAc,OACnCi0B,EAAIjxB,OAAO86F,EAAOxkG,SAASy0F,eAAe+P,GAAQxkG,SAAS0G,cAAc,OACzEtR,KAAK2yG,UAAUr+F,OAAOixB,EACxB,CACF,CACA,MACE,OAAOvlC,MAAK,GAASk9B,WAAW,IAAQ,IAC1C,CACA,SAAO,CAAoBlzB,GACzB,OAAOA,EAAQkzB,WAAW,IAAK,IACjC,CACA,cAAIgzB,GACF,OAAOlwD,KAAK2yG,SACd,CACA,wBAAa15D,CAAY3rC,EAAMs9B,EAAQN,GACrC,IAAIy2C,EAAc,KAClB,GAAIzzE,aAAgBozF,GAA2B,CAC7C,MACEpzF,MACE28F,uBAAuB,SACrBx+B,EAAQ,UACRu+B,GACD,KACDrwE,EAAI,SACJyG,EAAQ,GACR5wB,EAAE,SACFu/C,GACD,YACDxN,EAAW,aACXmuD,EACA9kE,QACEotB,MAAM,WACJjjB,KAGFznC,EACJ,IAAKi0C,GAAsC,IAAvBA,EAAY/jD,OAC9B,OAAO,KAETujF,EAAczzE,EAAO,CACnBsyF,eAAgB91E,EAAqBE,SACrC+a,MAAOj2B,MAAMqR,KAAK6pF,GAClBv+B,WACA5sE,MAAO0iD,EAAY5iD,KAAK,MACxB0pC,SAAUqnE,EACV/1D,UAAW5E,EAAa,EACxBpb,KAAMA,EAAKl7B,MAAM,GACjB2hC,WACAka,oBAAqB9qC,EACrBA,KACAssC,SAAS,EACTiT,WAEJ,CACA,MAAMxnB,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,GAKrD,OAJA/C,GAAO,GAAYj6B,EAAKm+D,SACxBlkC,GAAO,GAASnP,GAAKC,gBAAgB/qB,EAAKy3B,OAC1CwC,GAAO,GAAW8qE,IAAe,GAAoB/kG,EAAKzO,OAC1D0oC,EAAOgd,aAAew8B,EACfx5C,CACT,CACA,SAAAmR,CAAUqI,GAAe,GACvB,GAAI/gD,KAAKowC,UACP,OAAO,KAET,GAAIpwC,KAAK87C,QACP,OAAO97C,KAAK8uD,mBAEd,MAAMmmD,EAAU5C,GAAeI,iBAAmBzyG,KAAKgpD,YACjDrvB,EAAO35B,KAAK+tD,QAAQknD,EAASA,GAC7BlwE,EAAQof,GAAiBwB,cAAchW,QAAQ3vC,KAAKslD,gBAAkB7V,iBAAiBzvC,KAAK2yG,WAAW5tE,MAAQ/kC,MAAK,IACpHy4C,EAAa,CACjBmnD,eAAgB91E,EAAqBE,SACrC+a,QACA0mC,SAAUzrE,MAAK,GACfnB,MAAOmB,MAAK,KACZ25C,UAAW35C,KAAK25C,UAChBhgB,OACAyG,SAAUpgC,KAAKogC,SACf80E,mBAAoBl1G,KAAKilD,qBAE3B,OAAIlE,GACFtI,EAAWwW,QAAS,EACbxW,GAELz4C,KAAKs6C,sBAAwBt6C,MAAK,GAAmBy4C,GAChD,MAETA,EAAWjpC,GAAKxP,KAAKs6C,oBACd7B,EACT,CACA,IAAmBA,GACjB,MAAM,MACJ55C,EAAK,SACL4sE,EAAQ,MACR1mC,EAAK,UACL4U,GACE35C,KAAKukD,aACT,OAAOvkD,KAAK0oD,eAAiBjQ,EAAW55C,QAAUA,GAAS45C,EAAWgzB,WAAaA,GAAYhzB,EAAW1T,MAAMv0B,MAAK,CAACuH,EAAGhS,IAAMgS,IAAMgtB,EAAMh/B,MAAO0yC,EAAWkB,YAAcA,CAC7K,CACA,uBAAA0F,CAAwBC,GACtB,MAAMt1C,EAAU+rB,MAAMspB,wBAAwBC,GAC9C,GAAIt/C,KAAK87C,QACP,OAAO9xC,EAET,MAAM,MACJc,GACEd,EACJc,EAAM2gE,SAAW,QAAQzrE,MAAK,oCAC9B8K,EAAMi6B,MAAQ/kC,MAAK,GACnBgK,EAAQgrG,kBACR,IAAK,MAAM5F,KAAQpvG,MAAK,GAASjB,MAAM,MAAO,CAC5C,MAAMwmC,EAAM36B,SAAS0G,cAAc,OACnCi0B,EAAIjxB,OAAO86F,EAAOxkG,SAASy0F,eAAe+P,GAAQxkG,SAAS0G,cAAc,OACzEtH,EAAQsK,OAAOixB,EACjB,CACA,MAAM0vE,EAAU5C,GAAeI,iBAAmBzyG,KAAKgpD,YAKvD,OAJA1J,EAAWqjD,aAAa,CACtBhpE,KAAM35B,KAAK+tD,QAAQknD,EAASA,GAC5B/F,aAAclvG,MAAK,KAEdgK,CACT,CACA,sBAAA0mD,CAAuBpR,GACrBvpB,MAAM26B,uBAAuBpR,GAC7BA,EAAWujD,aACb,EAQF,MAAMsS,GACJv2E,iBAAmB,KACnB,SAAAw2E,GACE5gF,EAAY,mDACd,CACA,OAAImW,GACFnW,EAAY,6CACd,CACA,SAAAkkB,CAAUsoB,EAAOq0C,GACf7gF,EAAY,mDACd,CACA,eAAO8gF,CAASrqG,EAAKgzC,EAAIC,EAAI/X,EAAIC,EAAI2xB,GACnCA,IAAS,IAAImO,aAAaj7D,EAAIzN,QAC9B,IAAK,IAAIuI,EAAI,EAAGi8B,EAAK/2B,EAAIzN,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC5CgyD,EAAKhyD,GAAKk4C,EAAKhzC,EAAIlF,GAAKogC,EACxB4xB,EAAKhyD,EAAI,GAAKm4C,EAAKjzC,EAAIlF,EAAI,GAAKqgC,EAElC,OAAO2xB,CACT,CACA,sBAAOw9C,CAAgBtqG,EAAKgzC,EAAIC,EAAI/X,EAAIC,EAAI2xB,GAC1CA,IAAS,IAAImO,aAAaj7D,EAAIzN,QAC9B,IAAK,IAAIuI,EAAI,EAAGi8B,EAAK/2B,EAAIzN,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC5CgyD,EAAKhyD,GAAKk4C,EAAKhzC,EAAIlF,EAAI,GAAKogC,EAC5B4xB,EAAKhyD,EAAI,GAAKm4C,EAAKjzC,EAAIlF,GAAKqgC,EAE9B,OAAO2xB,CACT,CACA,iBAAOy9C,CAAWvqG,EAAKgzC,EAAIC,EAAI6Z,GAC7BA,IAAS,IAAImO,aAAaj7D,EAAIzN,QAC9B,IAAK,IAAIuI,EAAI,EAAGi8B,EAAK/2B,EAAIzN,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC5CgyD,EAAKhyD,GAAKk4C,EAAKhzC,EAAIlF,GACnBgyD,EAAKhyD,EAAI,GAAKm4C,EAAKjzC,EAAIlF,EAAI,GAE7B,OAAOgyD,CACT,CACA,eAAO09C,CAASvyG,GACd,OAAOH,KAAKsnD,MAAU,IAAJnnD,EACpB,CACA,sBAAOwyG,CAAgBxyG,EAAG04B,EAAGkjB,EAAaC,EAAc3e,GACtD,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAIxE,EAAIkjB,EAAa57C,EAAI67C,GACnC,KAAK,IACH,MAAO,CAAC,EAAI77C,EAAI47C,EAAa,EAAIljB,EAAImjB,GACvC,KAAK,IACH,MAAO,CAACnjB,EAAIkjB,EAAa,EAAI57C,EAAI67C,GACnC,QACE,MAAO,CAAC77C,EAAI47C,EAAaljB,EAAImjB,GAEnC,CACA,0BAAO42D,CAAoBzyG,EAAG04B,EAAGwE,GAC/B,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAIxE,EAAG14B,GACjB,KAAK,IACH,MAAO,CAAC,EAAIA,EAAG,EAAI04B,GACrB,KAAK,IACH,MAAO,CAACA,EAAG,EAAI14B,GACjB,QACE,MAAO,CAACA,EAAG04B,GAEjB,CACA,yBAAOg6E,CAAmB55E,EAAIC,EAAIC,EAAIE,EAAID,EAAIE,GAC5C,MAAO,EAAEL,EAAK,EAAIE,GAAM,GAAID,EAAK,EAAIG,GAAM,GAAI,EAAIF,EAAKC,GAAM,GAAI,EAAIC,EAAKC,GAAM,GAAIH,EAAKC,GAAM,GAAIC,EAAKC,GAAM,EACjH,EAUF,MAAMw5E,GACJ,IACA,IAAU,GACV,IACA,IACA,IAAO,GACP,IAAQ,IAAI3vC,aAAa,IACzB,IACA,IACA,IACA,IACA,IACA,IACA,IAAU,GACVtnC,UAAmB,EACnBA,UAAmB,EACnBA,UAAci3E,IAAiB,GAAYA,IAAiB,GAC5D,WAAAt2G,EAAY,EACV2D,EAAC,EACD04B,GACC+O,EAAKmrE,EAAazF,EAAW7lE,EAAOurE,EAAc,GACnD/1G,MAAK,GAAO2qC,EACZ3qC,MAAK,GAAaqwG,EAAYyF,EAC9B91G,MAAK,GAASwqC,EACdxqC,MAAK,GAAM0E,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,IAAK7qC,EAAG04B,GAAI,GAC3C57B,MAAK,GAAe+1G,EACpB/1G,MAAK,GAAY61G,IAAiB,GAAYC,EAC9C91G,MAAK,GAAO61G,IAAiB,GAAOC,EACpC91G,MAAK,GAAe81G,EACpB91G,MAAK,GAAQuI,KAAKrF,EAAG04B,EACvB,CACA,OAAAwU,GACE,OAAO4+C,MAAMhvF,MAAK,GAAM,GAC1B,CACA,MACE,MAAMg2G,EAAUh2G,MAAK,GAAM42B,SAAS,EAAG,GACjCq/E,EAAaj2G,MAAK,GAAM42B,SAAS,GAAI,KACpC1zB,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,GACnC,MAAO,EAAEA,MAAK,IAAUg2G,EAAQ,GAAKC,EAAW,IAAM,EAAI/yG,GAAK89B,GAAQhhC,MAAK,IAAUg2G,EAAQ,GAAKC,EAAW,IAAM,EAAIr6E,GAAKqF,GAASjhC,MAAK,IAAUi2G,EAAW,GAAKD,EAAQ,IAAM,EAAI9yG,GAAK89B,GAAQhhC,MAAK,IAAUi2G,EAAW,GAAKD,EAAQ,IAAM,EAAIp6E,GAAKqF,EAC5P,CACA,GAAAxwB,EAAI,EACFvN,EAAC,EACD04B,IAEA57B,MAAK,GAASkD,EACdlD,MAAK,GAAS47B,EACd,MAAOuZ,EAAQC,EAAQ4hC,EAAYC,GAAej3E,MAAK,GACvD,IAAKg8B,EAAIC,EAAIC,EAAIE,GAAMp8B,MAAK,GAAM42B,SAAS,EAAG,IAC9C,MAAMs/E,EAAQhzG,EAAIg5B,EACZi6E,EAAQv6E,EAAIQ,EACZ3C,EAAI12B,KAAKihD,MAAMkyD,EAAOC,GAC5B,GAAI18E,EAAIz5B,MAAK,GACX,OAAO,EAET,MAAMo2G,EAAQ38E,EAAIz5B,MAAK,GACjBq2G,EAAID,EAAQ38E,EACZu0B,EAASqoD,EAAIH,EACbjoD,EAASooD,EAAIF,EACnB,IAAIr6E,EAAKE,EACLD,EAAKE,EACTD,EAAKE,EACLD,EAAKG,EACLF,GAAM8xB,EACN5xB,GAAM6xB,EACNjuD,MAAK,IAASuI,KAAKrF,EAAG04B,GACtB,MACM06E,EAAKtoD,EAASooD,EACdG,GAFMtoD,EAASmoD,EAEJp2G,MAAK,GAChBw2G,EAAMF,EAAKt2G,MAAK,GAKtB,GAJAA,MAAK,GAAM0E,IAAI1E,MAAK,GAAM42B,SAAS,EAAG,GAAI,GAC1C52B,MAAK,GAAM0E,IAAI,CAACw3B,EAAKq6E,EAAKn6E,EAAKo6E,GAAM,GACrCx2G,MAAK,GAAM0E,IAAI1E,MAAK,GAAM42B,SAAS,GAAI,IAAK,IAC5C52B,MAAK,GAAM0E,IAAI,CAACw3B,EAAKq6E,EAAKn6E,EAAKo6E,GAAM,IACjCxnB,MAAMhvF,MAAK,GAAM,IAQnB,OAPyB,IAArBA,MAAK,GAAKxC,SACZwC,MAAK,GAAM0E,IAAI,CAACs3B,EAAKu6E,EAAKt6E,EAAKu6E,GAAM,GACrCx2G,MAAK,GAAKuI,KAAKwlC,IAAKA,IAAKA,IAAKA,KAAM/R,EAAKu6E,EAAMphE,GAAU6hC,GAAa/6C,EAAKu6E,EAAMphE,GAAU6hC,GAC3Fj3E,MAAK,GAAM0E,IAAI,CAACs3B,EAAKu6E,EAAKt6E,EAAKu6E,GAAM,IACrCx2G,MAAK,GAAQuI,KAAKwlC,IAAKA,IAAKA,IAAKA,KAAM/R,EAAKu6E,EAAMphE,GAAU6hC,GAAa/6C,EAAKu6E,EAAMphE,GAAU6hC,IAEhGj3E,MAAK,GAAM0E,IAAI,CAACo3B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAK,IACjCp8B,KAAKowC,UAEfpwC,MAAK,GAAM0E,IAAI,CAACo3B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAK,GAEzC,OADcr5B,KAAK25B,IAAI35B,KAAK0pF,MAAM1wD,EAAKE,EAAIH,EAAKE,GAAMj5B,KAAK0pF,MAAMx+B,EAAQD,IAC7DjrD,KAAK4pF,GAAK,IACnB3wD,EAAIC,EAAIC,EAAIE,GAAMp8B,MAAK,GAAM42B,SAAS,EAAG,GAC1C52B,MAAK,GAAKuI,KAAKwlC,IAAKA,IAAKA,IAAKA,MAAO/R,EAAKE,GAAM,EAAIiZ,GAAU6hC,IAAc/6C,EAAKG,GAAM,EAAIgZ,GAAU6hC,IACpGj7C,EAAIC,EAAIH,EAAIC,GAAM/7B,MAAK,GAAM42B,SAAS,GAAI,IAC3C52B,MAAK,GAAQuI,KAAKwlC,IAAKA,IAAKA,IAAKA,MAAOjS,EAAKE,GAAM,EAAImZ,GAAU6hC,IAAcj7C,EAAKE,GAAM,EAAImZ,GAAU6hC,IACjG,KAERn7C,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,GAAMp8B,MAAK,GAAM42B,SAAS,EAAG,GAClD52B,MAAK,GAAKuI,OAAOuzB,EAAK,EAAIE,GAAM,EAAImZ,GAAU6hC,IAAcj7C,EAAK,EAAIE,GAAM,EAAImZ,GAAU6hC,IAAe,EAAIj7C,EAAKE,GAAM,EAAIiZ,GAAU6hC,IAAc,EAAI/6C,EAAKG,GAAM,EAAIgZ,GAAU6hC,IAAej7C,EAAKE,GAAM,EAAIiZ,GAAU6hC,IAAc/6C,EAAKG,GAAM,EAAIgZ,GAAU6hC,IAC9P/6C,EAAIE,EAAIJ,EAAIC,EAAIH,EAAIC,GAAM/7B,MAAK,GAAM42B,SAAS,GAAI,IACnD52B,MAAK,GAAQuI,OAAOuzB,EAAK,EAAIE,GAAM,EAAImZ,GAAU6hC,IAAcj7C,EAAK,EAAIE,GAAM,EAAImZ,GAAU6hC,IAAe,EAAIj7C,EAAKE,GAAM,EAAIiZ,GAAU6hC,IAAc,EAAI/6C,EAAKG,GAAM,EAAIgZ,GAAU6hC,IAAej7C,EAAKE,GAAM,EAAIiZ,GAAU6hC,IAAc/6C,EAAKG,GAAM,EAAIgZ,GAAU6hC,IAC3P,EACT,CACA,SAAAm+B,GACE,GAAIp1G,KAAKowC,UACP,MAAO,GAET,MAAM3H,EAAMzoC,MAAK,GACXwuD,EAASxuD,MAAK,GACpB,GAAIgvF,MAAMhvF,MAAK,GAAM,MAAQA,KAAKowC,UAChC,OAAOpwC,MAAK,KAEd,MAAMmG,EAAS,GACfA,EAAOoC,KAAK,IAAIkgC,EAAI,MAAMA,EAAI,MAC9B,IAAK,IAAI1iC,EAAI,EAAGA,EAAI0iC,EAAIjrC,OAAQuI,GAAK,EAC/BipF,MAAMvmD,EAAI1iC,IACZI,EAAOoC,KAAK,IAAIkgC,EAAI1iC,EAAI,MAAM0iC,EAAI1iC,EAAI,MAEtCI,EAAOoC,KAAK,IAAIkgC,EAAI1iC,MAAM0iC,EAAI1iC,EAAI,MAAM0iC,EAAI1iC,EAAI,MAAM0iC,EAAI1iC,EAAI,MAAM0iC,EAAI1iC,EAAI,MAAM0iC,EAAI1iC,EAAI,MAG9F/F,MAAK,GAAcmG,GACnB,IAAK,IAAIJ,EAAIyoD,EAAOhxD,OAAS,EAAGuI,GAAK,EAAGA,GAAK,EACvCipF,MAAMxgC,EAAOzoD,IACfI,EAAOoC,KAAK,IAAIimD,EAAOzoD,EAAI,MAAMyoD,EAAOzoD,EAAI,MAE5CI,EAAOoC,KAAK,IAAIimD,EAAOzoD,MAAMyoD,EAAOzoD,EAAI,MAAMyoD,EAAOzoD,EAAI,MAAMyoD,EAAOzoD,EAAI,MAAMyoD,EAAOzoD,EAAI,MAAMyoD,EAAOzoD,EAAI,MAIhH,OADA/F,MAAK,GAAgBmG,GACdA,EAAOxH,KAAK,IACrB,CACA,MACE,MAAOuE,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,IAC5By2G,EAAUC,EAAUC,EAAaC,GAAe52G,MAAK,KAC5D,MAAO,KAAKA,MAAK,GAAM,GAAKkD,GAAK89B,MAAUhhC,MAAK,GAAM,GAAK47B,GAAKqF,OAAYjhC,MAAK,GAAM,GAAKkD,GAAK89B,MAAUhhC,MAAK,GAAM,GAAK47B,GAAKqF,MAAWw1E,KAAYC,MAAaC,KAAeC,OAAiB52G,MAAK,GAAM,IAAMkD,GAAK89B,MAAUhhC,MAAK,GAAM,IAAM47B,GAAKqF,OAAYjhC,MAAK,GAAM,IAAMkD,GAAK89B,MAAUhhC,MAAK,GAAM,IAAM47B,GAAKqF,KAC9T,CACA,IAAgB96B,GACd,MAAMqoD,EAASxuD,MAAK,GACpBmG,EAAOoC,KAAK,IAAIimD,EAAO,MAAMA,EAAO,OACtC,CACA,IAAcroD,GACZ,MAAOjD,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,GAC7Bg2G,EAAUh2G,MAAK,GAAM42B,SAAS,EAAG,GACjCq/E,EAAaj2G,MAAK,GAAM42B,SAAS,GAAI,KACpC6/E,EAAUC,EAAUC,EAAaC,GAAe52G,MAAK,KAC5DmG,EAAOoC,KAAK,KAAKytG,EAAQ,GAAK9yG,GAAK89B,MAAUg1E,EAAQ,GAAKp6E,GAAKqF,MAAWw1E,KAAYC,MAAaC,KAAeC,OAAiBX,EAAW,GAAK/yG,GAAK89B,MAAUi1E,EAAW,GAAKr6E,GAAKqF,IACzL,CACA,kBAAA41E,CAAmBC,EAAS5G,EAAQvlE,EAAKmrE,EAAaC,EAAavrE,GACjE,OAAO,IAAIusE,GAAgBD,EAAS5G,EAAQvlE,EAAKmrE,EAAaC,EAAavrE,EAC7E,CACA,WAAAwsE,GACE,MAAMvuE,EAAMzoC,MAAK,GACXwuD,EAASxuD,MAAK,GACdi3G,EAAOj3G,MAAK,IACXm1C,EAAQC,EAAQ4hC,EAAYC,GAAej3E,MAAK,GACjDkwG,EAAS,IAAIhqC,cAAclmE,MAAK,IAASxC,QAAU,GAAK,GAC9D,IAAK,IAAIuI,EAAI,EAAGi8B,EAAKkuE,EAAO1yG,OAAS,EAAGuI,EAAIi8B,EAAIj8B,GAAK,EACnDmqG,EAAOnqG,IAAM/F,MAAK,GAAQ+F,GAAKovC,GAAU6hC,EACzCk5B,EAAOnqG,EAAI,IAAM/F,MAAK,GAAQ+F,EAAI,GAAKqvC,GAAU6hC,EAInD,GAFAi5B,EAAOA,EAAO1yG,OAAS,IAAMwC,MAAK,GAASm1C,GAAU6hC,EACrDk5B,EAAOA,EAAO1yG,OAAS,IAAMwC,MAAK,GAASo1C,GAAU6hC,EACjD+X,MAAMioB,EAAK,MAAQj3G,KAAKowC,UAC1B,OAAOpwC,MAAK,GAAqBkwG,GAEnC,MAAM4G,EAAU,IAAI5wC,aAAalmE,MAAK,GAAKxC,OAAS,GAAKwC,MAAK,GAAQxC,QACtE,IAAI05G,EAAIzuE,EAAIjrC,OACZ,IAAK,IAAIuI,EAAI,EAAGA,EAAImxG,EAAGnxG,GAAK,EACtBipF,MAAMvmD,EAAI1iC,IACZ+wG,EAAQ/wG,GAAK+wG,EAAQ/wG,EAAI,GAAKgoC,KAGhC+oE,EAAQ/wG,GAAK0iC,EAAI1iC,GACjB+wG,EAAQ/wG,EAAI,GAAK0iC,EAAI1iC,EAAI,IAE3BmxG,EAAIl3G,MAAK,GAAe82G,EAASI,GACjC,IAAK,IAAInxG,EAAIyoD,EAAOhxD,OAAS,EAAGuI,GAAK,EAAGA,GAAK,EAC3C,IAAK,IAAIie,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBgrE,MAAMxgC,EAAOzoD,EAAIie,KACnB8yF,EAAQI,GAAKJ,EAAQI,EAAI,GAAKnpE,IAC9BmpE,GAAK,IAGPJ,EAAQI,GAAK1oD,EAAOzoD,EAAIie,GACxB8yF,EAAQI,EAAI,GAAK1oD,EAAOzoD,EAAIie,EAAI,GAChCkzF,GAAK,GAIT,OADAl3G,MAAK,GAAiB82G,EAASI,GACxBl3G,KAAK62G,mBAAmBC,EAAS5G,EAAQlwG,MAAK,GAAMA,MAAK,GAAcA,MAAK,GAAcA,MAAK,GACxG,CACA,IAAqBkwG,GACnB,MAAM+G,EAAOj3G,MAAK,IACXm1C,EAAQC,EAAQ4hC,EAAYC,GAAej3E,MAAK,IAChDy2G,EAAUC,EAAUC,EAAaC,GAAe52G,MAAK,KACtD82G,EAAU,IAAI5wC,aAAa,IAEjC,OADA4wC,EAAQpyG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,KAAMkpE,EAAK,GAAK9hE,GAAU6hC,GAAaigC,EAAK,GAAK7hE,GAAU6hC,EAAalpC,IAAKA,IAAKA,IAAKA,KAAMkpE,EAAK,GAAK9hE,GAAU6hC,GAAaigC,EAAK,GAAK7hE,GAAU6hC,EAAalpC,IAAKA,IAAKA,IAAKA,IAAK0oE,EAAUC,EAAU3oE,IAAKA,IAAKA,IAAKA,IAAK4oE,EAAaC,EAAa7oE,IAAKA,IAAKA,IAAKA,KAAMkpE,EAAK,IAAM9hE,GAAU6hC,GAAaigC,EAAK,IAAM7hE,GAAU6hC,EAAalpC,IAAKA,IAAKA,IAAKA,KAAMkpE,EAAK,IAAM9hE,GAAU6hC,GAAaigC,EAAK,IAAM7hE,GAAU6hC,GAAc,GAC7bj3E,KAAK62G,mBAAmBC,EAAS5G,EAAQlwG,MAAK,GAAMA,MAAK,GAAcA,MAAK,GAAcA,MAAK,GACxG,CACA,IAAiB82G,EAASh+E,GACxB,MAAM01B,EAASxuD,MAAK,GAEpB,OADA82G,EAAQpyG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,IAAKygB,EAAO,GAAIA,EAAO,IAAK11B,GACjDA,EAAO,CAChB,CACA,IAAeg+E,EAASh+E,GACtB,MAAMk9E,EAAUh2G,MAAK,GAAM42B,SAAS,EAAG,GACjCq/E,EAAaj2G,MAAK,GAAM42B,SAAS,GAAI,KACpCue,EAAQC,EAAQ4hC,EAAYC,GAAej3E,MAAK,IAChDy2G,EAAUC,EAAUC,EAAaC,GAAe52G,MAAK,KAE5D,OADA82G,EAAQpyG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,KAAMioE,EAAQ,GAAK7gE,GAAU6hC,GAAag/B,EAAQ,GAAK5gE,GAAU6hC,EAAalpC,IAAKA,IAAKA,IAAKA,IAAK0oE,EAAUC,EAAU3oE,IAAKA,IAAKA,IAAKA,IAAK4oE,EAAaC,EAAa7oE,IAAKA,IAAKA,IAAKA,KAAMkoE,EAAW,GAAK9gE,GAAU6hC,GAAai/B,EAAW,GAAK7gE,GAAU6hC,GAAcn+C,GAC7RA,EAAO,EAChB,EAEF,MAAMi+E,WAAwB5B,GAC5B,IACA,IAAQ,IAAIjvC,aAAa,GACzB,IACA,IACA,IACA,IACA,IACA,WAAA3mE,CAAYu3G,EAAS5G,EAAQvlE,EAAKmrE,EAAaC,EAAavrE,GAC1DzU,QACA/1B,MAAK,GAAW82G,EAChB92G,MAAK,GAAUkwG,EACflwG,MAAK,GAAO2qC,EACZ3qC,MAAK,GAAe81G,EACpB91G,MAAK,GAAe+1G,EACpB/1G,MAAK,GAASwqC,EACdxqC,KAAKm3G,UAAY,CAACppE,IAAKA,KACvB/tC,MAAK,GAAewqC,GACpB,MAAOtnC,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,GACnC,IAAK,IAAI+F,EAAI,EAAGi8B,EAAK80E,EAAQt5G,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAChD+wG,EAAQ/wG,IAAM+wG,EAAQ/wG,GAAK7C,GAAK89B,EAChC81E,EAAQ/wG,EAAI,IAAM+wG,EAAQ/wG,EAAI,GAAK61B,GAAKqF,EAE1C,IAAK,IAAIl7B,EAAI,EAAGi8B,EAAKkuE,EAAO1yG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC/CmqG,EAAOnqG,IAAMmqG,EAAOnqG,GAAK7C,GAAK89B,EAC9BkvE,EAAOnqG,EAAI,IAAMmqG,EAAOnqG,EAAI,GAAK61B,GAAKqF,CAE1C,CACA,SAAAm0E,GACE,MAAMjvG,EAAS,CAAC,IAAInG,MAAK,GAAS,MAAMA,MAAK,GAAS,MACtD,IAAK,IAAI+F,EAAI,EAAGi8B,EAAKhiC,MAAK,GAASxC,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAClDipF,MAAMhvF,MAAK,GAAS+F,IACtBI,EAAOoC,KAAK,IAAIvI,MAAK,GAAS+F,EAAI,MAAM/F,MAAK,GAAS+F,EAAI,MAG5DI,EAAOoC,KAAK,IAAIvI,MAAK,GAAS+F,MAAM/F,MAAK,GAAS+F,EAAI,MAAM/F,MAAK,GAAS+F,EAAI,MAAM/F,MAAK,GAAS+F,EAAI,MAAM/F,MAAK,GAAS+F,EAAI,MAAM/F,MAAK,GAAS+F,EAAI,MAGxJ,OADAI,EAAOoC,KAAK,KACLpC,EAAOxH,KAAK,IACrB,CACA,SAAA+5C,EAAW2sD,EAAKC,EAAKH,EAAKC,GAAMhlE,GAC9B,MAAMY,EAAQmkE,EAAME,EACdpkE,EAASmkE,EAAME,EACrB,IAAIwR,EACA5G,EACJ,OAAQ9vE,GACN,KAAK,EACH02E,EAAU3B,GAAQG,SAASt1G,MAAK,GAAUqlG,EAAKD,EAAKpkE,GAAQC,GAC5DivE,EAASiF,GAAQG,SAASt1G,MAAK,GAASqlG,EAAKD,EAAKpkE,GAAQC,GAC1D,MACF,KAAK,GACH61E,EAAU3B,GAAQI,gBAAgBv1G,MAAK,GAAUqlG,EAAKC,EAAKtkE,EAAOC,GAClEivE,EAASiF,GAAQI,gBAAgBv1G,MAAK,GAASqlG,EAAKC,EAAKtkE,EAAOC,GAChE,MACF,KAAK,IACH61E,EAAU3B,GAAQG,SAASt1G,MAAK,GAAUmlG,EAAKG,GAAMtkE,EAAOC,GAC5DivE,EAASiF,GAAQG,SAASt1G,MAAK,GAASmlG,EAAKG,GAAMtkE,EAAOC,GAC1D,MACF,KAAK,IACH61E,EAAU3B,GAAQI,gBAAgBv1G,MAAK,GAAUmlG,EAAKC,GAAMpkE,GAAQC,GACpEivE,EAASiF,GAAQI,gBAAgBv1G,MAAK,GAASmlG,EAAKC,GAAMpkE,GAAQC,GAGtE,MAAO,CACL61E,QAAShoG,MAAMqR,KAAK22F,GACpB5G,OAAQ,CAACphG,MAAMqR,KAAK+vF,IAExB,CACA,IAAe1lE,GACb,MAAMssE,EAAU92G,MAAK,GACrB,IAAI0qC,EAAQosE,EAAQ,GAChBrsE,EAAQqsE,EAAQ,GACpB,MAAMr+E,EAAS,CAACiS,EAAOD,EAAOC,EAAOD,GACrC,IAAI2sE,EAAa1sE,EACb2sE,EAAa5sE,EACjB,MAAM6sE,EAAc9sE,EAAQznC,KAAKkO,IAAMlO,KAAKiG,IAC5C,IAAK,IAAIjD,EAAI,EAAGi8B,EAAK80E,EAAQt5G,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACnD,MAAM7C,EAAI4zG,EAAQ/wG,EAAI,GACpB61B,EAAIk7E,EAAQ/wG,EAAI,GAClB,GAAIipF,MAAM8nB,EAAQ/wG,IAChBqyB,GAAKuD,iBAAiBz4B,EAAG04B,EAAGnD,GACxB4+E,EAAaz7E,GACfw7E,EAAal0G,EACbm0G,EAAaz7E,GACJy7E,IAAez7E,IACxBw7E,EAAaE,EAAYF,EAAYl0G,QAElC,CACL,MAAMu9D,EAAO,CAACjqD,IAAUA,KAAWA,KAAWA,KAC9C4hB,GAAKyE,kBAAkB6N,EAAOD,KAAUqsE,EAAQr4G,MAAMsH,EAAGA,EAAI,GAAI06D,GACjEroC,GAAKyD,mBAAmB4kC,EAAMhoC,GAC1B4+E,EAAa52C,EAAK,IACpB22C,EAAa32C,EAAK,GAClB42C,EAAa52C,EAAK,IACT42C,IAAe52C,EAAK,KAC7B22C,EAAaE,EAAYF,EAAY32C,EAAK,IAE9C,CACA/1B,EAAQxnC,EACRunC,EAAQ7O,CACV,CACA,MAAM6kC,EAAOzgE,MAAK,GAClBygE,EAAK,GAAKhoC,EAAO,GAAKz4B,MAAK,GAC3BygE,EAAK,GAAKhoC,EAAO,GAAKz4B,MAAK,GAC3BygE,EAAK,GAAKhoC,EAAO,GAAKA,EAAO,GAAK,EAAIz4B,MAAK,GAC3CygE,EAAK,GAAKhoC,EAAO,GAAKA,EAAO,GAAK,EAAIz4B,MAAK,GAC3CA,KAAKm3G,UAAY,CAACC,EAAYC,EAChC,CACA,OAAI1sE,GACF,OAAO3qC,MAAK,EACd,CACA,WAAAu3G,CAAYvsD,EAAOrgB,EAAKmrE,EAAazF,EAAW7lE,EAAOurE,EAAc,GACnE,OAAO,IAAIF,GAAiB7qD,EAAOrgB,EAAKmrE,EAAazF,EAAW7lE,EAAOurE,EACzE,CACA,aAAAyB,CAAcnH,EAAW0F,GACvB,MAAO7yG,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,IAC5Bm1C,EAAQC,EAAQ4hC,EAAYC,GAAej3E,MAAK,GACjDmmC,EAAKnF,EAAQg2C,EACb5wC,EAAKnF,EAASg2C,EACdh5B,EAAK/6C,EAAI8zE,EAAa7hC,EACtB+I,EAAKtiB,EAAIq7C,EAAc7hC,EACvBqiE,EAAWz3G,KAAKu3G,YAAY,CAChCr0G,EAAGlD,MAAK,GAAQ,GAAKmmC,EAAK8X,EAC1BriB,EAAG57B,MAAK,GAAQ,GAAKomC,EAAK8X,GACzBl+C,MAAK,GAAMA,MAAK,GAAcqwG,EAAWrwG,MAAK,GAAQ+1G,GAAe/1G,MAAK,IAC7E,IAAK,IAAI+F,EAAI,EAAGA,EAAI/F,MAAK,GAAQxC,OAAQuI,GAAK,EAC5C0xG,EAAShnG,IAAI,CACXvN,EAAGlD,MAAK,GAAQ+F,GAAKogC,EAAK8X,EAC1BriB,EAAG57B,MAAK,GAAQ+F,EAAI,GAAKqgC,EAAK8X,IAGlC,OAAOu5D,EAAST,aAClB,EAkBF,MAAMU,GACJ,IACA,IACA,IAAiB,GACjB,IAAa,GACb,WAAAn4G,CAAYgrC,EAAO44D,EAAc,EAAG4S,EAAc,EAAGvrE,GAAQ,GAC3D,MAAM/R,EAAS,CAACjiB,IAAUA,KAAWA,KAAWA,KAE1CmhG,EAAU,KADS,EAEzB,IAAK,MAAM,EACTz0G,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,KACGsJ,EAAO,CACV,MAAMvO,EAAKj5B,KAAKC,OAAOE,EAAIigG,GAAewU,GAAWA,EAC/Cz7E,EAAKn5B,KAAKD,MAAMI,EAAI89B,EAAQmiE,GAAewU,GAAWA,EACtD17E,EAAKl5B,KAAKC,OAAO44B,EAAIunE,GAAewU,GAAWA,EAC/Cv7E,EAAKr5B,KAAKD,MAAM84B,EAAIqF,EAASkiE,GAAewU,GAAWA,EACvDnvD,EAAO,CAACxsB,EAAIC,EAAIG,GAAI,GACpBqyB,EAAQ,CAACvyB,EAAID,EAAIG,GAAI,GAC3Bp8B,MAAK,GAAeuI,KAAKigD,EAAMiG,GAC/Br2B,GAAKyD,gBAAgBG,EAAIC,EAAIC,EAAIE,EAAI3D,EACvC,CACA,MAAMkwC,EAAYlwC,EAAO,GAAKA,EAAO,GAAK,EAAIs9E,EACxCntC,EAAanwC,EAAO,GAAKA,EAAO,GAAK,EAAIs9E,EACzC6B,EAAcn/E,EAAO,GAAKs9E,EAC1B8B,EAAcp/E,EAAO,GAAKs9E,EAC1B+B,EAAW93G,MAAK,GAAe+gB,GAAGypB,GAAS,GAAK,GAChD2sE,EAAY,CAACW,EAAS,GAAIA,EAAS,IACzC,IAAK,MAAMC,KAAQ/3G,MAAK,GAAgB,CACtC,MAAOkD,EAAG+4B,EAAIG,GAAM27E,EACpBA,EAAK,IAAM70G,EAAI00G,GAAejvC,EAC9BovC,EAAK,IAAM97E,EAAK47E,GAAejvC,EAC/BmvC,EAAK,IAAM37E,EAAKy7E,GAAejvC,CACjC,CACA5oE,MAAK,GAAO,IAAIkmE,aAAa,CAAC0xC,EAAaC,EAAalvC,EAAWC,IACnE5oE,MAAK,GAAam3G,CACpB,CACA,WAAAH,GACEh3G,MAAK,GAAewe,MAAK,CAACnD,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,KAC1E,MAAM08F,EAAuB,GAC7B,IAAK,MAAMD,KAAQ/3G,MAAK,GAClB+3G,EAAK,IACPC,EAAqBzvG,QAAQvI,MAAK,GAAW+3G,IAC7C/3G,MAAK,GAAQ+3G,KAEb/3G,MAAK,GAAQ+3G,GACbC,EAAqBzvG,QAAQvI,MAAK,GAAW+3G,KAGjD,OAAO/3G,MAAK,GAAag4G,EAC3B,CACA,IAAaA,GACX,MAAMC,EAAQ,GACRC,EAAW,IAAI1lG,IACrB,IAAK,MAAMulG,KAAQC,EAAsB,CACvC,MAAO90G,EAAG+4B,EAAIG,GAAM27E,EACpBE,EAAM1vG,KAAK,CAACrF,EAAG+4B,EAAI87E,GAAO,CAAC70G,EAAGk5B,EAAI27E,GACpC,CACAE,EAAMz5F,MAAK,CAACnD,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAAMD,EAAE,GAAKC,EAAE,KAC7C,IAAK,IAAIvV,EAAI,EAAGi8B,EAAKi2E,EAAMz6G,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACjD,MAAMoyG,EAAQF,EAAMlyG,GAAG,GACjBqyG,EAAQH,EAAMlyG,EAAI,GAAG,GAC3BoyG,EAAM5vG,KAAK6vG,GACXA,EAAM7vG,KAAK4vG,GACXD,EAASznG,IAAI0nG,GACbD,EAASznG,IAAI2nG,EACf,CACA,MAAMC,EAAW,GACjB,IAAIvB,EACJ,KAAOoB,EAASroG,KAAO,GAAG,CACxB,MAAMkoG,EAAOG,EAASn5F,SAASje,OAAOjC,MACtC,IAAKqE,EAAG+4B,EAAIG,EAAI+7E,EAAOC,GAASL,EAChCG,EAAS7uE,OAAO0uE,GAChB,IAAIX,EAAal0G,EACbm0G,EAAap7E,EAGjB,IAFA66E,EAAU,CAAC5zG,EAAGk5B,GACdi8E,EAAS9vG,KAAKuuG,KACD,CACX,IAAI1mG,EACJ,GAAI8nG,EAASvzG,IAAIwzG,GACf/nG,EAAI+nG,MACC,KAAID,EAASvzG,IAAIyzG,GAGtB,MAFAhoG,EAAIgoG,CAGN,CACAF,EAAS7uE,OAAOj5B,IACflN,EAAG+4B,EAAIG,EAAI+7E,EAAOC,GAAShoG,EACxBgnG,IAAel0G,IACjB4zG,EAAQvuG,KAAK6uG,EAAYC,EAAYn0G,EAAGm0G,IAAep7E,EAAKA,EAAKG,GACjEg7E,EAAal0G,GAEfm0G,EAAaA,IAAep7E,EAAKG,EAAKH,CACxC,CACA66E,EAAQvuG,KAAK6uG,EAAYC,EAC3B,CACA,OAAO,IAAIiB,GAAiBD,EAAUr4G,MAAK,GAAMA,MAAK,GACxD,CACA,IAAc47B,GACZ,MAAMtY,EAAQtjB,MAAK,GACnB,IAAIwjB,EAAQ,EACRjC,EAAM+B,EAAM9lB,OAAS,EACzB,KAAOgmB,GAASjC,GAAK,CACnB,MAAMg3F,EAAS/0F,EAAQjC,GAAO,EACxB0a,EAAK3Y,EAAMi1F,GAAQ,GACzB,GAAIt8E,IAAOL,EACT,OAAO28E,EAELt8E,EAAKL,EACPpY,EAAQ+0F,EAAS,EAEjBh3F,EAAMg3F,EAAS,CAEnB,CACA,OAAOh3F,EAAM,CACf,CACA,KAAS,CAAE0a,EAAIG,IACb,MAAMjwB,EAAQnM,MAAK,GAAci8B,GACjCj8B,MAAK,GAAWkuC,OAAO/hC,EAAO,EAAG,CAAC8vB,EAAIG,GACxC,CACA,KAAS,CAAEH,EAAIG,IACb,MAAMjwB,EAAQnM,MAAK,GAAci8B,GACjC,IAAK,IAAIl2B,EAAIoG,EAAOpG,EAAI/F,MAAK,GAAWxC,OAAQuI,IAAK,CACnD,MAAOyd,EAAOjC,GAAOvhB,MAAK,GAAW+F,GACrC,GAAIyd,IAAUyY,EACZ,MAEF,GAAIzY,IAAUyY,GAAM1a,IAAQ6a,EAE1B,YADAp8B,MAAK,GAAWkuC,OAAOnoC,EAAG,EAG9B,CACA,IAAK,IAAIA,EAAIoG,EAAQ,EAAGpG,GAAK,EAAGA,IAAK,CACnC,MAAOyd,EAAOjC,GAAOvhB,MAAK,GAAW+F,GACrC,GAAIyd,IAAUyY,EACZ,MAEF,GAAIzY,IAAUyY,GAAM1a,IAAQ6a,EAE1B,YADAp8B,MAAK,GAAWkuC,OAAOnoC,EAAG,EAG9B,CACF,CACA,IAAWgyG,GACT,MAAO70G,EAAG+4B,EAAIG,GAAM27E,EACdjd,EAAU,CAAC,CAAC53F,EAAG+4B,EAAIG,IACnBjwB,EAAQnM,MAAK,GAAco8B,GACjC,IAAK,IAAIr2B,EAAI,EAAGA,EAAIoG,EAAOpG,IAAK,CAC9B,MAAOyd,EAAOjC,GAAOvhB,MAAK,GAAW+F,GACrC,IAAK,IAAIie,EAAI,EAAGwkD,EAAKsyB,EAAQt9F,OAAQwmB,EAAIwkD,EAAIxkD,IAAK,CAChD,MAAO,CAAEqY,EAAIm8E,GAAM1d,EAAQ92E,GAC3B,KAAIzC,GAAO8a,GAAMm8E,GAAMh1F,GAGvB,GAAI6Y,GAAM7Y,EACR,GAAIg1F,EAAKj3F,EACPu5E,EAAQ92E,GAAG,GAAKzC,MACX,CACL,GAAW,IAAPinD,EACF,MAAO,GAETsyB,EAAQ5sD,OAAOlqB,EAAG,GAClBA,IACAwkD,GACF,MAGFsyB,EAAQ92E,GAAG,GAAKR,EACZg1F,EAAKj3F,GACPu5E,EAAQvyF,KAAK,CAACrF,EAAGqe,EAAKi3F,GAE1B,CACF,CACA,OAAO1d,CACT,EAEF,MAAMwd,WAAyBnD,GAC7B,IACA,IACA,WAAA51G,CAAY84G,EAAU1tE,EAAKwsE,GACzBphF,QACA/1B,MAAK,GAAYq4G,EACjBr4G,MAAK,GAAO2qC,EACZ3qC,KAAKm3G,UAAYA,CACnB,CACA,SAAA/B,GACE,MAAMjvG,EAAS,GACf,IAAK,MAAMsyG,KAAWz4G,MAAK,GAAW,CACpC,IAAK04G,EAAOC,GAASF,EACrBtyG,EAAOoC,KAAK,IAAImwG,KAASC,KACzB,IAAK,IAAI5yG,EAAI,EAAGA,EAAI0yG,EAAQj7G,OAAQuI,GAAK,EAAG,CAC1C,MAAM7C,EAAIu1G,EAAQ1yG,GACZ61B,EAAI68E,EAAQ1yG,EAAI,GAClB7C,IAAMw1G,GACRvyG,EAAOoC,KAAK,IAAIqzB,KAChB+8E,EAAQ/8E,GACCA,IAAM+8E,IACfxyG,EAAOoC,KAAK,IAAIrF,KAChBw1G,EAAQx1G,EAEZ,CACAiD,EAAOoC,KAAK,IACd,CACA,OAAOpC,EAAOxH,KAAK,IACrB,CACA,SAAA+5C,EAAW2sD,EAAKC,EAAKH,EAAKC,GAAMiQ,GAC9B,MAAMgD,EAAW,GACXr3E,EAAQmkE,EAAME,EACdpkE,EAASmkE,EAAME,EACrB,IAAK,MAAMwR,KAAW92G,MAAK,GAAW,CACpC,MAAMkwG,EAAS,IAAIphG,MAAMgoG,EAAQt5G,QACjC,IAAK,IAAIuI,EAAI,EAAGA,EAAI+wG,EAAQt5G,OAAQuI,GAAK,EACvCmqG,EAAOnqG,GAAKs/F,EAAMyR,EAAQ/wG,GAAKi7B,EAC/BkvE,EAAOnqG,EAAI,GAAKq/F,EAAM0R,EAAQ/wG,EAAI,GAAKk7B,EAEzCo3E,EAAS9vG,KAAK2nG,EAChB,CACA,OAAOmI,CACT,CACA,OAAI1tE,GACF,OAAO3qC,MAAK,EACd,CACA,0BAAI44G,GACF,MAAO,CAAC,mBACV,EAEF,MAAMC,WAA8BhD,GAClC,kBAAAgB,CAAmBC,EAAS5G,EAAQvlE,EAAKmrE,EAAaC,EAAavrE,GACjE,OAAO,IAAIsuE,GAAqBhC,EAAS5G,EAAQvlE,EAAKmrE,EAAaC,EAAavrE,EAClF,EAEF,MAAMsuE,WAA6B/B,GACjC,WAAAQ,CAAYvsD,EAAOrgB,EAAKmrE,EAAazF,EAAW7lE,EAAOurE,EAAc,GACnE,OAAO,IAAI8C,GAAsB7tD,EAAOrgB,EAAKmrE,EAAazF,EAAW7lE,EAAOurE,EAC9E,EAOF,MAAMgD,GACJ,IAAU,KACV,IAAgB,KAChB,IACA,IAAY,KACZ,KAA2B,EAC3B,KAAqB,EACrB,GAAU,KACV,IACA,IAAkB,KAClB,GAAa,KACb,IACAn6E,UAAoB,KACpB,2BAAW2R,GACT,OAAO9a,EAAOz1B,KAAM,mBAAoB,IAAIuuC,GAAgB,CAAC,CAAC,CAAC,SAAU,cAAewqE,GAAYt5G,UAAUu5G,2BAA4B,CAAC,CAAC,IAAK,SAAUD,GAAYt5G,UAAUw5G,0BAA2B,CAAC,CAAC,YAAa,aAAc,gBAAiB,kBAAmBF,GAAYt5G,UAAUy5G,aAAc,CAAC,CAAC,UAAW,YAAa,cAAe,iBAAkBH,GAAYt5G,UAAU05G,iBAAkB,CAAC,CAAC,OAAQ,YAAaJ,GAAYt5G,UAAU25G,kBAAmB,CAAC,CAAC,MAAO,WAAYL,GAAYt5G,UAAU45G,cACjgB,CACA,WAAA95G,EAAY,OACVgoC,EAAS,KAAI,UACb+C,EAAY,OAER/C,GACFvnC,MAAK,IAAqB,EAC1BA,MAAK,GAAQqqB,EAA2BS,gBACxC9qB,MAAK,EAAUunC,IAEfvnC,MAAK,IAAqB,EAC1BA,MAAK,GAAQqqB,EAA2BU,yBAE1C/qB,MAAK,EAAaunC,GAAQU,YAAcqC,EACxCtqC,MAAK,GAAYA,MAAK,EAAWwyC,UACjCxyC,MAAK,GAAgBunC,GAAQxC,OAAOmP,eAAiBl0C,MAAK,GAAYiyC,gBAAgBlzB,SAASje,OAAOjC,OAAS,UAC/Gk6G,IAAY,KAAex6G,OAAOipC,OAAO,CACvC8xE,KAAM,gCACNC,MAAO,iCACPC,KAAM,gCACNC,IAAK,+BACLC,OAAQ,mCAEZ,CACA,YAAA/vE,GACE,MAAMR,EAASnpC,MAAK,GAAU4K,SAAS0G,cAAc,UACrD63B,EAAOf,UAAY,cACnBe,EAAOC,SAAW,IAClBD,EAAOnD,aAAa,eAAgB,mCACpCmD,EAAOolE,aAAe,OAClBvuG,MAAK,IACPmpC,EAAOwwE,aAAe,GAAG35G,MAAK,EAAQwP,2BAExC,MAAM6uB,EAASr+B,MAAK,EAAWkoC,QAC/BiB,EAAO1K,iBAAiB,QAASz+B,MAAK,GAAcsC,KAAKtC,MAAO,CAC9Dq+B,WAEF8K,EAAO1K,iBAAiB,UAAWz+B,MAAK,GAASsC,KAAKtC,MAAO,CAC3Dq+B,WAEF,MAAMu7E,EAAS55G,MAAK,GAAgB4K,SAAS0G,cAAc,QAK3D,OAJAsoG,EAAOxxE,UAAY,SACnBwxE,EAAOC,WAAa,OACpBD,EAAO9uG,MAAM46D,gBAAkB1lE,MAAK,GACpCmpC,EAAO70B,OAAOslG,GACPzwE,CACT,CACA,kBAAA2wE,GACE,MAAMC,EAAW/5G,MAAK,GAAYA,MAAK,KAGvC,OAFA+5G,EAASC,gBAAkB,aAC3BD,EAASE,eAAiB,4BACnBF,CACT,CACA,MACE,MAAMx0E,EAAM36B,SAAS0G,cAAc,OAC7B+sB,EAASr+B,MAAK,EAAWkoC,QAC/B3C,EAAI9G,iBAAiB,cAAeiF,GAAe,CACjDrF,WAEFkH,EAAI6C,UAAY,WAChB7C,EAAIigE,KAAO,UACXjgE,EAAI20E,oBAAsB,QAC1B30E,EAAIy0E,gBAAkB,WACtBz0E,EAAIS,aAAa,eAAgB,qCAC7BhmC,MAAK,IACPulC,EAAI/1B,GAAK,GAAGxP,MAAK,EAAQwP,2BAE3B,IAAK,MAAOvQ,EAAM8lC,KAAU/kC,MAAK,EAAWiyC,gBAAiB,CAC3D,MAAM9I,EAASv+B,SAAS0G,cAAc,UACtC63B,EAAOC,SAAW,IAClBD,EAAOq8D,KAAO,SACdr8D,EAAOnD,aAAa,aAAcjB,GAClCoE,EAAOgB,MAAQlrC,EACfkqC,EAAOnD,aAAa,eAAgB+yE,IAAY,GAAW95G,IAC3D,MAAM26G,EAAShvG,SAAS0G,cAAc,QACtC63B,EAAO70B,OAAOslG,GACdA,EAAOxxE,UAAY,SACnBwxE,EAAO9uG,MAAM46D,gBAAkB3gC,EAC/BoE,EAAOgxE,aAAep1E,IAAU/kC,MAAK,GACrCmpC,EAAO1K,iBAAiB,QAASz+B,MAAK,GAAasC,KAAKtC,KAAM+kC,GAAQ,CACpE1G,WAEFkH,EAAIjxB,OAAO60B,EACb,CAIA,OAHA5D,EAAI9G,iBAAiB,UAAWz+B,MAAK,GAASsC,KAAKtC,MAAO,CACxDq+B,WAEKkH,CACT,CACA,IAAaR,EAAO4J,GAClBA,EAAM9K,kBACN7jC,MAAK,GAAU60C,SAAS,+BAAgC,CACtDh1C,OAAQG,KACR2F,KAAM3F,MAAK,GACXnB,MAAOkmC,GAEX,CACA,wBAAAk0E,CAAyBtqE,GACvB,GAAIA,EAAM3sC,SAAWhC,MAAK,GAExB,YADAA,MAAK,GAAc2uC,GAGrB,MAAM5J,EAAQ4J,EAAM3sC,OAAOi9C,aAAa,cACnCla,GAGL/kC,MAAK,GAAa+kC,EAAO4J,EAC3B,CACA,WAAAuqE,CAAYvqE,GACL3uC,MAAK,GAIN2uC,EAAM3sC,SAAWhC,MAAK,GAI1B2uC,EAAM3sC,OAAOo4G,aAAanlE,QAHxBj1C,MAAK,GAAUyvD,YAAYxa,QAJ3Bj1C,MAAK,GAAc2uC,EAQvB,CACA,eAAAwqE,CAAgBxqE,GACVA,EAAM3sC,SAAWhC,MAAK,IAAWyvD,YAAc9gB,EAAM3sC,SAAWhC,MAAK,IAMpEA,MAAK,IACRA,MAAK,GAAc2uC,GAErBA,EAAM3sC,OAAOinG,iBAAiBh0D,SARxBj1C,MAAK,IACPA,KAAKg5G,2BAQX,CACA,gBAAAI,CAAiBzqE,GACV3uC,MAAK,GAIVA,MAAK,GAAUyvD,YAAYxa,QAHzBj1C,MAAK,GAAc2uC,EAIvB,CACA,UAAA0qE,CAAW1qE,GACJ3uC,MAAK,GAIVA,MAAK,GAAU0vD,WAAWza,QAHxBj1C,MAAK,GAAc2uC,EAIvB,CACA,IAASA,GACPoqE,GAAYxoE,iBAAiBtsC,KAAKjE,KAAM2uC,EAC1C,CACA,IAAcA,GACZ,GAAI3uC,MAAK,GAEP,YADAA,KAAK8oC,eAWP,GARA9oC,MAAK,GAA4C,IAAjB2uC,EAAMq1D,OACjChkG,MAAK,KACRA,MAAK,GAAkB,IAAIo+B,gBAC3BjsB,OAAOssB,iBAAiB,cAAez+B,MAAK,EAAasC,KAAKtC,MAAO,CACnEq+B,OAAQr+B,MAAK,EAAW0zC,eAAe1zC,MAAK,OAGhDA,MAAK,GAAQq6G,aAAe,OACxBr6G,MAAK,GAEP,YADAA,MAAK,GAAUgoC,UAAU/3B,OAAO,UAGlC,MAAMoU,EAAOrkB,MAAK,GAAYA,MAAK,KACnCA,MAAK,GAAQsU,OAAO+P,EACtB,CACA,GAAasqB,GACP3uC,MAAK,IAAWywC,SAAS9B,EAAM3sC,SAGnChC,KAAK8oC,cACP,CACA,YAAAA,GACE9oC,MAAK,IAAWgoC,UAAUv3B,IAAI,UAC9BzQ,MAAK,GAAQq6G,aAAe,QAC5Br6G,MAAK,IAAiBu+B,QACtBv+B,MAAK,GAAkB,IACzB,CACA,MAAI,GACF,OAAOA,MAAK,KAAcA,MAAK,GAAUgoC,UAAUyI,SAAS,SAC9D,CACA,yBAAAuoE,GACMh5G,MAAK,KAGJA,MAAK,IAIVA,KAAK8oC,eACL9oC,MAAK,GAAQi1C,MAAM,CACjB4a,eAAe,EACfpP,aAAczgD,MAAK,MANnBA,MAAK,GAASy6C,WAQlB,CACA,WAAAI,CAAY9V,GAIV,GAHI/kC,MAAK,KACPA,MAAK,GAAc8K,MAAM46D,gBAAkB3gC,IAExC/kC,MAAK,GACR,OAEF,MAAM+F,EAAI/F,MAAK,EAAWiyC,gBAAgBlzB,SAC1C,IAAK,MAAM4wC,KAAS3vD,MAAK,GAAUovD,SACjCO,EAAMwqD,aAAep0G,EAAEjF,OAAOjC,QAAUkmC,EAAMmP,aAElD,CACA,OAAA9J,GACEpqC,MAAK,IAASiQ,SACdjQ,MAAK,GAAU,KACfA,MAAK,GAAgB,KACrBA,MAAK,IAAWiQ,SAChBjQ,MAAK,GAAY,IACnB,EAiBF,MAAMs6G,WAAwBn2D,GAC5B,IAAc,KACd,IAAgB,EAChB,IACA,IAAc,KACd,GAAe,KACf,IAAiB,KACjB,IAAa,KACb,IAAe,EACf,IAAgB,KAChB,IAAqB,KACrB,GAAM,KACN,KAAmB,EACnB,IAAa,KACb,IACA,IAAa,KACb,IAAQ,GACR,IACA,IAAoB,GACpBvlB,qBAAuB,KACvBA,uBAAyB,EACzBA,yBAA2B,GAC3BA,aAAe,YACfA,mBAAqB9U,EAAqBG,UAC1C2U,yBAA2B,EAC3BA,sBAAwB,KACxBA,4BAA8B,GAC9B,2BAAW2R,GACT,MAAMtuC,EAAQq4G,GAAgB76G,UAC9B,OAAOg2B,EAAOz1B,KAAM,mBAAoB,IAAIuuC,GAAgB,CAAC,CAAC,CAAC,YAAa,iBAAkBtsC,EAAMs4G,WAAY,CAC9GhzG,KAAM,CAAC,KACL,CAAC,CAAC,aAAc,kBAAmBtF,EAAMs4G,WAAY,CACvDhzG,KAAM,CAAC,KACL,CAAC,CAAC,UAAW,eAAgBtF,EAAMs4G,WAAY,CACjDhzG,KAAM,CAAC,KACL,CAAC,CAAC,YAAa,iBAAkBtF,EAAMs4G,WAAY,CACrDhzG,KAAM,CAAC,OAEX,CACA,WAAAhI,CAAYkV,GACVshB,MAAM,IACDthB,EACHxV,KAAM,oBAERe,KAAK+kC,MAAQtwB,EAAOswB,OAASu1E,GAAgB/H,cAC7CvyG,MAAK,GAAayU,EAAO47F,WAAaiK,GAAgBE,kBACtDx6G,MAAK,GAAWyU,EAAOo5E,SAAWysB,GAAgBG,gBAClDz6G,MAAK,GAASyU,EAAO81B,OAAS,KAC9BvqC,MAAK,GAAoByU,EAAOyhC,kBAAoB,GACpDl2C,MAAK,GAAQyU,EAAO2P,MAAQ,GAC5BpkB,KAAK6mD,cAAe,EACpB7mD,KAAK6sD,cAAgB,gCACjBp4C,EAAOimG,aAAe,GACxB16G,MAAK,IAAmB,EACxBA,MAAK,GAAoByU,GACzBzU,MAAK,MACIA,MAAK,KACdA,MAAK,GAAcyU,EAAOkhC,WAC1B31C,MAAK,GAAgByU,EAAO6hC,aAC5Bt2C,MAAK,GAAayU,EAAO8hC,UACzBv2C,MAAK,GAAeyU,EAAO+hC,YAC3Bx2C,MAAK,KACLA,MAAK,KACLA,KAAK4uD,OAAO5uD,KAAKogC,WAEdpgC,KAAKs6C,qBACRt6C,KAAKioC,WAAWgP,UAAU,qCAE9B,CACA,wBAAIoZ,GACF,MAAO,CACLvV,OAAQ,QACRn1C,KAAM3F,MAAK,GAAmB,iBAAmB,YACjD+kC,MAAO/kC,KAAKioC,WAAWkM,oBAAoBh2C,IAAI6B,KAAK+kC,OACpDsrE,UAAWrwG,MAAK,GAChBk2C,iBAAkBl2C,MAAK,GAE3B,CACA,sBAAIswD,GACF,MAAO,CACL3qD,KAAM,YACNo/B,MAAO/kC,KAAKioC,WAAWkM,oBAAoBh2C,IAAI6B,KAAK+kC,OAExD,CACA,gCAAOguB,CAA0BzlD,GAC/B,MAAO,CACLqtG,eAAgBrtG,EAAKnP,IAAI,SAAS0R,KAEtC,CACA,MACE,MAAM4nG,EAAW,IAAIC,GAAkB13G,MAAK,GAAQ,MACpDA,MAAK,GAAqBy3G,EAAST,eAClCh3G,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QAAUjhC,MAAK,GAAmB2qC,IACpE,MAAMiwE,EAAqB,IAAIlD,GAAkB13G,MAAK,GAAQ,MAAQ,KAAqC,QAA9BA,KAAKioC,WAAWM,WAC7FvoC,MAAK,GAAiB46G,EAAmB5D,cACzC,MAAM,UACJG,GACEn3G,MAAK,GACTA,MAAK,GAAa,EAAEm3G,EAAU,GAAKn3G,KAAKkD,GAAKlD,KAAKghC,OAAQm2E,EAAU,GAAKn3G,KAAK47B,GAAK57B,KAAKihC,OAC1F,CACA,KAAoB,kBAClB45E,EAAiB,YACjBH,EAAW,WACXI,IAEA96G,MAAK,GAAqB66G,EAG1B,GADA76G,MAAK,GAAiB66G,EAAkBrD,cAAcx3G,MAAK,GAAa,EADjD,IACqE,OACxF06G,GAAe,EACjB16G,MAAK,EAAM06G,EACX16G,MAAK,GAAc86G,EACnB96G,KAAK4qC,OAAOmwE,UAAUC,aAAaN,EAAa,CAC9Cj6C,KAAMo6C,EAAkBlwE,IACxB0sB,KAAM,CACJ59B,EAAGohF,EAAkBzF,eAGzBp1G,MAAK,GAAaA,KAAK4qC,OAAOmwE,UAAUE,YAAY,CAClDC,UAAW,CACTC,kBAAkB,EAClBC,MAAM,GAER36C,KAAMzgE,MAAK,GAAe2qC,IAC1B0sB,KAAM,CACJ59B,EAAGz5B,MAAK,GAAeo1G,eAExB,QACE,GAAIp1G,KAAK4qC,OAAQ,CACtB,MAAMke,EAAQ9oD,KAAK4qC,OAAOpF,SAASpF,SACnCpgC,KAAK4qC,OAAOmwE,UAAUM,iBAAiBr7G,MAAK,EAAK,CAC/CygE,KAAM65C,IAAgB,GAAYt6G,MAAK,GAAmB2qC,KAAMme,EAAQ9oD,KAAKogC,SAAW,KAAO,KAC/Fi3B,KAAM,CACJ59B,EAAGohF,EAAkBzF,eAGzBp1G,KAAK4qC,OAAOmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACtDygE,KAAM65C,IAAgB,GAAYt6G,MAAK,GAAe2qC,IAAKme,GAC3DuO,KAAM,CACJ59B,EAAGz5B,MAAK,GAAeo1G,cAG7B,CACA,MAAOlyG,EAAG04B,EAAGoF,EAAOC,GAAU45E,EAAkBlwE,IAChD,OAAQ3qC,KAAKogC,UACX,KAAK,EACHpgC,KAAKkD,EAAIA,EACTlD,KAAK47B,EAAIA,EACT57B,KAAKghC,MAAQA,EACbhhC,KAAKihC,OAASA,EACd,MACF,KAAK,GACH,CACE,MAAOG,EAAWC,GAAcrhC,KAAKqlD,iBACrCrlD,KAAKkD,EAAI04B,EACT57B,KAAK47B,EAAI,EAAI14B,EACblD,KAAKghC,MAAQA,EAAQK,EAAaD,EAClCphC,KAAKihC,OAASA,EAASG,EAAYC,EACnC,KACF,CACF,KAAK,IACHrhC,KAAKkD,EAAI,EAAIA,EACblD,KAAK47B,EAAI,EAAIA,EACb57B,KAAKghC,MAAQA,EACbhhC,KAAKihC,OAASA,EACd,MACF,KAAK,IACH,CACE,MAAOG,EAAWC,GAAcrhC,KAAKqlD,iBACrCrlD,KAAKkD,EAAI,EAAI04B,EACb57B,KAAK47B,EAAI14B,EACTlD,KAAKghC,MAAQA,EAAQK,EAAaD,EAClCphC,KAAKihC,OAASA,EAASG,EAAYC,EACnC,KACF,EAEJ,MAAM,UACJ81E,GACEn3G,MAAK,GACTA,MAAK,GAAa,EAAEm3G,EAAU,GAAKj0G,GAAK89B,GAAQm2E,EAAU,GAAKv7E,GAAKqF,EACtE,CACA,iBAAOgf,CAAWC,EAAM5V,GACtB6Z,GAAiBlE,WAAWC,EAAM5V,GAClCgwE,GAAgB/H,gBAAkBjoE,EAAU2H,iBAAiBlzB,SAASje,OAAOjC,OAAS,SACxF,CACA,0BAAOk8C,CAAoBp1C,EAAM9G,GAC/B,OAAQ8G,GACN,KAAK0kB,EAA2BU,wBAC9BuvF,GAAgB/H,cAAgB1zG,EAChC,MACF,KAAKwrB,EAA2BW,oBAC9BsvF,GAAgBE,kBAAoB37G,EAG1C,CACA,eAAAs+C,CAAgBj6C,EAAG04B,GAAI,CACvB,mBAAI0M,GACF,OAAOtoC,MAAK,EACd,CACA,YAAAgzC,CAAartC,EAAM9G,GACjB,OAAQ8G,GACN,KAAK0kB,EAA2BS,gBAC9B9qB,MAAK,GAAanB,GAClB,MACF,KAAKwrB,EAA2BW,oBAC9BhrB,MAAK,GAAiBnB,GAG5B,CACA,oCAAW26C,GACT,MAAO,CAAC,CAACnvB,EAA2BU,wBAAyBuvF,GAAgB/H,eAAgB,CAACloF,EAA2BW,oBAAqBsvF,GAAgBE,mBAChK,CACA,sBAAIp+D,GACF,MAAO,CAAC,CAAC/xB,EAA2BS,gBAAiB9qB,KAAK+kC,OAASu1E,GAAgB/H,eAAgB,CAACloF,EAA2BW,oBAAqBhrB,MAAK,IAAcs6G,GAAgBE,mBAAoB,CAACnwF,EAA2BY,eAAgBjrB,MAAK,IAC9P,CACA,IAAa+kC,GACX,MAAMu2E,EAAqB,CAACzI,EAAK0I,KAC/Bv7G,KAAK+kC,MAAQ8tE,EACb7yG,MAAK,GAAWu7G,EAChBv7G,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,MAAK,EAAK,CAChDqkB,KAAM,CACJ+K,KAAMyjF,EACN,eAAgB0I,KAGpBv7G,MAAK,GAAc66C,YAAYg4D,EAAI,EAE/BC,EAAa9yG,KAAK+kC,MAClBy2E,EAAex7G,MAAK,GAC1BA,KAAKk5C,YAAY,CACfvL,IAAK2tE,EAAmBh5G,KAAKtC,KAAM+kC,EAAOu1E,GAAgBG,iBAC1D7sE,KAAM0tE,EAAmBh5G,KAAKtC,KAAM8yG,EAAY0I,GAChD3tE,KAAM7tC,KAAKioC,WAAWqU,SAASh6C,KAAKtC,KAAKioC,WAAYjoC,MACrD8tC,UAAU,EACVnoC,KAAM0kB,EAA2BS,gBACjCkjB,qBAAqB,EACrBC,UAAU,IAEZjuC,KAAKsgD,iBAAiB,CACpBxF,OAAQ,gBACR/V,MAAO/kC,KAAKioC,WAAWkM,oBAAoBh2C,IAAI4mC,KAC9C,EACL,CACA,IAAiBsrE,GACf,MAAMoL,EAAiBz7G,MAAK,GACtB07G,EAAeC,IACnB37G,MAAK,GAAa27G,EAClB37G,MAAK,GAAiB27G,EAAG,EAE3B37G,KAAKk5C,YAAY,CACfvL,IAAK+tE,EAAap5G,KAAKtC,KAAMqwG,GAC7BziE,KAAM8tE,EAAap5G,KAAKtC,KAAMy7G,GAC9B5tE,KAAM7tC,KAAKioC,WAAWqU,SAASh6C,KAAKtC,KAAKioC,WAAYjoC,MACrD8tC,UAAU,EACVnoC,KAAM0kB,EAA2BO,cACjCojB,qBAAqB,EACrBC,UAAU,IAEZjuC,KAAKsgD,iBAAiB,CACpBxF,OAAQ,oBACRu1D,cACC,EACL,CACA,kBAAItkD,GACF,GAAI/rD,KAAKioC,WAAWgK,gBAAiB,CAInC,MAAO,CAAC,CAAC,cAHWjyC,MAAK,EAAe,IAAI+4G,GAAY,CACtDxxE,OAAQvnC,QAGZ,CACA,OAAO+1B,MAAMg2B,cACf,CACA,cAAA+D,GACE/5B,MAAM+5B,iBACN9vD,KAAKulC,IAAIyC,UAAUsN,OAAO,YAAY,EACxC,CACA,aAAAya,GACEh6B,MAAMg6B,gBACN/vD,KAAKulC,IAAIyC,UAAUsN,OAAO,YAAY,EACxC,CACA,iBAAA0R,GACE,OAAOjxB,MAAMixB,kBAAkBhnD,MAAK,KACtC,CACA,kBAAAuoD,GACE,MAAO,CAAC,EAAG,EACb,CACA,OAAAwF,CAAQ9P,EAAIC,GACV,OAAOnoB,MAAMg4B,QAAQ9P,EAAIC,EAAIl+C,MAAK,KACpC,CACA,SAAAmuD,CAAUlZ,GACHj1C,KAAKs6C,qBACRt6C,KAAK4qC,OAAOgxE,kBAAkB57G,MAE5Bi1C,GACFj1C,KAAKulC,IAAI0P,OAEb,CACA,MAAAhlC,GACEjQ,MAAK,KACLA,KAAKsgD,iBAAiB,CACpBxF,OAAQ,YAEV/kB,MAAM9lB,QACR,CACA,OAAAmuC,GACOp+C,KAAK4qC,SAGV7U,MAAMqoB,UACW,OAAbp+C,KAAKulC,MAGTvlC,MAAK,KACAA,KAAKslD,iBACRtlD,KAAK4qC,OAAOn6B,IAAIzQ,OAEpB,CACA,SAAAonD,CAAUxc,GACR,IAAIixE,GAAiB,EACjB77G,KAAK4qC,SAAWA,EAClB5qC,MAAK,KACI4qC,IACT5qC,MAAK,GAAgB4qC,GACrBixE,GAAkB77G,KAAK4qC,QAAU5qC,KAAKulC,KAAKyC,UAAUyI,SAAS,mBAEhE1a,MAAMqxB,UAAUxc,GAChB5qC,KAAK+oC,KAAK/oC,KAAKwkD,YACXq3D,GACF77G,KAAKy8C,QAET,CACA,IAAiB4zD,GACf,IAAKrwG,MAAK,GACR,OAEFA,MAAK,GAAoB,CACvB66G,kBAAmB76G,MAAK,GAAmBw3G,cAAcnH,EAAY,KAEvErwG,KAAKgnD,oBACL,MAAOlI,EAAaC,GAAgB/+C,KAAKqlD,iBACzCrlD,KAAKipD,QAAQjpD,KAAKghC,MAAQ8d,EAAa9+C,KAAKihC,OAAS8d,EACvD,CACA,MACmB,OAAb/+C,MAAK,GAAiBA,KAAK4qC,SAG/B5qC,KAAK4qC,OAAOmwE,UAAU9qG,OAAOjQ,MAAK,GAClCA,MAAK,EAAM,KACXA,KAAK4qC,OAAOmwE,UAAU9qG,OAAOjQ,MAAK,IAClCA,MAAK,GAAa,KACpB,CACA,IAAgB4qC,EAAS5qC,KAAK4qC,QACX,OAAb5qC,MAAK,MAIPwP,GAAIxP,MAAK,EACT86G,WAAY96G,MAAK,IACf4qC,EAAOmwE,UAAUe,KAAK,CACxBr7C,KAAMzgE,MAAK,GAAmB2qC,IAC9BtmB,KAAM,CACJ4b,QAAS,UACT7Q,KAAMpvB,KAAK+kC,MACX,eAAgB/kC,MAAK,IAEvBk7G,UAAW,CACTxzE,WAAW,EACX0zE,KAAMp7G,MAAK,IAEbq3D,KAAM,CACJ59B,EAAGz5B,MAAK,GAAmBo1G,eAE5B,GAAO,IACVp1G,MAAK,GAAa4qC,EAAOmwE,UAAUE,YAAY,CAC7CC,UAAW,CACTC,kBAAkB,EAClBC,KAAMp7G,MAAK,IAEbygE,KAAMzgE,MAAK,GAAe2qC,IAC1B0sB,KAAM,CACJ59B,EAAGz5B,MAAK,GAAeo1G,cAExBp1G,MAAK,IACJA,MAAK,KACPA,MAAK,GAAc8K,MAAM46F,SAAW1lG,MAAK,IAE7C,CACA,SAAO,EAAakD,EAAG04B,EAAGoF,EAAOC,GAAS6nB,GACxC,OAAQA,GACN,KAAK,GACH,MAAO,CAAC,EAAIltB,EAAIqF,EAAQ/9B,EAAG+9B,EAAQD,GACrC,KAAK,IACH,MAAO,CAAC,EAAI99B,EAAI89B,EAAO,EAAIpF,EAAIqF,EAAQD,EAAOC,GAChD,KAAK,IACH,MAAO,CAACrF,EAAG,EAAI14B,EAAI89B,EAAOC,EAAQD,GAEtC,MAAO,CAAC99B,EAAG04B,EAAGoF,EAAOC,EACvB,CACA,MAAA2tB,CAAO9F,GACL,MAAM,UACJiyD,GACE/6G,KAAK4qC,OACT,IAAID,EACA3qC,MAAK,IACP8oD,GAASA,EAAQ9oD,KAAKogC,SAAW,KAAO,IACxCuK,EAAM2vE,IAAgB,GAAYt6G,MAAK,GAAmB2qC,IAAKme,IAE/Dne,EAAM2vE,IAAgB,GAAY,CAACt6G,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QAAS6nB,GAE/EiyD,EAAUM,iBAAiBr7G,MAAK,EAAK,CACnCygE,KAAM91B,EACNtmB,KAAM,CACJ,qBAAsBykC,KAG1BiyD,EAAUM,iBAAiBr7G,MAAK,GAAY,CAC1CygE,KAAM65C,IAAgB,GAAYt6G,MAAK,GAAe2qC,IAAKme,GAC3DzkC,KAAM,CACJ,qBAAsBykC,IAG5B,CACA,MAAAhhB,GACE,GAAI9nC,KAAKulC,IACP,OAAOvlC,KAAKulC,IAEd,MAAMA,EAAMxP,MAAM+R,SACd9nC,MAAK,KACPulC,EAAIS,aAAa,aAAchmC,MAAK,IACpCulC,EAAIS,aAAa,OAAQ,SAEvBhmC,MAAK,GACPulC,EAAIyC,UAAUv3B,IAAI,QAElBzQ,KAAKulC,IAAI9G,iBAAiB,UAAWz+B,MAAK,GAASsC,KAAKtC,MAAO,CAC7Dq+B,OAAQr+B,KAAKioC,WAAWC,UAG5B,MAAM6zE,EAAe/7G,MAAK,GAAgB4K,SAAS0G,cAAc,OACjEi0B,EAAIjxB,OAAOynG,GACXA,EAAa/1E,aAAa,cAAe,QACzC+1E,EAAa3zE,UAAY,WACzB2zE,EAAajxG,MAAM46F,SAAW1lG,MAAK,GACnC,MAAO8+C,EAAaC,GAAgB/+C,KAAKqlD,iBAIzC,OAHArlD,KAAKipD,QAAQjpD,KAAKghC,MAAQ8d,EAAa9+C,KAAKihC,OAAS8d,GACrDhU,GAAW/qC,KAAMA,MAAK,GAAe,CAAC,cAAe,iBACrDA,KAAK+vD,gBACExqB,CACT,CACA,WAAAy2E,GACOh8G,KAAK08C,YACR18C,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACvDk7G,UAAW,CACTe,SAAS,IAIjB,CACA,YAAAC,GACOl8G,KAAK08C,YACR18C,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACvDk7G,UAAW,CACTe,SAAS,IAIjB,CACA,IAASttE,GACP2rE,GAAgB/pE,iBAAiBtsC,KAAKjE,KAAM2uC,EAC9C,CACA,UAAA4rE,CAAWhyE,GAET,OADAvoC,KAAK4qC,OAAO6P,SAASz6C,MACbuoC,GACN,KAAK,EACL,KAAK,EACHvoC,MAAK,IAAU,GACf,MACF,KAAK,EACL,KAAK,EACHA,MAAK,IAAU,GAGrB,CACA,IAAUwjB,GACR,IAAKxjB,MAAK,GACR,OAEF,MAAMm2C,EAAYhkC,OAAOikC,eACrB5yB,EACF2yB,EAAUgmE,YAAYn8G,MAAK,GAAaA,MAAK,IAE7Cm2C,EAAUgmE,YAAYn8G,MAAK,GAAYA,MAAK,GAEhD,CACA,MAAAy8C,GACE1mB,MAAM0mB,SACDz8C,MAAK,IAGVA,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACvDk7G,UAAW,CACTe,SAAS,EACTzd,UAAU,IAGhB,CACA,QAAA/jD,GACE1kB,MAAM0kB,WACDz6C,MAAK,KAGVA,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACvDk7G,UAAW,CACT1c,UAAU,KAGTx+F,MAAK,IACRA,MAAK,IAAU,GAEnB,CACA,oBAAI4oD,GACF,OAAQ5oD,MAAK,EACf,CACA,IAAA+oC,CAAKiS,EAAUh7C,KAAKwkD,YAClBzuB,MAAMgT,KAAKiS,GACPh7C,KAAK4qC,SACP5qC,KAAK4qC,OAAOmwE,UAAUM,iBAAiBr7G,MAAK,EAAK,CAC/Ck7G,UAAW,CACTzb,QAASzkD,KAGbh7C,KAAK4qC,OAAOmwE,UAAUM,iBAAiBr7G,MAAK,GAAY,CACtDk7G,UAAW,CACTzb,QAASzkD,KAIjB,CACA,MACE,OAAOh7C,MAAK,GAAmBA,KAAKogC,SAAW,CACjD,CACA,MACE,GAAIpgC,MAAK,GACP,OAAO,KAET,MAAOohC,EAAWC,GAAcrhC,KAAKmlD,gBAC9B7jB,EAAOC,GAASvhC,KAAKolD,gBACtB7a,EAAQvqC,MAAK,GACb8kG,EAAa,IAAI5+B,aAA4B,EAAf37B,EAAM/sC,QAC1C,IAAIuI,EAAI,EACR,IAAK,MAAM,EACT7C,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,KACGsJ,EAAO,CACV,MAAMpE,EAAKjjC,EAAIk+B,EAAYE,EACrB8E,GAAM,EAAIxK,GAAKyF,EAAaE,EAClCujE,EAAW/+F,GAAK++F,EAAW/+F,EAAI,GAAKogC,EACpC2+D,EAAW/+F,EAAI,GAAK++F,EAAW/+F,EAAI,GAAKqgC,EACxC0+D,EAAW/+F,EAAI,GAAK++F,EAAW/+F,EAAI,GAAKogC,EAAKnF,EAAQI,EACrD0jE,EAAW/+F,EAAI,GAAK++F,EAAW/+F,EAAI,GAAKqgC,EAAKnF,EAASI,EACtDt7B,GAAK,CACP,CACA,OAAO++F,CACT,CACA,IAAmBnrE,GACjB,OAAO35B,MAAK,GAAmB04C,UAAU/e,EAAM35B,MAAK,KACtD,CACA,wBAAOo8G,CAAkBxxE,EAAQJ,GAC/BxoC,OAAQ+zC,EAAS,EACjB7yC,EAAC,EACD04B,IAEA,MACE14B,EAAGiyC,EACHvZ,EAAGwZ,EACHpU,MAAO8d,EACP7d,OAAQ8d,GACNhJ,EAAUV,wBACRlX,EAAK,IAAIC,gBACTC,EAASuM,EAAO8I,eAAevV,GAC/B6rB,EAAoB55C,IACxB+tB,EAAGI,QACHv+B,MAAK,GAAc4qC,EAAQx6B,EAAE,EAE/B+B,OAAOssB,iBAAiB,OAAQurB,EAAmB,CACjD3rB,WAEFlsB,OAAOssB,iBAAiB,YAAaurB,EAAmB,CACtD3rB,WAEFlsB,OAAOssB,iBAAiB,cAAemF,GAAW,CAChDgF,SAAS,EACToZ,SAAS,EACT3jB,WAEFlsB,OAAOssB,iBAAiB,cAAeiF,GAAe,CACpDrF,WAEF0X,EAAUtX,iBAAiB,cAAez+B,MAAK,GAAesC,KAAKtC,KAAM4qC,GAAS,CAChFvM,WAEFr+B,KAAKq8G,eAAiB,IAAIxD,GAAsB,CAC9C31G,IACA04B,KACC,CAACuZ,EAAQC,EAAQ0J,EAAaC,GAAenU,EAAOzK,MAAOngC,KAAKw6G,kBAAoB,EAAGhwE,EAAO,QAE/Fh7B,GAAIxP,KAAKs8G,iBACTxB,WAAY96G,KAAKu8G,sBACf3xE,EAAOmwE,UAAUe,KAAK,CACxBr7C,KAAM,CAAC,EAAG,EAAG,EAAG,GAChBp8C,KAAM,CACJ4b,QAAS,UACT7Q,KAAMpvB,KAAKuyG,cACX,eAAgBvyG,KAAKy6G,iBAEvBS,UAAW,CACTxzE,WAAW,EACX0zE,MAAM,GAER/jD,KAAM,CACJ59B,EAAGz5B,KAAKq8G,eAAejH,eAExB,GAAM,GACX,CACA,SAAO,CAAexqE,EAAQ+D,GACxB3uC,KAAKq8G,eAAe5rG,IAAIk+B,IAC1B/D,EAAOmwE,UAAUM,iBAAiBr7G,KAAKs8G,iBAAkB,CACvDjlD,KAAM,CACJ59B,EAAGz5B,KAAKq8G,eAAejH,cAI/B,CACA,SAAO,CAAcxqE,EAAQ+D,GACtB3uC,KAAKq8G,eAAejsE,UAQvBxF,EAAOmwE,UAAU9qG,OAAOjQ,KAAKs8G,kBAP7B1xE,EAAOiM,sBAAsBlI,GAAO,EAAO,CACzC+rE,YAAa16G,KAAKs8G,iBAClBzB,kBAAmB76G,KAAKq8G,eAAerF,cACvC8D,WAAY96G,KAAKu8G,qBACjBrmE,iBAAkB,iBAKtBl2C,KAAKs8G,kBAAoB,EACzBt8G,KAAKq8G,eAAiB,KACtBr8G,KAAKu8G,qBAAuB,EAC9B,CACA,wBAAatjE,CAAY3rC,EAAMs9B,EAAQN,GACrC,IAAIy2C,EAAc,KAClB,GAAIzzE,aAAgB4zF,GAA4B,CAC9C,MACE5zF,MAAM,WACJw3F,EAAU,KACVnrE,EAAI,SACJyG,EAAQ,GACR5wB,EAAE,MACFu1B,EAAK,QACL8oD,EAAO,SACP9+B,GAEFnkB,QACEotB,MAAM,WACJjjB,KAGFznC,EACJyzE,EAAczzE,EAAO,CACnBsyF,eAAgB91E,EAAqBG,UACrC8a,MAAOj2B,MAAMqR,KAAK4kB,GAClB8oD,UACAiX,aACAv6D,MAAO,KACPoP,UAAW5E,EAAa,EACxBpb,KAAMA,EAAKl7B,MAAM,GACjB2hC,WACAka,oBAAqB9qC,EACrBA,KACAssC,SAAS,EACTiT,WAEJ,MAAO,GAAIzhD,aAAgB0zF,GAAsB,CAC/C,MACE1zF,MAAM,SACJ8iG,EAAQ,KACRz2E,EAAI,SACJyG,EAAQ,GACR5wB,EAAE,MACFu1B,EACAm+D,aACEiP,SAAU9B,GACX,SACDthD,GAEFnkB,QACEotB,MAAM,WACJjjB,KAGFznC,EACJyzE,EAAczzE,EAAO,CACnBsyF,eAAgB91E,EAAqBG,UACrC8a,MAAOj2B,MAAMqR,KAAK4kB,GAClBsrE,YACAD,WACA7lE,MAAO,KACPoP,UAAW5E,EAAa,EACxBpb,KAAMA,EAAKl7B,MAAM,GACjB2hC,WACAka,oBAAqB9qC,EACrBA,KACAssC,SAAS,EACTiT,WAEJ,CACA,MAAM,MACJhqB,EAAK,WACL+/D,EAAU,SACVsL,EAAQ,QACRviB,GACEvgF,EACEi6B,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,GACrD/C,EAAOxC,MAAQ3M,GAAKC,gBAAgB0M,GACpCwC,GAAO,GAAWsmD,GAAW,EACzBuiB,IACF7oE,GAAO,GAAaj6B,EAAK+iG,WAE3B9oE,EAAOgd,aAAew8B,EACtB,MAAO3/C,EAAWC,GAAckG,EAAO4d,gBAChC7jB,EAAOC,GAASgG,EAAO6d,gBAC9B,GAAI0/C,EAAY,CACd,MAAMv6D,EAAQhD,GAAO,GAAS,GAC9B,IAAK,IAAIxhC,EAAI,EAAGA,EAAI++F,EAAWtnG,OAAQuI,GAAK,EAC1CwkC,EAAMhiC,KAAK,CACTrF,GAAI4hG,EAAW/+F,GAAKu7B,GAASF,EAC7BxF,EAAG,GAAKkpE,EAAW/+F,EAAI,GAAKw7B,GAASF,EACrCL,OAAQ8jE,EAAW/+F,EAAI,GAAK++F,EAAW/+F,IAAMq7B,EAC7CH,QAAS6jE,EAAW/+F,EAAI,GAAK++F,EAAW/+F,EAAI,IAAMs7B,IAGtDkG,GAAO,KACPA,GAAO,KACPA,EAAOqnB,OAAOrnB,EAAOnH,SACvB,MAAO,GAAIgwE,EAAU,CACnB7oE,GAAO,IAAmB,EAC1B,MAAM2oE,EAASE,EAAS,GAClBplD,EAAQ,CACZ9nD,EAAGgtG,EAAO,GAAK5uE,EACf1F,EAAGyF,GAAc6uE,EAAO,GAAK3uE,IAEzBk2E,EAAW,IAAIoB,GAAsB7tD,EAAO,CAAC,EAAG,EAAG5pB,EAAWC,GAAa,EAAGkG,GAAO,GAAa,GAAG,EAAM,MACjH,IAAK,IAAIxhC,EAAI,EAAGi8B,EAAKkuE,EAAO1yG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC/CilD,EAAM9nD,EAAIgtG,EAAOnqG,GAAKu7B,EACtB0pB,EAAMpvB,EAAIyF,GAAc6uE,EAAOnqG,EAAI,GAAKw7B,GACxCk2E,EAAShnG,IAAIu6C,GAEf,MAAM,GACJx7C,EAAE,WACFsrG,GACElwE,EAAOmwE,UAAUe,KAAK,CACxBr7C,KAAM,CAAC,EAAG,EAAG,EAAG,GAChBp8C,KAAM,CACJ4b,QAAS,UACT7Q,KAAMmY,EAAOxC,MACb,eAAgBwC,EAAOkzE,iBAEzBS,UAAW,CACTxzE,WAAW,EACX0zE,MAAM,GAER/jD,KAAM,CACJ59B,EAAGg+E,EAASrC,eAEb,GAAM,GACT7tE,GAAO,GAAoB,CACzBszE,kBAAmBpD,EAAST,cAC5B0D,YAAalrG,EACbsrG,eAEFvzE,GAAO,KACPA,EAAOqnB,OAAOrnB,EAAOwf,eACvB,CACA,OAAOxf,CACT,CACA,SAAAmR,CAAUqI,GAAe,GACvB,GAAI/gD,KAAKowC,WAAa2Q,EACpB,OAAO,KAET,GAAI/gD,KAAK87C,QACP,OAAO97C,KAAK8uD,mBAEd,MAAMn1B,EAAO35B,KAAK+tD,QAAQ,EAAG,GACvBhpB,EAAQof,GAAiBwB,cAAchW,QAAQ3vC,KAAK+kC,OACpD0T,EAAa,CACjBmnD,eAAgB91E,EAAqBG,UACrC8a,QACA8oD,QAAS7tF,MAAK,GACdqwG,UAAWrwG,MAAK,GAChB8kG,WAAY9kG,MAAK,KACjBq4G,SAAUr4G,MAAK,GAAmB25B,GAClCggB,UAAW35C,KAAK25C,UAChBhgB,OACAyG,SAAUpgC,MAAK,KACfk1G,mBAAoBl1G,KAAKilD,qBAE3B,OAAIjlD,KAAKs6C,sBAAwBt6C,MAAK,GAAmBy4C,GAChD,MAETA,EAAWjpC,GAAKxP,KAAKs6C,oBACd7B,EACT,CACA,IAAmBA,GACjB,MAAM,MACJ1T,GACE/kC,KAAKukD,aACT,OAAO9L,EAAW1T,MAAMv0B,MAAK,CAACuH,EAAGhS,IAAMgS,IAAMgtB,EAAMh/B,IACrD,CACA,uBAAAs5C,CAAwBC,GAItB,OAHAA,EAAWqjD,aAAa,CACtBhpE,KAAM35B,KAAK+tD,QAAQ,EAAG,KAEjB,IACT,CACA,8BAAOrT,GACL,OAAO,CACT,EAeF,MAAM8hE,GACJ,IAAiBj+G,OAAO6M,OAAO,MAC/B,cAAAqxG,CAAex9G,EAAMJ,GACnBmB,KAAKf,GAAQJ,EACbmB,KAAK08G,kBAAkBz9G,EAAMJ,EAC/B,CACA,gBAAAw8G,CAAiB5sC,GACf,GAAKA,EAGL,IAAK,MAAOxvE,EAAMJ,KAAUN,OAAOoW,QAAQ85D,GACpCxvE,EAAK61B,WAAW,MACnB90B,KAAKy8G,eAAex9G,EAAMJ,EAGhC,CACA,iBAAA69G,CAAkBz9G,EAAMJ,GACtBmB,MAAK,GAAef,GAAQJ,CAC9B,CACA,eAAA89G,GACE,MAAMt4F,EAAOrkB,MAAK,GAElB,OADAA,MAAK,GAAiBzB,OAAO6M,OAAO,MAC7B,CACLiZ,OAEJ,CACA,KAAAw3C,GACE77D,MAAK,GAAiBzB,OAAO6M,OAAO,KACtC,CACA,SAAAwxG,CAAU19G,EAAUc,MAClBA,KAAKq7G,iBAAiBn8G,EACxB,CACA,KAAAmH,GACEmuB,EAAY,kBACd,EAEF,MAAMqoF,WAAsB14D,GAC1B,IAAgB,KAChB,IACA24D,QAAU,KACVl+E,uBAAyB,EACzBA,sBAAwB,KACxBA,UAAsB,KACtBA,UAA2B,KAC3BA,UAAgC,KAChCA,UAA2BmP,IAC3BnP,UAA6B,KAC7BA,UAA4B,KAC5BA,UAA+BmP,IAC/BnP,qBAAuB,EACvB,WAAAr/B,CAAYkV,GACVshB,MAAMthB,GACNzU,MAAK,GAAmByU,EAAOsoG,kBAAmB,EAClD/8G,KAAKg9G,aAAavoG,EACpB,CACA,YAAAuoG,CAAavoG,GACPA,EAAOwoG,eACTj9G,MAAK,GAAoByU,GACzBzU,MAAK,KAET,CACA,KAAoB,aAClBi9G,EAAY,OACZC,EAAM,eACNC,IAEAn9G,MAAK,GAAgBi9G,EACrBj9G,KAAKo9G,kBAAoBD,EACpBn9G,KAAKs6C,qBACRt6C,KAAKioC,WAAWgP,UAAU,gBAAgBj3C,KAAKkpC,0BAE7Cg0E,GAAU,GACZl9G,KAAK88G,QAAUI,EACfl9G,KAAK4qC,OAAOmwE,UAAUC,aAAakC,EAAQD,EAAaI,oBAExDr9G,KAAK88G,QAAU98G,MAAK,GAAei9G,EAAcj9G,KAAK4qC,QAExD5qC,MAAK,GAAYi9G,EAAatyE,IAChC,CACA,IAAesyE,EAAcryE,GAC3B,MAAM,GACJp7B,GACEo7B,EAAOmwE,UAAUe,KAAKe,GAAcS,oBAAoBt9G,KAAKo9G,gBAAgBT,kBAAmBM,EAAaM,uBAAuB,GAAO,GAC/I,OAAO/tG,CACT,CACA,0BAAO8tG,CAAoBtkF,EAAIoE,GAC7B,MAAMogF,EAAS,IAAIhrG,IAAIjU,OAAOwF,KAAKi1B,IACnC,IAAK,MAAOtwB,EAAK7J,KAAUN,OAAOoW,QAAQyoB,GACpCogF,EAAO74G,IAAI+D,GACbnK,OAAO66C,OAAOpgB,EAAGtwB,GAAM7J,GAEvBm6B,EAAGtwB,GAAO7J,EAGd,OAAOm6B,CACT,CACA,+BAAOykF,CAAyBC,GAC9BlpF,EAAY,kBACd,CACA,mBAAWmpF,GACTnpF,EAAY,kBACd,CACA,mBAAWixB,GACT,OAAO,CACT,CACA,kCAAWm4D,GACT,OAAO,CACT,CACA,0BAAO7iE,CAAoBp1C,EAAM9G,GAC/B,MAAMg/G,EAAe79G,KAAK29G,SAASx/G,IAAIwH,GACnCk4G,GACF79G,KAAK89G,uBAAuBrB,eAAeoB,EAAch/G,GAEvDmB,KAAK+9G,iBACPlB,IAAc,GAAaJ,eAAeoB,EAAch/G,GACxDmB,KAAK+9G,eAAehD,UAAUM,iBAAiBr7G,KAAKg+G,eAAgBh+G,KAAK89G,uBAAuBnB,mBAEpG,CACA,YAAA3pE,CAAartC,EAAM9G,GACjB,MAAMg/G,EAAe79G,KAAKT,YAAYo+G,SAASx/G,IAAIwH,GAC/Ck4G,GACF79G,KAAKi+G,gBAAgBt4G,EAAMk4G,EAAch/G,EAE7C,CACA,oCAAW26C,GACT,MAAMi1B,EAAa,GACbvvE,EAAUc,KAAK89G,uBACrB,IAAK,MAAOn4G,EAAM1G,KAASe,KAAK29G,SAC9BlvC,EAAWlmE,KAAK,CAAC5C,EAAMzG,EAAQD,KAEjC,OAAOwvE,CACT,CACA,sBAAIryB,GACF,MAAMqyB,EAAa,IACb,gBACJ2uC,GACEp9G,KACJ,IAAK,MAAO2F,EAAM1G,KAASe,KAAKT,YAAYo+G,SAC1ClvC,EAAWlmE,KAAK,CAAC5C,EAAMy3G,EAAgBn+G,KAEzC,OAAOwvE,CACT,CACA,eAAAwvC,CAAgBt4G,EAAM1G,EAAMJ,GAC1B,MAAMK,EAAUc,KAAKo9G,gBACfc,EAAah/G,EAAQD,GACrBG,EAASgT,IACblT,EAAQu9G,eAAex9G,EAAMmT,GAC7B,MAAMquD,EAAOzgE,MAAK,GAAcy8G,eAAex9G,EAAMmT,GACjDquD,GACFzgE,MAAK,GAAYygE,GAEnBzgE,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAAS59G,EAAQy9G,kBAAkB,EAElF38G,KAAKk5C,YAAY,CACfvL,IAAKvuC,EAAOkD,KAAKtC,KAAMnB,GACvB+uC,KAAMxuC,EAAOkD,KAAKtC,KAAMk+G,GACxBrwE,KAAM7tC,KAAKioC,WAAWqU,SAASh6C,KAAKtC,KAAKioC,WAAYjoC,MACrD8tC,UAAU,EACVnoC,OACAqoC,qBAAqB,EACrBC,UAAU,GAEd,CACA,WAAA4d,GACE7rD,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAASD,GAAcS,oBAAoBt9G,MAAK,GAAcm+G,6BAA6Bn+G,MAAK,MAAwB,CACnKygE,KAAMzgE,MAAK,OAEf,CACA,UAAAiqD,GACEjqD,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAASD,GAAcS,oBAAoBt9G,MAAK,GAAco+G,4BAA4Bp+G,MAAK,MAAwB,CAClKygE,KAAMzgE,MAAK,OAEf,CACA,cAAAgoD,CAAeq2D,EAAIC,GACjBt+G,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAAS,CACpDr8C,KAAMzgE,MAAK,MAEf,CACA,aAAA+nD,GACE/nD,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAASD,GAAcS,oBAAoBt9G,MAAK,GAAcu+G,+BAA+Bv+G,MAAK,KAAuBA,KAAKqlD,kBAAmB,CAC5Lob,KAAMzgE,MAAK,OAEf,CACA,gBAAA4tD,GACE5tD,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAAS,CACpD5B,UAAW,CACTsD,QAAQ,IAGd,CACA,eAAAhxD,GACExtD,KAAK4qC,QAAQmwE,UAAUM,iBAAiBr7G,KAAK88G,QAAS,CACpD5B,UAAW,CACTsD,QAAQ,IAGd,CACA,MAAAzhE,GACEhnB,MAAMgnB,SACN/8C,KAAKquD,kBACLruD,KAAK8vD,gBACP,CACA,cAAAA,GACE/5B,MAAM+5B,iBACN9vD,KAAKulC,IAAIyC,UAAUsN,OAAO,YAAY,EACxC,CACA,aAAAya,GACEh6B,MAAMg6B,gBACN/vD,KAAKulC,IAAIyC,UAAUsN,OAAO,YAAY,EACxC,CACA,kBAAAiT,GACE,MAAO,CAAC,EAAG,EACb,CACA,eAAI5tC,GACF,OAAO,CACT,CACA,SAAAwzC,CAAUlZ,GACHj1C,KAAKs6C,qBACRt6C,KAAK4qC,OAAOgxE,kBAAkB57G,MAEhCA,KAAK6mD,cAAe,EAChB7mD,MAAK,KACPA,MAAK,IAAmB,EACxBA,KAAK+8C,SACL/8C,KAAK4qC,OAAO2P,YAAYv6C,MACpBi1C,GAASj1C,KAAKuuD,YAChBvuD,KAAKulC,IAAI0P,QAGf,CACA,MAAAhlC,GACEjQ,MAAK,KACL+1B,MAAM9lB,QACR,CACA,OAAAmuC,GACOp+C,KAAK4qC,SAGV7U,MAAMqoB,UACW,OAAbp+C,KAAKulC,MAGTvlC,MAAK,KACLA,MAAK,GAAYA,MAAK,GAAc2qC,KAC/B3qC,KAAKslD,iBACRtlD,KAAK4qC,OAAOn6B,IAAIzQ,OAEpB,CACA,SAAAonD,CAAUxc,GACR,IAAIixE,GAAiB,EACjB77G,KAAK4qC,SAAWA,GAClB5qC,KAAKioC,WAAWuN,oBAAoBx1C,MACpCA,MAAK,MACI4qC,IACT5qC,KAAKioC,WAAWsN,iBAAiBv1C,MACjCA,MAAK,GAAgB4qC,GACrBixE,GAAkB77G,KAAK4qC,QAAU5qC,KAAKulC,KAAKyC,UAAUyI,SAAS,mBAEhE1a,MAAMqxB,UAAUxc,GACZixE,GACF77G,KAAKy8C,QAET,CACA,MACuB,OAAjBz8C,KAAK88G,SAAqB98G,KAAK4qC,SAGnC5qC,KAAK4qC,OAAOmwE,UAAU9qG,OAAOjQ,KAAK88G,SAClC98G,KAAK88G,QAAU,KACf98G,KAAKo9G,gBAAgBvhD,QACvB,CACA,IAAgBjxB,EAAS5qC,KAAK4qC,QACP,OAAjB5qC,KAAK88G,SAAoB98G,KAAK4qC,SAAWA,IAGxB,OAAjB5qC,KAAK88G,SAIT98G,KAAKo9G,gBAAgBR,YACrB58G,KAAK88G,QAAU98G,MAAK,GAAeA,MAAK,GAAe4qC,IAJrD5qC,KAAK4qC,OAAOmwE,UAAU0D,aAAaz+G,KAAK88G,QAASlyE,EAAOmwE,WAK5D,CACA,KAAuB73G,EAAG04B,EAAGoF,EAAOC,IAClC,MACEokB,kBAAmBq5D,EAAIC,GAAG,SAC1Bv+E,GACEpgC,KACJ,OAAQogC,GACN,KAAK,GACH,MAAO,CAACxE,EAAG,EAAI14B,EAAG89B,GAAS29E,EAAKD,GAAKz9E,GAAUy9E,EAAKC,IACtD,KAAK,IACH,MAAO,CAAC,EAAIz7G,EAAG,EAAI04B,EAAGoF,EAAOC,GAC/B,KAAK,IACH,MAAO,CAAC,EAAIrF,EAAG14B,EAAG89B,GAAS29E,EAAKD,GAAKz9E,GAAUy9E,EAAKC,IACtD,QACE,MAAO,CAACz7G,EAAG04B,EAAGoF,EAAOC,GAE3B,CACA,MACE,MAAM,EACJ/9B,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,EACAokB,kBAAmBq5D,EAAIC,GAAG,SAC1Bv+E,GACEpgC,KACJ,OAAQogC,GACN,KAAK,GACH,MAAO,CAAC,EAAIxE,EAAG14B,EAAG89B,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IACtD,KAAK,IACH,MAAO,CAAC,EAAIx7G,EAAG,EAAI04B,EAAGoF,EAAOC,GAC/B,KAAK,IACH,MAAO,CAACrF,EAAG,EAAI14B,EAAG89B,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IACtD,QACE,MAAO,CAACx7G,EAAG04B,EAAGoF,EAAOC,GAE3B,CACA,IAAYw/B,GAEV,IADCzgE,KAAKkD,EAAGlD,KAAK47B,EAAG57B,KAAKghC,MAAOhhC,KAAKihC,QAAUjhC,MAAK,GAAsBygE,GACnEzgE,KAAKulC,IAAK,CACZvlC,KAAKgnD,oBACL,MAAOlI,EAAaC,GAAgB/+C,KAAKqlD,iBACzCrlD,KAAKipD,QAAQjpD,KAAKghC,MAAQ8d,EAAa9+C,KAAKihC,OAAS8d,EACvD,CACA/+C,KAAKiqD,YACP,CACA,MACE,MAAM,EACJ/mD,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,EAAM,SACNb,EAAQ,eACR2mB,EACA1B,kBAAmBq5D,EAAIC,IACrB3+G,KACJ,QAAoB,EAAXogC,EAAe2mB,GAAkB,IACxC,KAAK,EACH,MAAO,CAAC,EAAInrB,EAAIqF,EAAQ/9B,EAAG+9B,EAAQD,GACrC,KAAK,EACH,MAAO,CAAC,EAAI99B,EAAI89B,EAAO,EAAIpF,EAAIqF,EAAQD,EAAOC,GAChD,KAAK,EACH,MAAO,CAACrF,EAAG,EAAI14B,EAAI89B,EAAOC,EAAQD,GACpC,KAAK,EACH,MAAO,CAAC99B,EAAG04B,EAAIoF,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,IACtE,KAAK,EACH,MAAO,CAAC,EAAI/iF,EAAG14B,EAAG89B,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IACtD,KAAK,EACH,MAAO,CAAC,EAAIx7G,EAAI+9B,GAAU09E,EAAKD,GAAK,EAAI9iF,EAAGqF,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,IAC/E,KAAK,EACH,MAAO,CAAC/iF,EAAIoF,GAAS09E,EAAKC,GAAK,EAAIz7G,EAAI+9B,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IAC/F,KAAK,EACH,MAAO,CAACx7G,EAAI89B,EAAOpF,EAAIqF,EAAQD,EAAOC,GACxC,KAAK,EACH,MAAO,CAAC,EAAIrF,EAAG14B,EAAI89B,EAAOC,EAAQD,GACpC,KAAK,GACH,MAAO,CAAC,EAAI99B,EAAG,EAAI04B,EAAGoF,EAAOC,GAC/B,KAAK,GACH,MAAO,CAACrF,EAAIqF,EAAQ,EAAI/9B,EAAG+9B,EAAQD,GACrC,KAAK,GACH,MAAO,CAAC99B,EAAI+9B,GAAU09E,EAAKD,GAAK9iF,EAAGqF,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,IACvE,KAAK,GACH,MAAO,CAAC,EAAI/iF,EAAIoF,GAAS09E,EAAKC,GAAKz7G,EAAI+9B,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IAC/F,KAAK,GACH,MAAO,CAAC,EAAIx7G,EAAG,EAAI04B,EAAIoF,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,GAAK19E,GAAS09E,EAAKC,IAC9E,KAAK,GACH,MAAO,CAAC/iF,EAAG,EAAI14B,EAAG89B,GAAS09E,EAAKC,GAAK19E,GAAU09E,EAAKD,IACtD,QACE,MAAO,CAACx7G,EAAG04B,EAAGoF,EAAOC,GAE3B,CACA,MAAA2tB,GACO5uD,KAAK4qC,QAGV5qC,KAAK4qC,OAAOmwE,UAAUM,iBAAiBr7G,KAAK88G,QAASD,GAAcS,oBAAoB,CACrF78C,KAAMzgE,MAAK,MACVA,MAAK,GAAc4+G,gBAAgB5+G,KAAK+mD,eAAiB/mD,KAAKogC,SAAW,KAAO,MACrF,CACA,eAAAwS,GACO5yC,KAAK4qC,QAGV5qC,MAAK,GAAYA,MAAK,GAAc6+G,uBAAuB7+G,KAAKqlD,iBAAkBrlD,KAAK4qC,OAAOzK,OAChG,CACA,iCAAO2+E,GAA8B,CACrC,MAAAh3E,GACE,GAAI9nC,KAAKulC,IACP,OAAOvlC,KAAKulC,IAEd,IAAIsiB,EAAOC,EACP9nD,KAAKokD,UACPyD,EAAQ7nD,KAAKkD,EACb4kD,EAAQ9nD,KAAK47B,GAEf,MAAM2J,EAAMxP,MAAM+R,SAClBvC,EAAIyC,UAAUv3B,IAAI,QAClB,MAAMsuG,EAAUn0G,SAAS0G,cAAc,OACvCi0B,EAAIjxB,OAAOyqG,GACXA,EAAQ/4E,aAAa,cAAe,QACpC+4E,EAAQ32E,UAAY,WACpB,MAAO0W,EAAaC,GAAgB/+C,KAAKqlD,iBAOzC,OANArlD,KAAKipD,QAAQjpD,KAAKghC,MAAQ8d,EAAa9+C,KAAKihC,OAAS8d,GACrD/+C,KAAKioC,WAAWsN,iBAAiBv1C,MACjCA,KAAK8vD,iBACD9vD,KAAKokD,SACPpkD,KAAK4nD,gBAAgBC,EAAOC,GAEvBviB,CACT,CACA,2BAAOy5E,CAAqBX,EAAIC,EAAIW,EAAcC,EAAe7J,GAC/D7gF,EAAY,kBACd,CACA,mBAAO2qF,CAAav0E,EAAQN,EAAW80E,EAAQzwE,GAC7C,MAAM,OACJ3sC,EACAq+B,QAASn9B,EACTo9B,QAAS1E,EAAC,UACV+xB,EAAS,YACTrL,GACE3T,EACJ,GAAIkuE,IAAc,IAAuBA,IAAc,KAAwBv6D,EAC7E,OAEF,MACE9c,UAAU,SACRpF,IAEAwK,GAEF5J,MAAO8d,EACP7d,OAAQ8d,GACN/8C,EAAOqzC,wBACLlX,EAAK0+E,IAAc,GAAoB,IAAIz+E,gBAC3CC,EAASuM,EAAO8I,eAAevV,GACrC0+E,IAAc,KAAsBlvD,EACpCkvD,IAAc,KAAwBv6D,EACtCnwC,OAAOssB,iBAAiB,aAAaruB,IAC/BysG,IAAc,KAAsBzsG,EAAEu9C,UACxC3tD,KAAKq/G,SAASjvG,GAEdysG,IAAc,IAAoBxzE,OAAOj5B,EAAEu9C,UAC7C,GACC,CACDtvB,WAEFlsB,OAAOssB,iBAAiB,iBAAiBruB,IACnCysG,IAAc,KAAsBzsG,EAAEu9C,UACxC3tD,KAAK+9G,eAAejhE,oBAEpB+/D,IAAc,IAAoBxzE,OAAOj5B,EAAEu9C,UAC7C,GACC,CACDtvB,WAEFlsB,OAAOssB,iBAAiB,eAAeruB,IACjCysG,IAAc,KAAwBzsG,EAAEkyC,eAG3Cu6D,IAAc,KAAuB,IAAIrqG,KAAO/B,IAAIL,EAAEu9C,WACnDkvD,IAAc,GAAayC,kBAC7BzC,IAAc,GAAa0C,oBACvB1C,IAAc,GAAazsE,UAC7BpwC,KAAK+9G,eAAejhE,mBAAkB,GAEtC98C,KAAKq/G,SAAS,OAElB,GACC,CACDz2E,SAAS,EACToZ,SAAS,EACT3jB,WAEFlsB,OAAOssB,iBAAiB,cAAeiF,GAAe,CACpDrF,WAEFr8B,EAAOy8B,iBAAiB,cAAez+B,KAAKw/G,UAAUl9G,KAAKtC,MAAO,CAChEq+B,WAEFr8B,EAAOy8B,iBAAiB,aAAaruB,IAC/BA,EAAEqvG,YAAc5C,IAAc,IAChCj5E,GAAUxzB,EACZ,GACC,CACDiuB,WAEFuM,EAAO0M,gBACPhN,EAAU4F,gBAAgBrH,OACtBg0E,IAAc,GAChBjyE,EAAOmwE,UAAUM,iBAAiBr7G,KAAKg+G,eAAgBnB,IAAc,GAAa6C,SAASx8G,EAAG04B,EAAGkjB,EAAaC,EAAc3e,KAG9HkK,EAAUiS,6BAA6Bv8C,MACvC68G,IAAc,GAAe78G,KAAKg/G,qBAAqB97G,EAAG04B,EAAGkjB,EAAaC,EAAc3e,GACxFy8E,IAAc,GAAyB78G,KAAKy9G,2BAC5Cz9G,KAAK+9G,eAAiBnzE,IAEpBp7B,GAAIxP,KAAKg+G,gBACPpzE,EAAOmwE,UAAUe,KAAK97G,KAAKs9G,oBAAoBT,IAAc,GAAuBF,kBAAmBE,IAAc,GAAaU,uBAAuB,GAAM,IACrK,CACA,gBAAOiC,CAAU7wE,GAEf,GADAkuE,IAAc,IAAyB,GAClCA,IAAc,GACjB,OAEF,MAAM,QACJx8E,EAAO,QACPC,EAAO,UACPqtB,GACEhf,EACAkuE,IAAc,KAAsBlvD,IAGpCkvD,IAAc,IAAoBhtG,MAAQ,EAC5C7P,KAAKq/G,SAAS1wE,IAGhB3uC,KAAK+9G,eAAehD,UAAUM,iBAAiBr7G,KAAKg+G,eAAgBnB,IAAc,GAAapsG,IAAI4vB,EAASC,IAC5Gu8E,IAAc,GAAwBluE,EAAM8wE,UAC5C77E,GAAU+K,IACZ,CACA,eAAOgxE,CAASnqG,GACVA,IACFxV,KAAKg+G,gBAAkB,EACvBh+G,KAAK+9G,eAAiB,KACtBlB,IAAc,GAAe,KAC7BA,IAAc,GAAyB,KACvCA,IAAc,GAAsB,KACpCA,IAAc,GAAwB9uE,KAEpC8uE,IAAc,KAChBA,IAAc,GAAkBt+E,QAChCs+E,IAAc,GAAoB,KAClCA,IAAc,GAAoB9uE,IAClC8uE,IAAc,GAAqB,KAEvC,CACA,eAAOwC,CAAS1wE,GACd,MAAM/D,EAAS5qC,KAAK+9G,eACpB,GAAKnzE,EAQL,GALAA,EAAO0M,eAAc,GACrBt3C,KAAK2/G,UAAS,GACVhxE,GAAO3sC,SAAW4oC,EAAOrF,KAC3BqF,EAAOmwE,UAAUM,iBAAiBr7G,KAAKg+G,eAAgBnB,IAAc,GAAat7F,IAAIotB,EAAMtO,QAASsO,EAAMrO,UAEzGtgC,KAAK49G,wBAAT,CACE,MAAM9B,EAAOe,IAAc,GACrBK,EAASl9G,KAAKg+G,eACd4B,EAAc9D,EAAK+D,iBACzBj1E,EAAOsO,YAAY,CACjBvL,IAAK,KACH/C,EAAOmwE,UAAUM,iBAAiB6B,EAAQpB,EAAKgE,eAAeF,GAAa,EAE7EhyE,KAAM,KACJhD,EAAOmwE,UAAUM,iBAAiB6B,EAAQpB,EAAKyD,oBAAoB,EAErEzxE,UAAU,EACVnoC,KAAM0kB,EAA2Bc,WAGrC,MACAnrB,KAAKioE,YAAW,EAClB,CACA,iBAAOA,CAAW83C,GAChB,MAAMn1E,EAAS5qC,KAAK+9G,eACpB,IAAKnzE,EACH,OAAO,KAIT,GAFAA,EAAO0M,eAAc,GACrB1M,EAAOgS,eAAevyB,EAA2Bc,YAC5C0xF,IAAc,GAAazsE,UAAW,CACzC,MACE+U,gBAAiB/jB,EAAWC,GAAW,MACvClB,GACEyK,EACErD,EAASqD,EAAOiM,sBAAsB,CAC1CxW,QAAS,EACTC,QAAS,IACR,EAAO,CACR48E,OAAQl9G,KAAKg+G,eACbf,aAAcJ,IAAc,GAAa7F,YAAY51E,EAAYjB,EAAOkB,EAAalB,EAAOA,EAAOngC,KAAKggH,eACxG7C,eAAgBN,IAAc,GAC9BE,iBAAkBgD,IAGpB,OADA//G,KAAK2/G,UAAS,GACPp4E,CACT,CAGA,OAFAqD,EAAOmwE,UAAU9qG,OAAOjQ,KAAKg+G,gBAC7Bh+G,KAAK2/G,UAAS,GACP,IACT,CACA,oBAAAM,CAAqBC,GAAQ,CAC7B,sBAAOC,CAAgBC,EAAQC,EAAQC,EAAYC,EAAaC,EAAaN,GAC3E1rF,EAAY,kBACd,CACA,wBAAaykB,CAAY3rC,EAAMs9B,EAAQN,GACrC,MACEpJ,SAAS,UACPE,EAAS,WACTC,EAAU,MACVC,EAAK,MACLC,IAEAqJ,EAAOpF,SACLy3E,EAAej9G,KAAKmgH,gBAAgB7+E,EAAOC,EAAOH,EAAWC,EAAYrhC,KAAKggH,cAAe1yG,GAC7Fi6B,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,GAQrD,OAPA/C,EAAO04E,qBAAqB3yG,GAC5Bi6B,GAAO,GAAoB,CACzB01E,iBAEF11E,GAAO,KACPA,EAAOqL,kBACPrL,EAAOqnB,SACArnB,CACT,CACA,aAAAk5E,CAAc1/D,GACZ,MAAOzf,EAAOC,GAASvhC,KAAKolD,iBACrBhkB,EAAWC,GAAcrhC,KAAKmlD,eACrC,OAAOnlD,MAAK,GAAc04C,UAAU,CAACpX,EAAOC,EAAOH,EAAWC,GAAa0f,EAC7E,CACA,uBAAA1B,CAAwBC,GAItB,OAHAA,EAAWqjD,aAAa,CACtBhpE,KAAM35B,KAAK+tD,QAAQ,EAAG,KAEjB,IACT,CACA,8BAAOrT,GACL,OAAO,CACT,EAYF,MAAMgmE,GACJ,IAAQ,IAAIC,aAAa,GACzB,IACA,IACA,IACA,IACA,IACA,IAAe,GACf,IAAa,EACb,IAAY,IAAIC,GAChB,IACA,IACA,WAAArhH,CAAY2D,EAAG04B,EAAGkjB,EAAaC,EAAc3e,EAAUiwE,GACrDrwG,MAAK,GAAe8+C,EACpB9+C,MAAK,GAAgB++C,EACrB/+C,MAAK,GAAYogC,EACjBpgC,MAAK,GAAaqwG,GACjBntG,EAAG04B,GAAK57B,MAAK,GAAgBkD,EAAG04B,GACjC,MAAMwzE,EAAOpvG,MAAK,GAAQ,CAAC+tC,IAAKA,IAAKA,IAAKA,IAAK7qC,EAAG04B,GAClD57B,MAAK,GAAU,CAACkD,EAAG04B,GACnB57B,MAAK,GAAS,CAAC,CACbovG,OACAc,OAAQlwG,MAAK,KAEfA,MAAK,GAAM0E,IAAI0qG,EAAM,EACvB,CACA,cAAAqN,CAAex9G,EAAMJ,GACN,iBAATI,IACFe,MAAK,GAAanB,EAEtB,CACA,IAAgBqE,EAAG04B,GACjB,OAAOu5E,GAAQO,gBAAgBxyG,EAAG04B,EAAG57B,MAAK,GAAcA,MAAK,GAAeA,MAAK,GACnF,CACA,OAAAowC,GACE,OAAQpwC,MAAK,IAAiC,IAAvBA,MAAK,GAAOxC,MACrC,CACA,aAAA8hH,GACE,OAAOt/G,MAAK,GAAQxC,QAAU,EAChC,CACA,GAAAiT,CAAIvN,EAAG04B,IACJ14B,EAAG04B,GAAK57B,MAAK,GAAgBkD,EAAG04B,GACjC,MAAOI,EAAIC,EAAIC,EAAIE,GAAMp8B,MAAK,GAAM42B,SAAS,EAAG,GAC1Cs/E,EAAQhzG,EAAIg5B,EACZi6E,EAAQv6E,EAAIQ,EAElB,OADUr5B,KAAKihD,MAAMhkD,MAAK,GAAek2G,EAAOl2G,MAAK,GAAgBm2G,IAC5D,EACA,MAETn2G,MAAK,GAAQuI,KAAKrF,EAAG04B,GACjBozD,MAAMhzD,IACRh8B,MAAK,GAAM0E,IAAI,CAACw3B,EAAIE,EAAIl5B,EAAG04B,GAAI,GAC/B57B,MAAK,GAAMuI,KAAKwlC,IAAKA,IAAKA,IAAKA,IAAK7qC,EAAG04B,GAChC,CACLy7B,KAAM,CACJ59B,EAAGz5B,KAAKo1G,gBAIVpmB,MAAMhvF,MAAK,GAAM,KACnBA,MAAK,GAAMkuC,OAAO,EAAG,GAEvBluC,MAAK,GAAM0E,IAAI,CAACs3B,EAAIC,EAAIC,EAAIE,EAAIl5B,EAAG04B,GAAI,GACvC57B,MAAK,GAAMuI,QAAQ4sG,GAAQS,mBAAmB55E,EAAIC,EAAIC,EAAIE,EAAIl5B,EAAG04B,IAC1D,CACLy7B,KAAM,CACJ59B,EAAGz5B,KAAKo1G,eAGd,CACA,GAAA7zF,CAAIre,EAAG04B,GACL,MAAM4wE,EAASxsG,KAAKyQ,IAAIvN,EAAG04B,GAC3B,OAAI4wE,IAGwB,IAAxBxsG,MAAK,GAAQxC,OACR,CACL65D,KAAM,CACJ59B,EAAGz5B,KAAKo1G,cAIP,KACT,CACA,QAAAsK,CAASx8G,EAAG04B,EAAGkjB,EAAaC,EAAc3e,GACxCpgC,MAAK,GAAe8+C,EACpB9+C,MAAK,GAAgB++C,EACrB/+C,MAAK,GAAYogC,GAChBl9B,EAAG04B,GAAK57B,MAAK,GAAgBkD,EAAG04B,GACjC,MAAMwzE,EAAOpvG,MAAK,GAAQ,CAAC+tC,IAAKA,IAAKA,IAAKA,IAAK7qC,EAAG04B,GAClD57B,MAAK,GAAU,CAACkD,EAAG04B,GACnB,MAAMq7E,EAAOj3G,MAAK,GAAO+gB,IAAI,GAY7B,OAXIk2F,IACFA,EAAK7H,KAAO,IAAIlpC,aAAa+wC,EAAK7H,MAClC6H,EAAK/G,OAAS,IAAIhqC,aAAa+wC,EAAK/G,SAEtClwG,MAAK,GAAOuI,KAAK,CACf6mG,OACAc,OAAQlwG,MAAK,KAEfA,MAAK,GAAM0E,IAAI0qG,EAAM,GACrBpvG,MAAK,GAAa,EAClBA,KAAKo1G,YACE,IACT,CACA,cAAAyK,GACE,OAAO7/G,MAAK,GAAO+gB,IAAI,EACzB,CACA,cAAA++F,CAAen3E,GACb,OAAK3oC,MAAK,IAGVA,MAAK,GAAOuI,KAAKogC,GACjB3oC,MAAK,GAAQ2oC,EAAQymE,KACrBpvG,MAAK,GAAU2oC,EAAQunE,OACvBlwG,MAAK,GAAa,EACX,CACLq3D,KAAM,CACJ59B,EAAGz5B,KAAKo1G,eARHp1G,MAAK,GAAU8/G,eAAen3E,EAWzC,CACA,iBAAA42E,GACE,IAAKv/G,MAAK,GACR,OAAOA,MAAK,GAAUu/G,oBAExBv/G,MAAK,GAAO43E,MACZ53E,MAAK,GAAe,GACpB,IAAK,IAAI+F,EAAI,EAAGi8B,EAAKhiC,MAAK,GAAOxC,OAAQuI,EAAIi8B,EAAIj8B,IAAK,CACpD,MAAM,KACJqpG,EAAI,OACJc,GACElwG,MAAK,GAAO+F,GAChB/F,MAAK,GAAQovG,EACbpvG,MAAK,GAAUkwG,EACflwG,MAAK,GAAa,EAClBA,KAAKo1G,WACP,CACA,MAAO,CACL/9C,KAAM,CACJ59B,EAAGz5B,MAAK,IAGd,CACA,SAAAo1G,GACE,MAAMyL,EAAS1L,GAAQM,SAASz1G,MAAK,GAAM,IACrC8gH,EAAS3L,GAAQM,SAASz1G,MAAK,GAAM,IAC3C,GAA4B,IAAxBA,MAAK,GAAQxC,OAEf,OADAwC,MAAK,GAAe,GAAGA,MAAK,QAAkB6gH,KAAUC,MACjD9gH,MAAK,GAEd,GAAIA,MAAK,GAAQxC,QAAU,EAAG,CAC5B,MAAMuI,EAAI/F,MAAK,GAAasiC,YAAY,KACxCtiC,MAAK,GAAe,GAAGA,MAAK,GAAavB,MAAM,EAAGsH,QAAQ86G,KAAUC,IACpE9gH,MAAK,GAAa,CACpB,CACA,GAA4B,IAAxBA,MAAK,GAAQxC,OAAc,CAC7B,MAAMujH,EAAU5L,GAAQM,SAASz1G,MAAK,GAAM,KACtCghH,EAAU7L,GAAQM,SAASz1G,MAAK,GAAM,KAG5C,OAFAA,MAAK,GAAe,GAAGA,MAAK,QAAkB+gH,KAAWC,IACzDhhH,MAAK,GAAa,GACXA,MAAK,EACd,CACA,MAAMmG,EAAS,GACS,IAApBnG,MAAK,KACPmG,EAAOoC,KAAK,KAAKs4G,KAAUC,KAC3B9gH,MAAK,GAAa,GAEpB,IAAK,IAAI+F,EAAI/F,MAAK,GAAYgiC,EAAKhiC,MAAK,GAAMxC,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CACpE,MAAOk7G,EAAKC,EAAKC,EAAKC,EAAKl+G,EAAG04B,GAAK57B,MAAK,GAAMvB,MAAMsH,EAAGA,EAAI,GAAGoC,IAAIgtG,GAAQM,UAC1EtvG,EAAOoC,KAAK,IAAI04G,KAAOC,KAAOC,KAAOC,KAAOl+G,KAAK04B,IACnD,CAGA,OAFA57B,MAAK,IAAgBmG,EAAOxH,KAAK,KACjCqB,MAAK,GAAaA,MAAK,GAAMxC,OACtBwC,MAAK,EACd,CACA,WAAAg3G,CAAYl4D,EAAaC,EAAc5e,EAAO41E,GAC5C,MAAMkB,EAAOj3G,MAAK,GAAO+gB,IAAI,GAQ7B,OAPAk2F,EAAK7H,KAAO,IAAIlpC,aAAa+wC,EAAK7H,MAClC6H,EAAK/G,OAAS,IAAIhqC,aAAa+wC,EAAK/G,QACpClwG,MAAK,GAAUw8F,MAAMx8F,MAAK,GAAQ8+C,EAAaC,EAAc5e,EAAOngC,MAAK,GAAWA,MAAK,GAAY+1G,GACrG/1G,MAAK,GAAQ,KACbA,MAAK,GAAQ,KACbA,MAAK,GAAS,KACdA,MAAK,GAAe,KACbA,MAAK,EACd,CACA,wBAAIu9G,GACF,MAAO,CACLl5F,KAAM,CACJ4b,QAAS,mBAEXi7E,UAAW,CACTY,MAAM,GAERr7C,KAAM,CAAC,EAAG,EAAG,EAAG,GAEpB,EAEF,MAAMmgD,WAAuBzL,GAC3B,IACA,IAAmB,EACnB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAAA3Y,CAAM6S,EAAOvwD,EAAaC,EAAciK,EAAa5oB,EAAUiwE,EAAW0F,GACxE/1G,MAAK,GAAe8+C,EACpB9+C,MAAK,GAAgB++C,EACrB/+C,MAAK,GAAegpD,EACpBhpD,MAAK,GAAYogC,EACjBpgC,MAAK,GAAaqwG,EAClBrwG,MAAK,GAAe+1G,GAAe,EACnC/1G,MAAK,GAASqvG,EACdrvG,MAAK,IACP,CACA,aAAIqwG,GACF,OAAOrwG,MAAK,EACd,CACA,cAAA8/G,CAAen3E,GAEb,OADA3oC,MAAK,GAAOuI,KAAKogC,GACV,CACL0uB,KAAM,CACJ59B,EAAGz5B,KAAKo1G,aAGd,CACA,iBAAAmK,GAEE,OADAv/G,MAAK,GAAO43E,MACL,CACLvgB,KAAM,CACJ59B,EAAGz5B,KAAKo1G,aAGd,CACA,SAAAA,GACE,MAAMjvG,EAAS,GACf,IAAK,MAAM,KACTipG,KACGpvG,MAAK,GAER,GADAmG,EAAOoC,KAAK,IAAI4sG,GAAQM,SAASrG,EAAK,OAAO+F,GAAQM,SAASrG,EAAK,OAC/C,IAAhBA,EAAK5xG,OAIT,GAAoB,KAAhB4xG,EAAK5xG,QAAiBwxF,MAAMogB,EAAK,IACnCjpG,EAAOoC,KAAK,IAAI4sG,GAAQM,SAASrG,EAAK,QAAQ+F,GAAQM,SAASrG,EAAK,aAGtE,IAAK,IAAIrpG,EAAI,EAAGi8B,EAAKotE,EAAK5xG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CAChD,MAAOk7G,EAAKC,EAAKC,EAAKC,EAAKl+G,EAAG04B,GAAKwzE,EAAKx4E,SAAS7wB,EAAGA,EAAI,GAAGoC,IAAIgtG,GAAQM,UACvEtvG,EAAOoC,KAAK,IAAI04G,KAAOC,KAAOC,KAAOC,KAAOl+G,KAAK04B,IACnD,MAVEz1B,EAAOoC,KAAK,KAYhB,OAAOpC,EAAOxH,KAAK,GACrB,CACA,SAAA+5C,EAAWpX,EAAOC,EAAOH,EAAWC,GAAa0f,GAC/C,MAAMsgE,EAAkB,GAClBC,EAAmB,IAClBp+G,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,KACnC,IAAIi+C,EAAIC,EAAI/X,EAAIC,EAAIpK,EAAIC,EAAIC,EAAIE,EAAImlF,EACpC,OAAQvhH,MAAK,IACX,KAAK,EACHuhH,EAAYpM,GAAQG,SACpBr3D,EAAK3c,EACL4c,EAAK3c,EAAQF,EACb8E,EAAK/E,EACLgF,GAAM/E,EACNrF,EAAKsF,EAAQp+B,EAAIk+B,EACjBnF,EAAKsF,GAAS,EAAI3F,EAAIqF,GAAUI,EAChCnF,EAAKoF,GAASp+B,EAAI89B,GAASI,EAC3BhF,EAAKmF,GAAS,EAAI3F,GAAKyF,EACvB,MACF,KAAK,GACHkgF,EAAYpM,GAAQI,gBACpBt3D,EAAK3c,EACL4c,EAAK3c,EACL4E,EAAK/E,EACLgF,EAAK/E,EACLrF,EAAKsF,EAAQ1F,EAAIwF,EACjBnF,EAAKsF,EAAQr+B,EAAIm+B,EACjBnF,EAAKoF,GAAS1F,EAAIqF,GAAUG,EAC5BhF,EAAKmF,GAASr+B,EAAI89B,GAASK,EAC3B,MACF,KAAK,IACHkgF,EAAYpM,GAAQG,SACpBr3D,EAAK3c,EAAQF,EACb8c,EAAK3c,EACL4E,GAAM/E,EACNgF,EAAK/E,EACLrF,EAAKsF,GAAS,EAAIp+B,EAAI89B,GAASI,EAC/BnF,EAAKsF,EAAQ3F,EAAIyF,EACjBnF,EAAKoF,GAAS,EAAIp+B,GAAKk+B,EACvBhF,EAAKmF,GAAS3F,EAAIqF,GAAUI,EAC5B,MACF,KAAK,IACHkgF,EAAYpM,GAAQI,gBACpBt3D,EAAK3c,EAAQF,EACb8c,EAAK3c,EAAQF,EACb8E,GAAM/E,EACNgF,GAAM/E,EACNrF,EAAKsF,GAAS,EAAI1F,EAAIqF,GAAUG,EAChCnF,EAAKsF,GAAS,EAAIr+B,EAAI89B,GAASK,EAC/BnF,EAAKoF,GAAS,EAAI1F,GAAKwF,EACvBhF,EAAKmF,GAAS,EAAIr+B,GAAKm+B,EAG3B,IAAK,MAAM,KACT+tE,EAAI,OACJc,KACGlwG,MAAK,GACRqhH,EAAgB94G,KAAKg5G,EAAUnS,EAAMnxD,EAAIC,EAAI/X,EAAIC,EAAI2a,EAAe,IAAIjyC,MAAMsgG,EAAK5xG,QAAU,OAC7F8jH,EAAiB/4G,KAAKg5G,EAAUrR,EAAQjyD,EAAIC,EAAI/X,EAAIC,EAAI2a,EAAe,IAAIjyC,MAAMohG,EAAO1yG,QAAU,OAEpG,MAAO,CACL6xG,MAAOgS,EACPnR,OAAQoR,EACR3nF,KAAM,CAACqC,EAAIC,EAAIC,EAAIE,GAEvB,CACA,kBAAO6c,CAAY3X,EAAOC,EAAOH,EAAWC,EAAY00E,GACtD19B,OAAO,MACLg3B,EAAK,OACLa,GACD,SACD9vE,EAAQ,UACRiwE,IAEA,MAAMmR,EAAW,GACjB,IAAIvjE,EAAIC,EAAI/X,EAAIC,EAAIm7E,EACpB,OAAQnhF,GACN,KAAK,EACHmhF,EAAYpM,GAAQG,SACpBr3D,GAAM3c,EAAQF,EACd8c,EAAK3c,EAAQF,EAAa,EAC1B8E,EAAK,EAAI/E,EACTgF,GAAM,EAAI/E,EACV,MACF,KAAK,GACHkgF,EAAYpM,GAAQI,gBACpBt3D,GAAM1c,EAAQF,EACd6c,GAAM5c,EAAQF,EACd+E,EAAK,EAAI9E,EACT+E,EAAK,EAAIhF,EACT,MACF,KAAK,IACHmgF,EAAYpM,GAAQG,SACpBr3D,EAAK3c,EAAQF,EAAY,EACzB8c,GAAM3c,EAAQF,EACd8E,GAAM,EAAI/E,EACVgF,EAAK,EAAI/E,EACT,MACF,KAAK,IACHkgF,EAAYpM,GAAQI,gBACpBt3D,EAAK1c,EAAQF,EAAa,EAC1B6c,EAAK5c,EAAQF,EAAY,EACzB+E,GAAM,EAAI9E,EACV+E,GAAM,EAAIhF,EAGd,IAAKiuE,EAAO,CACVA,EAAQ,GACR,IAAK,MAAMrkD,KAASklD,EAAQ,CAC1B,MAAMv+F,EAAMq5C,EAAMxtD,OAClB,GAAY,IAARmU,EAAW,CACb09F,EAAM9mG,KAAK,IAAI29D,aAAa,CAACn4B,IAAKA,IAAKA,IAAKA,IAAKid,EAAM,GAAIA,EAAM,MACjE,QACF,CACA,GAAY,IAARr5C,EAAW,CACb09F,EAAM9mG,KAAK,IAAI29D,aAAa,CAACn4B,IAAKA,IAAKA,IAAKA,IAAKid,EAAM,GAAIA,EAAM,GAAIjd,IAAKA,IAAKA,IAAKA,IAAKid,EAAM,GAAIA,EAAM,MACzG,QACF,CACA,MAAMokD,EAAO,IAAIlpC,aAAa,GAAKv0D,EAAM,IACzC09F,EAAM9mG,KAAK6mG,GACX,IAAKpzE,EAAIC,EAAIC,EAAIE,GAAM4uB,EAAMp0B,SAAS,EAAG,GACzCw4E,EAAK1qG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,IAAK/R,EAAIC,GAAK,GACvC,IAAK,IAAIl2B,EAAI,EAAGA,EAAI4L,EAAK5L,GAAK,EAAG,CAC/B,MAAM7C,EAAI8nD,EAAMjlD,GACV61B,EAAIovB,EAAMjlD,EAAI,GACpBqpG,EAAK1qG,IAAIywG,GAAQS,mBAAmB55E,EAAIC,EAAIC,EAAIE,EAAIl5B,EAAG04B,GAAc,GAAT71B,EAAI,KAC/Di2B,EAAIC,EAAIC,EAAIE,GAAM,CAACF,EAAIE,EAAIl5B,EAAG04B,EACjC,CACF,CACF,CACA,IAAK,IAAI71B,EAAI,EAAGi8B,EAAKqtE,EAAM7xG,OAAQuI,EAAIi8B,EAAIj8B,IACzCy7G,EAASj5G,KAAK,CACZ6mG,KAAMmS,EAAUlS,EAAMtpG,GAAGoC,KAAIjF,GAAKA,GAAK6qC,MAAMkQ,EAAIC,EAAI/X,EAAIC,GACzD8pE,OAAQqR,EAAUrR,EAAOnqG,GAAGoC,KAAIjF,GAAKA,GAAK6qC,MAAMkQ,EAAIC,EAAI/X,EAAIC,KAGhE,MAAMiyE,EAAW,IAAIr4G,KAAKP,UAAUF,YAEpC,OADA84G,EAAS7b,MAAMglB,EAAUpgF,EAAWC,EAAY,EAAGjB,EAAUiwE,EAAW0F,GACjEsC,CACT,CACA,IAAqBhI,EAAYrwG,MAAK,IACpC,MAAMyhH,EAASzhH,MAAK,GAAeqwG,EAAY,EAAIrwG,MAAK,GACxD,OAAOA,MAAK,GAAY,KAAQ,EAAI,CAACyhH,EAASzhH,MAAK,GAAcyhH,EAASzhH,MAAK,IAAiB,CAACyhH,EAASzhH,MAAK,GAAeyhH,EAASzhH,MAAK,GAC9I,CACA,MACE,MAAOkD,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,IAC5B0hH,EAASC,GAAW3hH,MAAK,GAAqB,GACrD,MAAO,CAACkD,EAAIw+G,EAAS9lF,EAAI+lF,EAAS3gF,EAAQ,EAAI0gF,EAASzgF,EAAS,EAAI0gF,EACtE,CACA,MACE,MAAMlhD,EAAOzgE,MAAK,GAAQ,IAAIkmE,aAAa,CAAC1vD,IAAUA,KAAWA,KAAWA,MAC5E,IAAK,MAAM,KACT44F,KACGpvG,MAAK,GAAQ,CAChB,GAAIovG,EAAK5xG,QAAU,GAAI,CACrB,IAAK,IAAIuI,EAAI,EAAGi8B,EAAKotE,EAAK5xG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAC7CqyB,GAAKuD,iBAAiByzE,EAAKrpG,GAAIqpG,EAAKrpG,EAAI,GAAI06D,GAE9C,QACF,CACA,IAAI/1B,EAAQ0kE,EAAK,GACf3kE,EAAQ2kE,EAAK,GACf,IAAK,IAAIrpG,EAAI,EAAGi8B,EAAKotE,EAAK5xG,OAAQuI,EAAIi8B,EAAIj8B,GAAK,EAAG,CAChD,MAAOk7G,EAAKC,EAAKC,EAAKC,EAAKl+G,EAAG04B,GAAKwzE,EAAKx4E,SAAS7wB,EAAGA,EAAI,GACxDqyB,GAAKyE,kBAAkB6N,EAAOD,EAAOw2E,EAAKC,EAAKC,EAAKC,EAAKl+G,EAAG04B,EAAG6kC,GAC/D/1B,EAAQxnC,EACRunC,EAAQ7O,CACV,CACF,CACA,MAAO8lF,EAASC,GAAW3hH,MAAK,KAChCygE,EAAK,GAAK9iC,GAAU8iC,EAAK,GAAKihD,EAAS,EAAG,GAC1CjhD,EAAK,GAAK9iC,GAAU8iC,EAAK,GAAKkhD,EAAS,EAAG,GAC1ClhD,EAAK,GAAK9iC,GAAU8iC,EAAK,GAAKihD,EAAS,EAAG,GAC1CjhD,EAAK,GAAK9iC,GAAU8iC,EAAK,GAAKkhD,EAAS,EAAG,GAC1ClhD,EAAK,IAAMA,EAAK,GAChBA,EAAK,IAAMA,EAAK,EAClB,CACA,OAAI91B,GACF,OAAO3qC,MAAK,EACd,CACA,cAAAy8G,CAAex9G,EAAMJ,GACnB,MAAa,iBAATI,EACKe,MAAK,GAAiBnB,GAExB,IACT,CACA,IAAiBwxG,GACf,MAAOuR,EAAYC,GAAc7hH,MAAK,KACtCA,MAAK,GAAaqwG,EAClB,MAAOyR,EAAYC,GAAc/hH,MAAK,MAC/BgiH,EAAaC,GAAe,CAACH,EAAaF,EAAYG,EAAaF,GACpEphD,EAAOzgE,MAAK,GAKlB,OAJAygE,EAAK,IAAMuhD,EACXvhD,EAAK,IAAMwhD,EACXxhD,EAAK,IAAM,EAAIuhD,EACfvhD,EAAK,IAAM,EAAIwhD,EACRxhD,CACT,CACA,sBAAAo+C,EAAwB79E,EAAOC,GAASd,GACtC,MAAOyhF,EAAYC,GAAc7hH,MAAK,KACtCA,MAAK,GAAeghC,EACpBhhC,MAAK,GAAgBihC,EACrBjhC,MAAK,GAAemgC,EACpB,MAAO2hF,EAAYC,GAAc/hH,MAAK,KAChCgiH,EAAcF,EAAaF,EAC3BK,EAAcF,EAAaF,EAC3BphD,EAAOzgE,MAAK,GAKlB,OAJAygE,EAAK,IAAMuhD,EACXvhD,EAAK,IAAMwhD,EACXxhD,EAAK,IAAM,EAAIuhD,EACfvhD,EAAK,IAAM,EAAIwhD,EACRxhD,CACT,CACA,cAAAm+C,CAAex+E,GAEb,OADApgC,MAAK,GAAmBogC,EACjB,CACLi3B,KAAM,CACJ3oC,UAAW1uB,KAAKkiH,mBAGtB,CACA,WAAIjiF,GACF,OAAOjgC,MAAK,GAAMmI,IAAIgtG,GAAQM,UAAU92G,KAAK,IAC/C,CACA,qBAAI0+G,GACF,MAAOn6G,EAAG04B,GAAK57B,MAAK,GACpB,MAAO,CACLqkB,KAAM,CACJ4b,QAASjgC,KAAKigC,SAEhBo3B,KAAM,CACJ,mBAAoB,GAAG89C,GAAQM,SAASvyG,MAAMiyG,GAAQM,SAAS75E,MAGrE,CACA,qBAAIsmF,GACF,MAAO,CAAC,CAAElhF,EAAOC,GAAUjhC,MAAK,GAChC,IAAIqb,EAAI,EACNC,EAAI,EACJvD,EAAI,EACJ0hB,EAAI,EACJrpB,EAAI,EACJ3I,EAAI,EACN,OAAQzH,MAAK,IACX,KAAK,GACHsb,EAAI2lB,EAASD,EACbjpB,GAAKipB,EAAQC,EACb7wB,EAAI4wB,EACJ,MACF,KAAK,IACH3lB,GAAK,EACLoe,GAAK,EACLrpB,EAAI4wB,EACJv5B,EAAIw5B,EACJ,MACF,KAAK,IACH3lB,GAAK2lB,EAASD,EACdjpB,EAAIipB,EAAQC,EACZx5B,EAAIw5B,EACJ,MACF,QACE,MAAO,GAEX,MAAO,UAAU5lB,KAAKC,KAAKvD,KAAK0hB,KAAK07E,GAAQM,SAASrlG,MAAM+kG,GAAQM,SAAShuG,KAC/E,CACA,4BAAA02G,EAA8B1gE,EAAMC,EAAMwM,EAAUC,IAClD,MAAOu3D,EAASC,GAAW3hH,MAAK,MACzBkD,EAAG04B,EAAGoF,EAAOC,GAAUjhC,MAAK,GACnC,GAAI+C,KAAK25B,IAAIsE,EAAQ0gF,IAAYvM,GAAQgN,WAAap/G,KAAK25B,IAAIuE,EAAS0gF,IAAYxM,GAAQgN,UAAW,CACrG,MAAMlkE,EAAKR,EAAOyM,EAAW,GAAKhnD,EAAI89B,EAAQ,GACxCkd,EAAKR,EAAOyM,EAAY,GAAKvuB,EAAIqF,EAAS,GAChD,MAAO,CACLo2B,KAAM,CACJ,mBAAoB,GAAG89C,GAAQM,SAASh4D,MAAS03D,GAAQM,SAAS/3D,KAClEhvB,UAAW,GAAG1uB,KAAKkiH,+BAA+BjkE,KAAMC,MAG9D,CACA,MAAMkkE,GAAOl4D,EAAW,EAAIw3D,IAAY1gF,EAAQ,EAAI0gF,GAC9CW,GAAOl4D,EAAY,EAAIw3D,IAAY1gF,EAAS,EAAI0gF,GAChDW,EAAMthF,EAAQkpB,EACdq4D,EAAMthF,EAASkpB,EACrB,MAAO,CACLkN,KAAM,CACJ,mBAAoB,GAAG89C,GAAQM,SAASvyG,MAAMiyG,GAAQM,SAAS75E,KAC/DlN,UAAW,GAAG1uB,KAAKkiH,2BAA2BI,KAAOC,gBAAuBpN,GAAQM,SAASiM,MAAYvM,GAAQM,SAASkM,aAAmBS,KAAOC,gBAAuBlN,GAAQM,UAAUiM,MAAYvM,GAAQM,UAAUkM,OAGjO,CACA,2BAAAvD,EAA6B3gE,EAAMC,EAAMwM,EAAUC,IACjD,MAAOu3D,EAASC,GAAW3hH,MAAK,KAC1BygE,EAAOzgE,MAAK,IACXkD,EAAG04B,EAAGoF,EAAOC,GAAUw/B,EAK9B,GAJAA,EAAK,GAAKhjB,EACVgjB,EAAK,GAAK/iB,EACV+iB,EAAK,GAAKvW,EACVuW,EAAK,GAAKtW,EACNpnD,KAAK25B,IAAIsE,EAAQ0gF,IAAYvM,GAAQgN,WAAap/G,KAAK25B,IAAIuE,EAAS0gF,IAAYxM,GAAQgN,UAAW,CACrG,MAAMlkE,EAAKR,EAAOyM,EAAW,GAAKhnD,EAAI89B,EAAQ,GACxCkd,EAAKR,EAAOyM,EAAY,GAAKvuB,EAAIqF,EAAS,GAChD,IAAK,MAAM,KACTmuE,EAAI,OACJc,KACGlwG,MAAK,GACRm1G,GAAQK,WAAWpG,EAAMnxD,EAAIC,EAAIkxD,GACjC+F,GAAQK,WAAWtF,EAAQjyD,EAAIC,EAAIgyD,GAErC,MAAO,CACL7rF,KAAM,CACJ4b,QAASjgC,KAAKigC,SAEhBo3B,KAAM,CACJ,mBAAoB,GAAG89C,GAAQM,SAASh4D,MAAS03D,GAAQM,SAAS/3D,KAClEhvB,UAAW1uB,KAAKkiH,mBAAqB,KACrCzoF,EAAGz5B,KAAKo1G,aAGd,CACA,MAAMgN,GAAOl4D,EAAW,EAAIw3D,IAAY1gF,EAAQ,EAAI0gF,GAC9CW,GAAOl4D,EAAY,EAAIw3D,IAAY1gF,EAAS,EAAI0gF,GAChD1jE,GAAMmkE,GAAOl/G,EAAIw+G,GAAWjkE,EAAOikE,EACnCxjE,GAAMmkE,GAAOzmF,EAAI+lF,GAAWjkE,EAAOikE,EACzC,GAAY,IAARS,GAAqB,IAARC,GAAoB,IAAPpkE,GAAmB,IAAPC,EACxC,IAAK,MAAM,KACTkxD,EAAI,OACJc,KACGlwG,MAAK,GACRm1G,GAAQG,SAASlG,EAAMnxD,EAAIC,EAAIkkE,EAAKC,EAAKjT,GACzC+F,GAAQG,SAASpF,EAAQjyD,EAAIC,EAAIkkE,EAAKC,EAAKnS,GAG/C,MAAO,CACL7rF,KAAM,CACJ4b,QAASjgC,KAAKigC,SAEhBo3B,KAAM,CACJ,mBAAoB,GAAG89C,GAAQM,SAASh4D,MAAS03D,GAAQM,SAAS/3D,KAClEhvB,UAAW1uB,KAAKkiH,mBAAqB,KACrCzoF,EAAGz5B,KAAKo1G,aAGd,CACA,8BAAAmJ,EAAgC9gE,EAAMC,GAAO2H,GAC3C,MAAOm9D,EAAgBC,GAAmBp9D,EACpCob,EAAOzgE,MAAK,GACZi+C,EAAKR,EAAOgjB,EAAK,GACjBviB,EAAKR,EAAO+iB,EAAK,GACvB,GAAIzgE,MAAK,KAAiBwiH,GAAkBxiH,MAAK,KAAkByiH,EACjE,IAAK,MAAM,KACTrT,EAAI,OACJc,KACGlwG,MAAK,GACRm1G,GAAQK,WAAWpG,EAAMnxD,EAAIC,EAAIkxD,GACjC+F,GAAQK,WAAWtF,EAAQjyD,EAAIC,EAAIgyD,OAEhC,CACL,MAAM/pE,EAAKnmC,MAAK,GAAewiH,EACzBp8E,EAAKpmC,MAAK,GAAgByiH,EAChCziH,MAAK,GAAewiH,EACpBxiH,MAAK,GAAgByiH,EACrB,IAAK,MAAM,KACTrT,EAAI,OACJc,KACGlwG,MAAK,GACRm1G,GAAQG,SAASlG,EAAMnxD,EAAIC,EAAI/X,EAAIC,EAAIgpE,GACvC+F,GAAQG,SAASpF,EAAQjyD,EAAIC,EAAI/X,EAAIC,EAAI8pE,GAE3CzvC,EAAK,IAAMt6B,EACXs6B,EAAK,IAAMr6B,CACb,CAGA,OAFAq6B,EAAK,GAAKhjB,EACVgjB,EAAK,GAAK/iB,EACH,CACLr5B,KAAM,CACJ4b,QAASjgC,KAAKigC,SAEhBo3B,KAAM,CACJ59B,EAAGz5B,KAAKo1G,YACR,mBAAoB,GAAGD,GAAQM,SAASh4D,MAAS03D,GAAQM,SAAS/3D,MAGxE,CACA,wBAAI6/D,GACF,MAAM98C,EAAOzgE,MAAK,GAClB,MAAO,CACLqkB,KAAM,CACJ4b,QAASjgC,KAAKigC,SAEhBi7E,UAAW,CACTY,MAAM,GAERzkD,KAAM,CACJ59B,EAAGz5B,KAAKo1G,YACR,mBAAoB,GAAGD,GAAQM,SAASh1C,EAAK,OAAO00C,GAAQM,SAASh1C,EAAK,MAC1E/xC,UAAW1uB,KAAKkiH,mBAAqB,MAEvCzhD,OAEJ,EAWF,MAAMiiD,WAA0BlG,GAC9B,WAAAj9G,CAAYojH,GACV5sF,QACA/1B,KAAK4iH,gBAAkBD,EACvB5sF,MAAMslF,iBAAiB,CACrBjsF,KAAM,OACNF,OAAQi1B,GAAiBuB,kBACzB,iBAAkB,EAClB,eAAgB,EAChB,iBAAkB,QAClB,kBAAmB,QACnB,oBAAqB,IAEzB,CACA,iBAAAg3D,CAAkBz9G,EAAMJ,GACT,iBAATI,IACFJ,IAAUmB,KAAK,gBACfnB,GAASmB,KAAK4iH,gBAAgBxvE,WAEhCrd,MAAM2mF,kBAAkBz9G,EAAMJ,EAChC,CACA,KAAAwH,GACE,MAAMA,EAAQ,IAAIq8G,GAAkB1iH,KAAK4iH,iBAEzC,OADAv8G,EAAMu2G,UAAU58G,MACTqG,CACT,EAEF,MAAMw8G,WAAkBhG,GACtBj+E,aAAe,MACfA,mBAAqB9U,EAAqBK,IAC1CyU,8BAAgC,KAChC,WAAAr/B,CAAYkV,GACVshB,MAAM,IACDthB,EACHxV,KAAM,cAERe,KAAK+kD,sBAAuB,EAC5B/kD,KAAK6sD,cAAgB,yBACvB,CACA,iBAAO5M,CAAWC,EAAM5V,GACtB6Z,GAAiBlE,WAAWC,EAAM5V,GAClCtqC,KAAK89G,uBAAyB,IAAI4E,GAAkBp4E,EAAU6I,eAChE,CACA,+BAAOsqE,CAAyBv+G,GAC9B,MAAMmH,EAAQrG,KAAK89G,uBAAuBz3G,QAE1C,OADAA,EAAMg1G,iBAAiBn8G,GAChBmH,CACT,CACA,kCAAWu3G,GACT,OAAO,CACT,CACA,mBAAWD,GACT,OAAOloF,EAAOz1B,KAAM,WAAY,IAAIi9B,IAAI,CAAC,CAAC5S,EAA2BO,cAAe,gBAAiB,CAACP,EAA2BM,UAAW,UAAW,CAACN,EAA2BQ,YAAa,oBAClM,CACA,2BAAOm0F,CAAqB97G,EAAG04B,EAAGkjB,EAAaC,EAAc3e,GAC3D,OAAO,IAAIsgF,GAAgBx9G,EAAG04B,EAAGkjB,EAAaC,EAAc3e,EAAUpgC,KAAK89G,uBAAuB,gBACpG,CACA,sBAAOqC,CAAgB7+E,EAAOC,EAAOH,EAAWC,EAAY00E,EAAazoG,GACvE,OAAOszG,GAAe3nE,YAAY3X,EAAOC,EAAOH,EAAWC,EAAY00E,EAAazoG,EACtF,CACA,wBAAa2rC,CAAY3rC,EAAMs9B,EAAQN,GACrC,IAAIy2C,EAAc,KAClB,GAAIzzE,aAAgB0zF,GAAsB,CACxC,MACE1zF,MAAM,SACJ8iG,EAAQ,KACRz2E,EAAI,SACJyG,EAAQ,GACR5wB,EAAE,MACFu1B,EAAK,QACL8oD,EACAqV,aACEiP,SAAU9B,GACX,SACDthD,GAEFnkB,QACEotB,MAAM,WACJjjB,KAGFznC,EACJyzE,EAAczzE,EAAO,CACnBsyF,eAAgB91E,EAAqBK,IACrC4a,MAAOj2B,MAAMqR,KAAK4kB,GAClBsrE,YACAxiB,UACAxV,MAAO,CACL63B,OAAQE,GAEV7lE,MAAO,KACPoP,UAAW5E,EAAa,EACxBpb,KAAMA,EAAKl7B,MAAM,GACjB2hC,WACAka,oBAAqB9qC,EACrBA,KACAssC,SAAS,EACTiT,WAEJ,CACA,MAAMxnB,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,GAErD,OADA/C,EAAOgd,aAAew8B,EACfx5C,CACT,CACA,eAAAqL,GACE,IAAK5yC,KAAK4qC,OACR,OAEF7U,MAAM6c,kBACN,MAAM,QACJkqE,EAAO,gBACPM,EAAe,OACfxyE,GACE5qC,KACJo9G,EAAgBV,kBAAkB,gBAClC9xE,EAAOmwE,UAAUM,iBAAiByB,EAASM,EAAgBT,kBAC7D,CACA,iCAAOmC,GACL,MAAMl0E,EAAS5qC,KAAK+9G,eACfnzE,IAGL7U,MAAM+oF,6BACN9+G,KAAK89G,uBAAuBpB,kBAAkB,gBAC9C9xE,EAAOmwE,UAAUM,iBAAiBr7G,KAAKg+G,eAAgBh+G,KAAK89G,uBAAuBnB,mBACrF,CACA,oBAAAsD,EAAqB,MACnBl7E,EAAK,UACLsrE,EAAS,QACTxiB,IAEA7tF,KAAKo9G,gBAAkByF,GAAUpF,yBAAyB,CACxDvuF,OAAQkJ,GAAKC,gBAAgB0M,GAC7B,eAAgBsrE,EAChB,iBAAkBxiB,GAEtB,CACA,SAAAn1C,CAAUqI,GAAe,GACvB,GAAI/gD,KAAKowC,UACP,OAAO,KAET,GAAIpwC,KAAK87C,QACP,OAAO97C,KAAK8uD,mBAEd,MAAM,MACJugD,EAAK,OACLa,EAAM,KACNv2E,GACE35B,KAAKygH,cAAc1/D,IAErBq8D,iBAAiB,OACfluF,EACA,iBAAkB2+D,EAClB,eAAgBwiB,IAEhBrwG,KACEy4C,EAAa,CACjBmnD,eAAgB91E,EAAqBK,IACrC4a,MAAOof,GAAiBwB,cAAchW,QAAQzgB,GAC9C2+D,UACAwiB,YACAh4B,MAAO,CACLg3B,QACAa,UAEFv2D,UAAW35C,KAAK25C,UAChBhgB,OACAyG,SAAUpgC,KAAKogC,SACf80E,mBAAoBl1G,KAAKilD,qBAE3B,OAAIlE,GACFtI,EAAWwW,QAAS,EACbxW,GAELz4C,KAAKs6C,sBAAwBt6C,MAAK,GAAmBy4C,GAChD,MAETA,EAAWjpC,GAAKxP,KAAKs6C,oBACd7B,EACT,CACA,IAAmBA,GACjB,MAAM,MACJ1T,EAAK,UACLsrE,EAAS,QACTxiB,EAAO,UACPl0C,GACE35C,KAAKukD,aACT,OAAOvkD,KAAK0oD,eAAiB1oD,KAAK2oD,iBAAmBlQ,EAAW1T,MAAMv0B,MAAK,CAACuH,EAAGhS,IAAMgS,IAAMgtB,EAAMh/B,MAAO0yC,EAAW43D,YAAcA,GAAa53D,EAAWo1C,UAAYA,GAAWp1C,EAAWkB,YAAcA,CAC3M,CACA,uBAAA0F,CAAwBC,GACtB,MAAM,OACJ4wD,EAAM,KACNv2E,GACE35B,KAAKygH,eAAc,GAMvB,OALAnhE,EAAWqjD,aAAa,CACtBhpE,OACA02E,UAAWrwG,KAAKo9G,gBAAgB,gBAChClN,WAEK,IACT,EAKF,MAAM4S,WAA2BlC,GAC/B,SAAAxL,GACE,IAAI/9C,EAAOthC,MAAMq/E,YAIjB,OAHK/9C,EAAKjO,SAAS,OACjBiO,GAAQ,KAEHA,CACT,EAoBF,MAAM0rD,GACJnkF,UAAqB,CACnB6H,OAAQ,IACRu8E,aAAc,IACdC,OAAQ,GACRC,WAAY,IAEd,SAAO,CAAmBC,EAAIC,EAAIr9G,EAAGie,GAGnC,OADAA,GAAKo/F,EACK,KAFVr9G,GAAKo9G,GAGIn/F,EAAI,EAAI,EAAI,EAEX,IAANje,EACKie,EAAI,EAEN,EAAIA,CACb,CACA4a,UAA4B,IAAIykF,WAAW,CAAC,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAC/F,SAAO,CAAkB7lF,EAAKwD,EAAOmiF,EAAIC,EAAIr9G,EAAGie,EAAG6xC,GACjD,MAAMrmD,EAAKxP,MAAK,GAAmBmjH,EAAIC,EAAIr9G,EAAGie,GAC9C,IAAK,IAAInP,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMyuG,IAAOzuG,EAAIrF,EAAKqmD,EAAS,IAAM,EAGrC,GAAmD,IAA/Cr4B,GAAK2lF,EAFMnjH,MAAK,GAAmB,EAAIsjH,IAEnBtiF,GAASoiF,EADlBpjH,MAAK,GAAmB,EAAIsjH,EAAK,KAE9C,OAAOA,CAEX,CACA,OAAQ,CACV,CACA,SAAO,CAAyB9lF,EAAKwD,EAAOmiF,EAAIC,EAAIr9G,EAAGie,EAAG6xC,GACxD,MAAMrmD,EAAKxP,MAAK,GAAmBmjH,EAAIC,EAAIr9G,EAAGie,GAC9C,IAAK,IAAInP,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAMyuG,GAAMzuG,EAAIrF,EAAKqmD,EAAS,IAAM,EAGpC,GAAmD,IAA/Cr4B,GAAK2lF,EAFMnjH,MAAK,GAAmB,EAAIsjH,IAEnBtiF,GAASoiF,EADlBpjH,MAAK,GAAmB,EAAIsjH,EAAK,KAE9C,OAAOA,CAEX,CACA,OAAQ,CACV,CACA,SAAO,CAAc9lF,EAAKwD,EAAOC,EAAQsiF,GACvC,MAAMrM,EAAI15E,EAAIhgC,OACR+7C,EAAQ,IAAI8pE,WAAWnM,GAC7B,IAAK,IAAInxG,EAAI,EAAGA,EAAImxG,EAAGnxG,IACrBwzC,EAAMxzC,GAAKy3B,EAAIz3B,IAAMw9G,EAAY,EAAI,EAEvC,IAAK,IAAIx9G,EAAI,EAAGA,EAAIk7B,EAAS,EAAGl7B,IAC9BwzC,EAAMxzC,EAAIi7B,GAASuY,EAAMxzC,EAAIi7B,EAAQA,EAAQ,GAAK,EAEpD,IAAK,IAAIj7B,EAAI,EAAGA,EAAIi7B,EAAOj7B,IACzBwzC,EAAMxzC,GAAKwzC,EAAMvY,EAAQC,EAAS,EAAIl7B,GAAK,EAE7C,IACIy9G,EADAC,EAAM,EAEV,MAAMC,EAAW,GACjB,IAAK,IAAI39G,EAAI,EAAGA,EAAIk7B,EAAS,EAAGl7B,IAAK,CACnCy9G,EAAO,EACP,IAAK,IAAIx/F,EAAI,EAAGA,EAAIgd,EAAQ,EAAGhd,IAAK,CAClC,MAAM2/F,EAAK59G,EAAIi7B,EAAQhd,EACjB4/F,EAAMrqE,EAAMoqE,GAClB,GAAY,IAARC,EACF,SAEF,IAAIC,EAAK99G,EACL+9G,EAAK9/F,EACT,GAAY,IAAR4/F,GAA+B,IAAlBrqE,EAAMoqE,EAAK,GAC1BF,GAAO,EACPK,GAAM,MACD,MAAIF,GAAO,GAAuB,IAAlBrqE,EAAMoqE,EAAK,IAM3B,CACO,IAARC,IACFJ,EAAOzgH,KAAK25B,IAAIknF,IAElB,QACF,CAVEH,GAAO,EACPK,GAAM,EACFF,EAAM,IACRJ,EAAOI,EAOX,CACA,MAAM1T,EAAS,CAAClsF,EAAGje,GACbg+G,EAASD,IAAO9/F,EAAI,EACpBggG,EAAU,CACdD,SACA7T,SACA1gG,GAAIi0G,EACJ74E,OAAQ,GAGV,IAAIq5E,EADJP,EAASn7G,KAAKy7G,GAEd,IAAK,MAAMjsG,KAAK2rG,EACd,GAAI3rG,EAAEvI,KAAOg0G,EAAM,CACjBS,EAAWlsG,EACX,KACF,CAEGksG,EAEMA,EAASF,OAClBC,EAAQp5E,OAASm5E,EAASE,EAASr5E,OAAS44E,EAE5CQ,EAAQp5E,OAASm5E,EAASP,EAAOS,EAASr5E,OAJ1Co5E,EAAQp5E,OAASm5E,EAASP,EAAO,EAMnC,MAAM3uG,EAAI7U,MAAK,GAAkBu5C,EAAOvY,EAAOj7B,EAAGie,EAAG6/F,EAAIC,EAAI,GAC7D,IAAW,IAAPjvG,EAAU,CACZ0kC,EAAMoqE,IAAOF,EACK,IAAdlqE,EAAMoqE,KACRH,EAAOzgH,KAAK25B,IAAI6c,EAAMoqE,KAExB,QACF,CACA,IAAIO,EAASlkH,MAAK,GAAmB,EAAI6U,GACrCsvG,EAASnkH,MAAK,GAAmB,EAAI6U,EAAI,GAC7C,MAAMuvG,EAAKr+G,EAAIm+G,EACTG,EAAKrgG,EAAImgG,EACfN,EAAKO,EACLN,EAAKO,EACL,IAAIC,EAAKv+G,EACLw+G,EAAKvgG,EACT,OAAa,CACX,MAAMs/F,EAAKtjH,MAAK,GAAyBu5C,EAAOvY,EAAOsjF,EAAIC,EAAIV,EAAIC,EAAI,GACvEI,EAASlkH,MAAK,GAAmB,EAAIsjH,GACrCa,EAASnkH,MAAK,GAAmB,EAAIsjH,EAAK,GAC1C,MAAMkB,EAAKF,EAAKJ,EACVO,EAAKF,EAAKJ,EAChBjU,EAAO3nG,KAAKk8G,EAAID,GAChB,MAAME,EAAMJ,EAAKtjF,EAAQujF,EAMzB,GALuB,IAAnBhrE,EAAMmrE,EAAM,GACdnrE,EAAMmrE,IAAQjB,EACU,IAAflqE,EAAMmrE,KACfnrE,EAAMmrE,GAAOjB,GAEXe,IAAOz+G,GAAK0+G,IAAOzgG,GAAKsgG,IAAOF,GAAMG,IAAOF,EAAI,CAChC,IAAd9qE,EAAMoqE,KACRH,EAAOzgH,KAAK25B,IAAI6c,EAAMoqE,KAExB,KACF,CACEE,EAAKS,EACLR,EAAKS,EACLD,EAAKE,EACLD,EAAKE,CAET,CACF,CACF,CACA,OAAOf,CACT,CACA,SAAO,CAAsBxT,EAAQ1sF,EAAOjC,EAAKqY,GAC/C,GAAIrY,EAAMiC,GAAS,EAAG,CACpB,IAAK,IAAIzd,EAAIyd,EAAOzd,EAAIwb,EAAM,EAAGxb,GAAK,EACpC6zB,EAAOrxB,KAAK2nG,EAAOnqG,GAAImqG,EAAOnqG,EAAI,IAEpC,MACF,CACA,MAAM4+G,EAAKzU,EAAO1sF,GACZohG,EAAK1U,EAAO1sF,EAAQ,GACpBqhG,EAAM3U,EAAO3uF,EAAM,GAAKojG,EACxBG,EAAM5U,EAAO3uF,EAAM,GAAKqjG,EACxBG,EAAOhiH,KAAKihD,MAAM6gE,EAAKC,GACvBE,EAAOH,EAAME,EACbE,EAAOH,EAAMC,EACbG,EAAKF,EAAOJ,EAAKK,EAAON,EACxB1sG,EAAI6sG,EAAMD,EACVM,EAAO,EAAIJ,EACXK,EAAMriH,KAAKsiH,KAAKptG,GAChBqtG,EAASviH,KAAKiqF,IAAIo4B,GAClBG,EAASxiH,KAAKgqF,IAAIq4B,GAClBI,EAAOL,GAAQpiH,KAAK25B,IAAI4oF,GAAUviH,KAAK25B,IAAI6oF,IAC3CE,EAAON,GAAQ,EAAIK,EAAOA,GAAQ,GAClCE,EAAa3iH,KAAKkO,IAAIlO,KAAKsiH,KAAKtiH,KAAK25B,IAAI6oF,EAASD,GAAUG,GAAO1iH,KAAKsiH,KAAKtiH,KAAK25B,IAAI6oF,EAASD,GAAUG,IAC/G,IAAIE,EAAO,EACPx5G,EAAQqX,EACZ,IAAK,IAAIzd,EAAIyd,EAAQ,EAAGzd,EAAIwb,EAAM,EAAGxb,GAAK,EAAG,CAC3C,MAAM0zB,EAAI12B,KAAK25B,IAAIwoF,EAAKF,EAAO9U,EAAOnqG,EAAI,GAAKk/G,EAAO/U,EAAOnqG,IACzD0zB,EAAIksF,IACNx5G,EAAQpG,EACR4/G,EAAOlsF,EAEX,CACIksF,GAAQZ,EAAOW,IAAe,GAChC1lH,MAAK,GAAsBkwG,EAAQ1sF,EAAOrX,EAAQ,EAAGytB,GACrD55B,MAAK,GAAsBkwG,EAAQ/jG,EAAOoV,EAAKqY,IAE/CA,EAAOrxB,KAAKo8G,EAAIC,EAEpB,CACA,SAAO,CAAgB1U,GACrB,MAAMt2E,EAAS,GACTjoB,EAAMu+F,EAAO1yG,OAGnB,OAFAwC,MAAK,GAAsBkwG,EAAQ,EAAGv+F,EAAKioB,GAC3CA,EAAOrxB,KAAK2nG,EAAOv+F,EAAM,GAAIu+F,EAAOv+F,EAAM,IACnCioB,EAAOp8B,QAAU,EAAI,KAAOo8B,CACrC,CACA,SAAO,CAAiB4D,EAAKwD,EAAOC,EAAQ2kF,EAAQ3C,EAAQC,GAC1D,MAAM2C,EAAS,IAAI3/C,aAAag9C,GAAc,GACxC4C,GAAW,EAAIF,GAAU,EACzBG,EAAW7C,GAAc,EAC/B,IAAK,IAAIn9G,EAAI,EAAGA,EAAIm9G,EAAYn9G,IAAK,CACnC,MAAM7C,GAAK6C,EAAIggH,IAAa,EAC5B,IAAK,IAAI/hG,EAAI,EAAGA,EAAIk/F,EAAYl/F,IAC9B6hG,EAAO9/G,EAAIm9G,EAAal/F,GAAKjhB,KAAKijH,KAAK9iH,GAAK8gB,EAAI+hG,IAAa,GAAKD,EAEtE,CACA,MAAMG,EAAc,IAAI//C,aAAa,KAC/BggD,GAAW,EAAIjD,GAAU,EAC/B,IAAK,IAAIl9G,EAAI,EAAGA,EAAI,IAAKA,IACvBkgH,EAAYlgH,GAAKhD,KAAKijH,IAAIjgH,GAAK,EAAImgH,GAErC,MAAMhP,EAAI15E,EAAIhgC,OACR2oH,EAAM,IAAIz/G,WAAWwwG,GACrBkP,EAAY,IAAIjvF,YAAY,KAClC,IAAK,IAAIpxB,EAAI,EAAGA,EAAIk7B,EAAQl7B,IAC1B,IAAK,IAAIie,EAAI,EAAGA,EAAIgd,EAAOhd,IAAK,CAC9B,MAAM2/F,EAAK59G,EAAIi7B,EAAQhd,EACjB8iC,EAAStpB,EAAImmF,GACnB,IAAI0C,EAAM,EACNC,EAAO,EACX,IAAK,IAAIzxG,EAAI,EAAGA,EAAIquG,EAAYruG,IAAK,CACnC,MAAM+mB,EAAI71B,EAAI8O,EAAIkxG,EAClB,KAAInqF,EAAI,GAAKA,GAAKqF,GAGlB,IAAK,IAAIslF,EAAI,EAAGA,EAAIrD,EAAYqD,IAAK,CACnC,MAAMrjH,EAAI8gB,EAAIuiG,EAAIR,EAClB,GAAI7iH,EAAI,GAAKA,GAAK89B,EAChB,SAEF,MAAMwlF,EAAYhpF,EAAI5B,EAAIoF,EAAQ99B,GAC5B0iC,EAAIigF,EAAOhxG,EAAIquG,EAAaqD,GAAKN,EAAYljH,KAAK25B,IAAI8pF,EAAY1/D,IACxEu/D,GAAOG,EAAY5gF,EACnB0gF,GAAQ1gF,CACV,CACF,CAEAwgF,EADYD,EAAIxC,GAAM5gH,KAAKsnD,MAAMg8D,EAAMC,KAEzC,CAEF,MAAO,CAACH,EAAKC,EACf,CACA,SAAO,CAAc5oF,GACnB,MAAM4oF,EAAY,IAAIjvF,YAAY,KAClC,IAAK,MAAMoB,KAAKiF,EACd4oF,EAAU7tF,KAEZ,OAAO6tF,CACT,CACA,SAAO,CAAS5oF,GACd,MAAM05E,EAAI15E,EAAIhgC,OACR2oH,EAAM,IAAIM,kBAAkBvP,GAAK,GACvC,IAAIjmG,GAAOuF,IACPxN,EAAMwN,IACV,IAAK,IAAIzQ,EAAI,EAAGi8B,EAAKmkF,EAAI3oH,OAAQuI,EAAIi8B,EAAIj8B,IAAK,CAE5C,GAAU,IADAy3B,EAAe,GAAVz3B,GAAK,IACP,CACXkL,EAAMk1G,EAAIpgH,GAAK,IACf,QACF,CACA,MAAM69G,EAAMuC,EAAIpgH,GAAKy3B,EAAIz3B,GAAK,GAC1B69G,EAAM3yG,IACRA,EAAM2yG,GAEJA,EAAM56G,IACRA,EAAM46G,EAEV,CACA,MAAMv1B,EAAQ,KAAOp9E,EAAMjI,GAC3B,IAAK,IAAIjD,EAAI,EAAGA,EAAImxG,EAAGnxG,IACrBogH,EAAIpgH,IAAMogH,EAAIpgH,GAAKiD,GAAOqlF,EAE5B,OAAO83B,CACT,CACA,SAAO,CAAgBC,GACrB,IAAIrgH,EACA2gH,GAAKlwG,IACLmwG,GAAKnwG,IACT,MAAMxN,EAAMo9G,EAAUrY,WAAUn5F,GAAW,IAANA,IACrC,IAAIkkB,EAAM9vB,EACN49G,EAAO59G,EACX,IAAKjD,EAAIiD,EAAKjD,EAAI,IAAKA,IAAK,CAC1B,MAAM6O,EAAIwxG,EAAUrgH,GAChB6O,EAAI8xG,IACF3gH,EAAI+yB,EAAM6tF,IACZA,EAAI5gH,EAAI+yB,EACR8tF,EAAO7gH,EAAI,GAEb2gH,EAAI9xG,EACJkkB,EAAM/yB,EAEV,CACA,IAAKA,EAAI6gH,EAAO,EAAG7gH,GAAK,KAClBqgH,EAAUrgH,GAAKqgH,EAAUrgH,EAAI,IADRA,KAK3B,OAAOA,CACT,CACA,SAAO,CAAeiY,GACpB,MAAM6oG,EAAiB7oG,GACjB,MACJgjB,EAAK,OACLC,GACEjjB,GACE,OACJyoB,GACEzmC,MAAK,GACT,IAAIkqD,EAAWlpB,EACXmpB,EAAYlpB,EAChB,GAAID,EAAQyF,GAAUxF,EAASwF,EAAQ,CACrC,IAAIqgF,EAAY9lF,EACZ+lF,EAAa9lF,EACboxC,EAAQtvE,KAAKikH,KAAKjkH,KAAKkO,IAAI+vB,EAAOC,GAAUwF,GAChD,MAAMwgF,EAASlkH,KAAKC,MAAMqvE,GAC1BA,EAAQA,IAAU40C,EAASA,EAAS,EAAIA,EACxC,IAAK,IAAIlhH,EAAI,EAAGA,EAAIssE,EAAOtsE,IAAK,CAC9BmkD,EAAWnnD,KAAKD,KAAKgkH,EAAY,GACjC38D,EAAYpnD,KAAKD,KAAKikH,EAAa,GACnC,MAAM75E,EAAY,IAAI5V,gBAAgB4yB,EAAUC,GACpCjd,EAAU/B,WAAW,MAC7BK,UAAUxtB,EAAQ,EAAG,EAAG8oG,EAAWC,EAAY,EAAG,EAAG78D,EAAUC,GACnE28D,EAAY58D,EACZ68D,EAAa58D,EACTnsC,IAAW6oG,GACb7oG,EAAO5T,QAET4T,EAASkvB,EAAUC,uBACrB,CACA,MAAMkhD,EAAQtrF,KAAKiG,IAAIy9B,EAASyjB,EAAUzjB,EAAS0jB,GACnDD,EAAWnnD,KAAKsnD,MAAMH,EAAWmkC,GACjClkC,EAAYpnD,KAAKsnD,MAAMF,EAAYkkC,EACrC,CACA,MACMnpD,EADY,IAAI5N,gBAAgB4yB,EAAUC,GAC1Bhf,WAAW,KAAM,CACrCC,oBAAoB,IAEtBlG,EAAIz5B,OAAS,eACby5B,EAAIsG,UAAUxtB,EAAQ,EAAG,EAAGA,EAAOgjB,MAAOhjB,EAAOijB,OAAQ,EAAG,EAAGipB,EAAUC,GACzE,MAAM+8D,EAAYhiF,EAAIuG,aAAa,EAAG,EAAGye,EAAUC,GAAW78C,KAE9D,MAAO,CADUtN,MAAK,GAASknH,GACbh9D,EAAUC,EAC9B,CACA,8BAAOg9D,CAAwB/iG,GAAM,WACnC+xC,EAAU,UACVixD,EAAS,WACTvwD,GACCz1B,EAAWC,EAAYjB,EAAU21E,GAClC,IAAI9oE,EAAS,IAAI3V,gBAAgB,EAAG,GAChC4N,EAAM+H,EAAO9B,WAAW,KAAM,CAChCwiD,OAAO,IAET,MACM74B,EAAO5vB,EAAI4vB,KAAO,GAAGsyD,KAAavwD,WAA4BV,KAC9D,sBACJkxD,EAAqB,uBACrBC,EAAsB,wBACtBC,EAAuB,yBACvBC,EAAwB,sBACxBt5B,EAAqB,uBACrBE,EAAsB,MACtBptD,GACEkE,EAAIk2C,YAAYh3D,GACdqjG,EAAQ,IACRvgD,EAAcnkE,KAAKD,KAAKC,KAAKkO,IAAIlO,KAAK25B,IAAI2qF,GAAyBtkH,KAAK25B,IAAI4qF,IAA2B,EAAGtmF,GAASymF,GACnHtgD,EAAepkE,KAAKD,KAAKC,KAAKkO,IAAIlO,KAAK25B,IAAI6qF,GAA2BxkH,KAAK25B,IAAI8qF,IAbpE,IAa2GzkH,KAAK25B,IAAIwxD,GAAyBnrF,KAAK25B,IAAI0xD,IAbtJ,KAa6Lq5B,GAC9Mx6E,EAAS,IAAI3V,gBAAgB4vC,EAAaC,GAC1CjiC,EAAM+H,EAAO9B,WAAW,KAAM,CAC5BwiD,OAAO,EACPviD,oBAAoB,IAEtBlG,EAAI4vB,KAAOA,EACX5vB,EAAIz5B,OAAS,eACby5B,EAAIs9B,UAAY,QAChBt9B,EAAIwsC,SAAS,EAAG,EAAGxK,EAAaC,GAChCjiC,EAAIs9B,UAAY,QAChBt9B,EAAImxB,SAASjyC,EAAoB,GAAd8iD,EAA4B,EAAkB,IAAfC,EAA6B,GAC/E,MAAMugD,EAAW1nH,MAAK,GAASklC,EAAIuG,aAAa,EAAG,EAAGy7B,EAAaC,GAAc75D,MAC3E84G,EAAYpmH,MAAK,GAAc0nH,GAC/BnE,EAAYvjH,MAAK,GAAgBomH,GACjCuB,EAAc3nH,MAAK,GAAc0nH,EAAUxgD,EAAaC,EAAco8C,GAC5E,OAAOvjH,KAAK4nH,kBAAkB,CAC5BvY,MAAO,CACLwY,OAAQF,EACR3mF,MAAOkmC,EACPjmC,OAAQkmC,GAEV/lC,YACAC,aACAjB,WACA21E,cACA+R,YAAY,EACZC,aAAa,GAEjB,CACA,cAAO71G,CAAQ8L,EAAQojB,EAAWC,EAAYjB,EAAU21E,GACtD,MAAO2R,EAAU1mF,EAAOC,GAAUjhC,MAAK,GAAege,IAC/C7X,EAAQigH,GAAapmH,MAAK,GAAiB0nH,EAAU1mF,EAAOC,EAAQl+B,KAAKihD,MAAMhjB,EAAOC,GAAUjhC,MAAK,GAAYgjH,aAAchjH,MAAK,GAAYijH,OAAQjjH,MAAK,GAAYkjH,YAC1KK,EAAYvjH,MAAK,GAAgBomH,GACjCuB,EAAc3nH,MAAK,GAAcmG,EAAQ66B,EAAOC,EAAQsiF,GAC9D,OAAOvjH,KAAK4nH,kBAAkB,CAC5BvY,MAAO,CACLwY,OAAQF,EACR3mF,QACAC,UAEFG,YACAC,aACAjB,WACA21E,cACA+R,YAAY,EACZC,aAAa,GAEjB,CACA,wBAAOH,EAAkB,MACvBvY,EAAK,UACLjuE,EAAS,WACTC,EAAU,SACVjB,EAAQ,YACR21E,EAAW,WACX+R,EAAU,YACVC,IAEI3nF,EAAW,KAAQ,KACpBgB,EAAWC,GAAc,CAACA,EAAYD,IAEzC,MAAM,OACJymF,EAAM,MACN7mF,EAAK,OACLC,GACEouE,EACEgB,EAAYhB,EAAMgB,WAAa,EAC/B2X,EAAiB,GACjB35B,EAAQtrF,KAAKiG,IAAIo4B,EAAYJ,EAAOK,EAAaJ,GACjDgnF,EAAS55B,EAAQjtD,EACjB8mF,EAAS75B,EAAQhtD,EACjB8mF,EAAY,GAClB,IAAK,MAAM,OACTjY,KACG2X,EAAQ,CACX,MAAMO,EAAgBN,EAAa9nH,MAAK,GAAgBkwG,GAAUA,EAClE,IAAKkY,EACH,SAEFD,EAAU5/G,KAAK6/G,GACf,MAAMz2G,EAAMy2G,EAAc5qH,OACpB6qH,EAAY,IAAIniD,aAAav0D,GAC7By9F,EAAO,IAAIlpC,aAAa,GAAa,IAARv0D,EAAY,EAAIA,EAAM,IAKzD,GAJAq2G,EAAez/G,KAAK,CAClB6mG,OACAc,OAAQmY,IAEE,IAAR12G,EAAW,CACb02G,EAAU,GAAKD,EAAc,GAAKH,EAClCI,EAAU,GAAKD,EAAc,GAAKF,EAClC9Y,EAAK1qG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,IAAKs6E,EAAU,GAAIA,EAAU,IAAK,GAC3D,QACF,CACA,IAAKrsF,EAAIC,EAAIC,EAAIE,GAAMgsF,EACvBpsF,GAAMisF,EACNhsF,GAAMisF,EACNhsF,GAAM+rF,EACN7rF,GAAM8rF,EACNG,EAAU3jH,IAAI,CAACs3B,EAAIC,EAAIC,EAAIE,GAAK,GAChCgzE,EAAK1qG,IAAI,CAACqpC,IAAKA,IAAKA,IAAKA,IAAK/R,EAAIC,GAAK,GACvC,IAAK,IAAIl2B,EAAI,EAAGA,EAAI4L,EAAK5L,GAAK,EAAG,CAC/B,MAAM7C,EAAImlH,EAAUtiH,GAAKqiH,EAAcriH,GAAKkiH,EACtCrsF,EAAIysF,EAAUtiH,EAAI,GAAKqiH,EAAcriH,EAAI,GAAKmiH,EACpD9Y,EAAK1qG,IAAIywG,GAAQS,mBAAmB55E,EAAIC,EAAIC,EAAIE,EAAIl5B,EAAG04B,GAAc,GAAT71B,EAAI,KAC/Di2B,EAAIC,EAAIC,EAAIE,GAAM,CAACF,EAAIE,EAAIl5B,EAAG04B,EACjC,CACF,CACA,GAA8B,IAA1BosF,EAAexqH,OACjB,OAAO,KAET,MAAMs5G,EAAUiR,EAAc,IAAIjF,GAAuB,IAAIlC,GAE7D,OADA9J,EAAQta,MAAMwrB,EAAgB5mF,EAAWC,EAAY,EAAGjB,EAAU2nF,EAAc,EAAI1X,EAAW0F,GACxF,CACLe,UACAqR,YACAJ,cACA1X,YACArvE,QACAC,SAEJ,CACA,8BAAaqnF,EAAkB,SAC7BjQ,EAAQ,YACR0P,EAAW,UACX1X,EAAS,MACTrvE,EAAK,OACLC,IAEA,IAWIsnF,EAXAC,EAAUhyG,IACViyG,GAAWjyG,IACXkyG,EAAiB,EACrB,IAAK,MAAMxY,KAAUmI,EAAU,CAC7BqQ,GAAkBxY,EAAO1yG,OACzB,IAAK,IAAIuI,EAAI,EAAGi8B,EAAKkuE,EAAO1yG,OAAQuI,EAAIi8B,EAAIj8B,IAAK,CAC/C,MAAM4iH,EAAKzY,EAAOnqG,GAAKmqG,EAAOnqG,EAAI,GAClCyiH,EAAUzlH,KAAKiG,IAAIw/G,EAASG,GAC5BF,EAAU1lH,KAAKkO,IAAIw3G,EAASE,EAC9B,CACF,CAGEJ,EADEC,IAAY,KAAOC,GAAW,IACnBG,UACJJ,IAAY,OAASC,GAAW,MAC5BI,WAEAxF,WAEf,MAAM1xG,EAAM0mG,EAAS76G,OACfsrH,EApgBiB,EACM,EAmgBwCn3G,EAC/Dg9F,EAAS,IAAIx3E,YAAY2xF,GAC/B,IAAIjzD,EAAS,EACb84C,EAAO94C,KAAYizD,EAAe3xF,YAAY4xF,mBAAqBL,EAAiB,EAAI/2G,GAAO42G,EAAWQ,kBAC1Gpa,EAAO94C,KAAY,EACnB84C,EAAO94C,KAAY70B,EACnB2tE,EAAO94C,KAAY50B,EACnB0tE,EAAO94C,KAAYkyD,EAAc,EAAI,EACrCpZ,EAAO94C,KAAY9yD,KAAKkO,IAAI,EAAGlO,KAAKC,MAAMqtG,GAAa,IACvD1B,EAAO94C,KAAYlkD,EACnBg9F,EAAO94C,KAAY0yD,EAAWQ,kBAC9B,IAAK,MAAM7Y,KAAUmI,EACnB1J,EAAO94C,KAAYq6C,EAAO1yG,OAAS,EACnCmxG,EAAO94C,KAAYq6C,EAAO,GAC1BvB,EAAO94C,KAAYq6C,EAAO,GAE5B,MAAMprC,EAAK,IAAIkkD,kBAAkB,eAC3BC,EAASnkD,EAAGtlE,SAAS0pH,kBACrBD,EAAO9tD,MACb8tD,EAAO9+G,MAAMwkG,GACb,MAAMwa,EAAaZ,EAAW9oH,UAAUF,YACxC,IAAK,MAAM2wG,KAAUmI,EAAU,CAC7B,MAAM+Q,EAAQ,IAAID,EAAWjZ,EAAO1yG,OAAS,GAC7C,IAAK,IAAIuI,EAAI,EAAGi8B,EAAKkuE,EAAO1yG,OAAQuI,EAAIi8B,EAAIj8B,IAC1CqjH,EAAMrjH,EAAI,GAAKmqG,EAAOnqG,GAAKmqG,EAAOnqG,EAAI,GAExCkjH,EAAO9+G,MAAMi/G,EACf,CACAH,EAAO7+G,QACP,MAAMozB,QAAY,IAAI6rF,SAASvkD,EAAGwkD,UAAUvuG,cAE5C,OAAO6iB,GADO,IAAIl3B,WAAW82B,GAE/B,CACA,gCAAa+rF,CAAoBC,GAC/B,IACE,MAAMngH,GA/vnBYytB,EA+vnBW0yF,EA9vnB7B9iH,WAAWogB,WACNpgB,WAAWogB,WAAWgQ,GAExBD,GAAc8+B,KAAK7+B,MA4vnBhB,SACJwyF,EAAQ,SACR9pH,GACE,IAAIiqH,oBAAoB,eACtBR,EAASzpH,EAAS0pH,kBAClBD,EAAO9tD,MACb8tD,EAAO9+G,MAAMd,GAAOkiC,MAAKzM,gBACjBmqF,EAAO9tD,YACP8tD,EAAO7+G,OAAO,IACnBgyD,OAAM,SACT,IAAI9uD,EAAO,KACPuoD,EAAS,EACb,UAAW,MAAMnwC,KAAS4jG,EACxBh8G,IAAS,IAAI5G,WAAW,IAAIywB,YAAYzR,EAAMvf,OAAQ,EAAG,GAAG,IAC5DmH,EAAK5I,IAAIghB,EAAOmwC,GAChBA,GAAUnwC,EAAMloB,OAElB,MAAMmxG,EAAS,IAAIx3E,YAAY7pB,EAAKnH,OAAQ,EAAGmH,EAAK9P,QAAU,GACxDwU,EAAU28F,EAAO,GACvB,GAAgB,IAAZ38F,EACF,MAAM,IAAIqE,MAAM,oBAAoBrE,KAEtC,MAAMgvB,EAAQ2tE,EAAO,GACf1tE,EAAS0tE,EAAO,GAChBoZ,EAA4B,IAAdpZ,EAAO,GACrB0B,EAAY1B,EAAO,GACnB+a,EAAmB/a,EAAO,GAC1B4Z,EAAa5Z,EAAO,GACpB0J,EAAW,GACXsR,GArkBe,EACM,EAokB0CD,GAAoBvyF,YAAY4xF,kBACrG,IAAIK,EACJ,OAAQb,GACN,KAAKK,UAAUG,kBACbK,EAAQ,IAAIR,UAAUt7G,EAAKnH,OAAQwjH,GACnC,MACF,KAAKd,WAAWE,kBACdK,EAAQ,IAAIP,WAAWv7G,EAAKnH,OAAQwjH,GACpC,MACF,KAAKtG,WAAW0F,kBACdK,EAAQ,IAAI/F,WAAW/1G,EAAKnH,OAAQwjH,GAGxC9zD,EAAS,EACT,IAAK,IAAI9vD,EAAI,EAAGA,EAAI2jH,EAAkB3jH,IAAK,CACzC,MAAM4L,EAAMg9F,EAnlBa,EAmlBqB5oG,EAplB3B,GAqlBbmqG,EAAS,IAAIhqC,aAAav0D,EAAM,GACtC0mG,EAAS9vG,KAAK2nG,GACd,IAAK,IAAIlsF,EAAI,EAAGA,EAAI4lG,EAA8B5lG,IAChDksF,EAAOlsF,GAAK2qF,EAvlBW,EAulBuB5oG,EAxlB7B,EAwlBsDie,EAAI,GAE7E,IAAK,IAAIA,EAAI,EAAGA,EAAIrS,EAAKqS,IACvBksF,EAAOlsF,EAAI,GAAKksF,EAAOlsF,GAAKolG,EAAMvzD,IAEtC,CACA,MAAO,CACLkyD,cACA1X,YACAgI,WACAr3E,QACAC,SAEJ,CAAE,MAAO7wB,GAEP,OADAmkB,EAAK,wBAAwBnkB,KACtB,IACT,CAh0nBJ,IAAwB0mB,CAi0nBtB,EAaF,MAAM+yF,WAAyBrN,GAC7B,WAAAj9G,GACEw2B,QACAA,MAAMslF,iBAAiB,CACrBjsF,KAAM+0B,GAAiBuB,kBACvB,eAAgB,GAEpB,CACA,KAAAr/C,GACE,MAAMA,EAAQ,IAAIwjH,GAElB,OADAxjH,EAAMu2G,UAAU58G,MACTqG,CACT,EAEF,MAAMyjH,WAA8BpH,GAClC,WAAAnjH,CAAYojH,GACV5sF,MAAM4sF,GACN5sF,MAAMslF,iBAAiB,CACrBnsF,OAAQi1B,GAAiBuB,kBACzB,eAAgB,GAEpB,CACA,KAAAr/C,GACE,MAAMA,EAAQ,IAAIyjH,GAAsB9pH,KAAK4iH,iBAE7C,OADAv8G,EAAMu2G,UAAU58G,MACTqG,CACT,EAEF,MAAM0jH,WAAwBlN,GAC5B,KAAe,EACf,IAAe,KACf,IAAiB,KACjB,IAAiB,KACjBj+E,aAAe,YACfA,mBAAqB9U,EAAqBM,UAC1CwU,8BAAgC,KAChC,WAAAr/B,CAAYkV,GACVshB,MAAM,IACDthB,EACHsoG,iBAAiB,EACjB99G,KAAM,oBAERe,KAAK+kD,sBAAuB,EAC5B/kD,MAAK,GAAiByU,EAAO+0G,eAAiB,KAC9CxpH,MAAK,GAAe,KACpBA,KAAK6sD,cAAgB,gCACvB,CACA,iBAAO5M,CAAWC,EAAM5V,GACtB6Z,GAAiBlE,WAAWC,EAAM5V,GAClCtqC,KAAK89G,uBAAyB,IAAI+L,GAClC7pH,KAAKgqH,8BAAgC,IAAIF,GAAsBx/E,EAAU6I,eAC3E,CACA,+BAAOsqE,CAAyBv+G,GAC9B,MAAMmH,EAAQrG,KAAK89G,uBAAuBz3G,QAE1C,OADAA,EAAMg1G,iBAAiBn8G,GAChBmH,CACT,CACA,kCAAWu3G,GACT,OAAO,CACT,CACA,mBAAWD,GACT,OAAOloF,EAAOz1B,KAAM,WAAY,IAAIi9B,IACtC,CACA,mBAAWwoB,GACT,OAAO,CACT,CACA,sBAAI6K,GACF,MAAO,CACL3qD,KAAM,YACNskH,iBAAkBjqH,MAAK,GAE3B,CACA,gCAAO+yD,CAA0BzlD,GAC/B,MAAM48G,EAAsB58G,EAAKnP,IAAI,kBACrC,MAAO,CACLwuD,WAAYu9D,EAAoB/rH,KAAI,IAAS,EAC7CgsH,aAAcD,EAAoB/rH,KAAI,IAAU,EAEpD,CACA,eAAIwc,GACF,OAAO,CACT,CACA,eAAAi4B,GACuB,OAAjB5yC,KAAK88G,SAGT/mF,MAAM6c,iBACR,CACA,MAAA9K,GACE,GAAI9nC,KAAKulC,IACP,OAAOvlC,KAAKulC,IAEd,IAAIsiB,EAAOC,EACX,MAAM,QACJ1D,GACEpkD,KAOJ,GANIokD,IACFpkD,KAAKokD,SAAU,EACfyD,EAAQ7nD,KAAKkD,EACb4kD,EAAQ9nD,KAAK47B,GAEf7F,MAAM+R,SACe,OAAjB9nC,KAAK88G,QACP,GAAI98G,MAAK,GAAgB,CACvB,MAAM,MACJqvG,EAAK,WACLyY,EAAU,YACVC,EAAW,YACX79E,EAAW,KACXkgF,EAAI,aACJC,GACErqH,MAAK,IAEPkhC,SAAS,UACPE,EAAS,WACTC,GACD,SACDjB,GACEpgC,KAAK4qC,OAAOpF,SACVsxE,EAAUiM,GAAmB6E,kBAAkB,CACnDvY,QACAjuE,YACAC,aACAjB,WACA21E,YAAagU,GAAgB/J,cAC7B8H,aACAC,gBAEF/nH,KAAKsqH,aAAaxT,EAASuT,EAAcngF,EAAakgF,EACxD,MACEpqH,KAAKulC,IAAIS,aAAa,iBAAkBjkB,KAAKo1B,UAAU,CACrDjN,YAAa,MAEflqC,KAAKulC,IAAIk6D,QAAS,EAClBz/F,KAAKioC,WAAWwM,aAAaz0C,MAOjC,OAJIokD,IACFpkD,KAAKokD,SAAU,EACfpkD,KAAK4nD,gBAAgBC,EAAOC,IAEvB9nD,KAAKulC,GACd,CACA,OAAAglF,CAAQH,GACNpqH,MAAK,GAAiBoqH,EACtBpqH,KAAKgsD,gBACP,CACA,OAAA3uB,GACE,OAAOr9B,MAAK,EACd,CACA,eAAIkqC,GACF,OAAOlqC,MAAK,EACd,CACA,eAAIkqC,CAAYA,GACdlqC,MAAK,GAAekqC,EACpBnU,MAAMi2B,iBAAiBzgB,MAAKi/E,IAC1BA,GAASvgF,0BAA0BC,EAAY,GAEnD,CACA,mBAAAugF,GACE,MAAM,UACJtC,EAAS,YACTJ,EAAW,UACX1X,EAAS,MACTrvE,EAAK,OACLC,GACEjhC,MAAK,GACHymC,EAAS1jC,KAAKkO,IAAI+vB,EAAOC,GAiB/B,MAAO,CACL8mF,cACAjR,QAlBkBiM,GAAmB6E,kBAAkB,CACvDvY,MAAO,CACLwY,OAAQM,EAAUhgH,KAAI+nG,IAAU,CAC9BA,aAEFG,YACArvE,QACAC,UAEFG,UAAWqF,EACXpF,WAAYoF,EACZrG,SAAU,EACV21E,YAAa,EACb+R,YAAY,EACZC,gBAIqBjR,QAEzB,CACA,kBAAI/qD,GACF,OAAI/rD,KAAKioC,WAAW4B,iBACX,CAAC,CAAC,gBAAiB7pC,KAAKioC,WAAW4B,mBAErC9T,MAAMg2B,cACf,CACA,YAAAu+D,CAAah9G,EAAM+8G,EAAcngF,EAAakgF,GAC5C,MACElnH,EAAGo6C,EACH1hB,EAAG2hB,GACDv9C,MACE,QACJ82G,GACE92G,MAAK,GAAiBsN,EAM1B,IAAI6vG,EALJn9G,MAAK,GAAe82G,aAAmBgM,GACvC9iH,KAAKkqC,YAAcA,EACnBlqC,KAAKulC,IAAIS,aAAa,iBAAkBjkB,KAAKo1B,UAAU,CACrDjN,iBAGElqC,MAAK,GACPm9G,EAAiB4M,GAAgBtM,4BAEjCN,EAAiB4M,GAAgBC,8BAA8B3jH,QAC/D82G,EAAe9B,iBAAiB,CAC9B,eAAgBvE,EAAQzG,aAG5BrwG,KAAKg9G,aAAa,CAChBC,aAAcnG,EACdqG,mBAEF,MAAOr+D,EAAaC,GAAgB/+C,KAAKqlD,kBAClC,CAAEhkB,GAAcrhC,KAAKmlD,eAC5B,IAAIgF,EAAYkgE,EAAehpF,EAC/B8oB,EAAYA,GAAa,EAAI,GAAMA,EACnCnqD,KAAKghC,OAASmpB,EAAYnqD,KAAKihC,OAC3BjhC,KAAKghC,OAAS,IAChBmpB,GAAa,GAAMnqD,KAAKghC,MACxBhhC,KAAKghC,MAAQ,IAEfhhC,KAAKihC,OAASkpB,EACdnqD,KAAKipD,QAAQnK,EAAc9+C,KAAKghC,MAAO+d,EAAe/+C,KAAKihC,QAC3DjhC,KAAKkD,EAAIo6C,EACTt9C,KAAK47B,EAAI2hB,EACTv9C,KAAK8mD,SACL9mD,KAAKiqD,aACLjqD,KAAK4yC,kBACL5yC,KAAK4uD,SACL5uD,KAAKioC,WAAW8O,uBAAuB/2C,MACvCA,KAAKuqH,QAAQH,GACbpqH,KAAKsgD,iBAAiB,CACpBxF,OAAQ,2BACRxtC,KAAM,CACJo9G,eAAgBN,EAChBH,iBAAkB//E,KAGtBlqC,KAAKulC,IAAIk6D,QAAS,CACpB,CACA,YAAAkrB,CAAa3sG,GACX,MACEkjB,SAAS,UACPE,EAAS,WACTC,GACD,SACDjB,GACEpgC,KAAK4qC,OAAOpF,SAChB,OAAOu9E,GAAmB7wG,QAAQ8L,EAAQojB,EAAWC,EAAYjB,EAAU2pF,GAAgB/J,cAC7F,CACA,WAAA4K,CAAYxmG,EAAMymG,GAChB,MACE3pF,SAAS,UACPE,EAAS,WACTC,GACD,SACDjB,GACEpgC,KAAK4qC,OAAOpF,SAChB,OAAOu9E,GAAmBoE,wBAAwB/iG,EAAMymG,EAAUzpF,EAAWC,EAAYjB,EAAU2pF,GAAgB/J,cACrH,CACA,iBAAA8K,CAAkBjD,GAChB,MACE3mF,SAAS,UACPE,EAAS,WACTC,GACD,SACDjB,GACEpgC,KAAK4qC,OAAOpF,SAChB,OAAOu9E,GAAmB6E,kBAAkB,CAC1CvY,MAAOwY,EACPzmF,YACAC,aACAjB,WACA21E,YAAagU,GAAgB/J,cAC7B8H,YAAY,EACZC,aAAa,GAEjB,CACA,oBAAA9H,EAAqB,YACnB8H,EAAW,UACX1X,IAEI0X,EACF/nH,KAAKo9G,gBAAkB2M,GAAgBtM,4BAEvCz9G,KAAKo9G,gBAAkB2M,GAAgBC,8BAA8B3jH,QACrErG,KAAKo9G,gBAAgB/B,iBAAiB,CACpC,eAAgBhL,IAGtB,CACA,SAAA33D,CAAUqI,GAAe,GACvB,GAAI/gD,KAAKowC,UACP,OAAO,KAET,MAAM,MACJi/D,EAAK,OACLa,EAAM,KACNv2E,GACE35B,KAAKygH,cAAc1/D,IAErBq8D,iBACE,eAAgB/M,IAEhBrwG,KACEy4C,EAAa,CACjBmnD,eAAgB91E,EAAqBM,UACrC2gG,aAAa,EACbhD,YAAa/nH,MAAK,GAClB+kC,MAAO,CAAC,EAAG,EAAG,GACdsrE,UAAWrwG,MAAK,GAAe,EAAIqwG,EACnC12D,UAAW35C,KAAK25C,UAChBhgB,OACAyG,SAAUpgC,KAAKogC,SACf80E,mBAAoBl1G,KAAKilD,qBAkB3B,OAhBIlE,GACFtI,EAAW4/B,MAAQ,CACjBg3B,QACAa,UAEFz3D,EAAW2xE,KAAOpqH,MAAK,GACvBy4C,EAAWwW,QAAS,GAEpBxW,EAAW42D,MAAQA,EAEjBrvG,MAAK,KACPy4C,EAAWuW,kBAAoB,CAC7BrpD,KAAM,SACNqlH,IAAKhrH,MAAK,KAGPy4C,CACT,CACA,sBAAO0nE,CAAgB7+E,EAAOC,EAAOH,EAAWC,EAAY00E,EAAazoG,GACvE,OAAIA,EAAKy6G,YACAjF,GAAmB7pE,YAAY3X,EAAOC,EAAOH,EAAWC,EAAY00E,EAAazoG,GAEnFszG,GAAe3nE,YAAY3X,EAAOC,EAAOH,EAAWC,EAAY00E,EAAazoG,EACtF,CACA,wBAAa2rC,CAAY3rC,EAAMs9B,EAAQN,GACrC,MAAM/C,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,GAIrD,OAHA/C,GAAO,GAAej6B,EAAKy6G,YAC3BxgF,GAAO,GAAej6B,EAAK0hD,mBAAmBg8D,KAAO,GACrDzjF,GAAO,GAAiBj6B,EAAK88G,KACtB7iF,CACT,EAWF,MAAM0jF,WAAoB9mE,GACxB,IAAU,KACV,IAAY,KACZ,IAAiB,KACjB,IAAa,KACb,IAAc,KACd,IAAkB,GAClB,IAAU,KACV,KAAiB,EACjB,IAAmB,KACnB,KAAS,EACT,KAA2B,EAC3BvlB,aAAe,QACfA,mBAAqB9U,EAAqBI,MAC1C,WAAA3qB,CAAYkV,GACVshB,MAAM,IACDthB,EACHxV,KAAM,gBAERe,MAAK,GAAayU,EAAOy2G,UACzBlrH,MAAK,GAAcyU,EAAO02G,WAC1BnrH,KAAK6sD,cAAgB,2BACvB,CACA,iBAAO5M,CAAWC,EAAM5V,GACtB6Z,GAAiBlE,WAAWC,EAAM5V,EACpC,CACA,+BAAOgO,CAAyBsO,GAC9B,OAAOvf,GAAwBh3B,SAASu2C,EAC1C,CACA,YAAO5O,CAAMtmC,EAAMk5B,GACjBA,EAAOwgF,YAAY,CACjBlsG,KAAM4K,EAAqBI,OAC1B,CACDihG,WAAYz5G,EAAK25G,aAErB,CACA,aAAAv/D,GACM9rD,KAAKioC,WAAW0L,oBAClB3zC,KAAKulC,IAAIk6D,QAAS,GAEpB1pE,MAAM+1B,eACR,CACA,sBAAIwE,GACF,MAAO,CACL3qD,KAAM,QACNgnD,aAAc3sD,KAAKusD,aAAa/iB,QAEpC,CACA,gCAAOupB,CAA0BzlD,GAC/B,MAAMg+G,EAAkBh+G,EAAKnP,IAAI,cACjC,MAAO,CACLwuD,WAAY2+D,EAAgBntH,KAAI,IAAS,EACzCgsH,aAAcmB,EAAgBntH,KAAI,IAAU,EAEhD,CACA,IAAkBmP,EAAMi+G,GAAS,GAC1Bj+G,GAILtN,MAAK,GAAUsN,EAAK0Q,OACfutG,IACHvrH,MAAK,GAAYsN,EAAKkC,GACtBxP,MAAK,GAASsN,EAAKs+B,OAEjBt+B,EAAKw+B,OACP9rC,MAAK,GAAkBsN,EAAKw+B,KAAK7sC,MAEnCe,MAAK,MAXHA,KAAKiQ,QAYT,CACA,MAGE,GAFAjQ,MAAK,GAAiB,KACtBA,KAAKioC,WAAWiT,eAAc,GACzBl7C,MAAK,GAGV,GAAIA,KAAKioC,WAAW2L,8BAAgC5zC,KAAKioC,WAAW0L,mBAAqB3zC,MAAK,GAC5FA,KAAKgsD,iBAAiBzgB,MAAK,KACzBvrC,KAAKqkD,aAAaxb,OAClB7oC,KAAKioC,WAAWsM,YAAYv0C,MAAM,EAAK,QAH3C,CAOA,IAAKA,KAAKioC,WAAW2L,8BAAgC5zC,KAAKioC,WAAW0L,mBAAqB3zC,MAAK,GAAS,CACtGA,KAAKsgD,iBAAiB,CACpBxF,OAAQ,0BACRxtC,KAAM,CACJk+G,gBAAgB,EAChBC,cAAe,WAGnB,IACEzrH,KAAK0rH,gBACP,CAAE,MAAO,CACX,CACA1rH,KAAKulC,IAAI0P,OAbT,CAcF,CACA,oBAAMy2E,CAAe9wB,EAAY,KAAM+wB,GAAoB,GACzD,GAAI3rH,KAAK4sD,iBACP,OAAO,KAET,MAAM,UACJva,GACEryC,KAAKioC,WACT,IAAKoK,EACH,MAAM,IAAIh8B,MAAM,UAElB,UAAYg8B,EAAUu5E,aAAa,WACjC,MAAM,IAAIv1G,MAAM,kCAElB,MAAM,KACJ/I,EAAI,MACJ0zB,EAAK,OACLC,GACE25D,GAAa56F,KAAK6rH,WAAW,KAAM,MAAM,GAAMjxB,UAC7C17D,QAAiBmT,EAAUy5E,MAAM,CACrC7sH,KAAM,UACNugC,QAAS,CACPlyB,OACA0zB,QACAC,SACA8qF,SAAUz+G,EAAK9P,QAAUwjC,EAAQC,MAGrC,IAAK/B,EACH,MAAM,IAAI7oB,MAAM,oCAElB,GAAI6oB,EAASv/B,MACX,MAAM,IAAI0W,MAAM,8BAElB,GAAI6oB,EAASgiB,OACX,OAAO,KAET,IAAKhiB,EAAStF,OACZ,MAAM,IAAIvjB,MAAM,0CAElB,MAAMmzB,EAAUtK,EAAStF,OAQzB,aAPM55B,KAAKysD,kBAAkBjjB,GACzBmiF,IAAsB3rH,KAAK4sD,mBAC7B5sD,KAAKusD,YAAc,CACjBy+D,IAAKxhF,EACLwX,YAAY,IAGTxX,CACT,CACA,MACE,GAAIxpC,MAAK,GAGP,OAFAA,KAAKioC,WAAWiT,eAAc,QAC9Bl7C,KAAKioC,WAAWyW,aAAa3R,UAAU/sC,MAAK,IAAWurC,MAAKj+B,GAAQtN,MAAK,GAAkBsN,GAAM,KAAOq+E,SAAQ,IAAM3rF,MAAK,OAG7H,GAAIA,MAAK,GAAY,CACnB,MAAM2b,EAAM3b,MAAK,GAIjB,OAHAA,MAAK,GAAa,KAClBA,KAAKioC,WAAWiT,eAAc,QAC9Bl7C,MAAK,GAAiBA,KAAKioC,WAAWyW,aAAa9R,WAAWjxB,GAAK4vB,MAAKj+B,GAAQtN,MAAK,GAAkBsN,KAAOq+E,SAAQ,IAAM3rF,MAAK,OAEnI,CACA,GAAIA,MAAK,GAAa,CACpB,MAAM8rC,EAAO9rC,MAAK,GAIlB,OAHAA,MAAK,GAAc,KACnBA,KAAKioC,WAAWiT,eAAc,QAC9Bl7C,MAAK,GAAiBA,KAAKioC,WAAWyW,aAAahS,YAAYZ,GAAMP,MAAKj+B,GAAQtN,MAAK,GAAkBsN,KAAOq+E,SAAQ,IAAM3rF,MAAK,OAErI,CACA,MAAM4M,EAAQhC,SAAS0G,cAAc,SACrC1E,EAAMjH,KAAO,OACbiH,EAAMo/G,OAAS3kF,GAAwB1oC,KAAK,KAC5C,MAAM0/B,EAASr+B,KAAKioC,WAAWC,QAC/BloC,MAAK,GAAiB,IAAImH,SAAQQ,IAChCiF,EAAM6xB,iBAAiB,UAAUK,UAC/B,GAAKlyB,EAAMq/G,OAAgC,IAAvBr/G,EAAMq/G,MAAMzuH,OAEzB,CACLwC,KAAKioC,WAAWiT,eAAc,GAC9B,MAAM5tC,QAAatN,KAAKioC,WAAWyW,aAAahS,YAAY9/B,EAAMq/G,MAAM,IACxEjsH,KAAKsgD,iBAAiB,CACpBxF,OAAQ,6BACRxtC,KAAM,CACJk+G,eAAgBxrH,KAAKioC,WAAW0L,qBAGpC3zC,MAAK,GAAkBsN,EACzB,MAXEtN,KAAKiQ,SAYPtI,GAAS,GACR,CACD02B,WAEFzxB,EAAM6xB,iBAAiB,UAAU,KAC/Bz+B,KAAKiQ,SACLtI,GAAS,GACR,CACD02B,UACA,IACDstD,SAAQ,IAAM3rF,MAAK,OACtB4M,EAAMs/G,OACR,CACA,MAAAj8G,GACMjQ,MAAK,KACPA,MAAK,GAAU,KACfA,KAAKioC,WAAWyW,aAAarR,SAASrtC,MAAK,IAC3CA,MAAK,IAASiQ,SACdjQ,MAAK,GAAU,KACXA,MAAK,KACPyzC,aAAazzC,MAAK,IAClBA,MAAK,GAAmB,OAG5B+1B,MAAM9lB,QACR,CACA,OAAAmuC,GACOp+C,KAAK4qC,QAMV7U,MAAMqoB,UACW,OAAbp+C,KAAKulC,MAGLvlC,MAAK,IAA8B,OAAjBA,MAAK,IACzBA,MAAK,KAEFA,KAAKslD,iBACRtlD,KAAK4qC,OAAOn6B,IAAIzQ,QAbZA,MAAK,IACPA,MAAK,IAcX,CACA,SAAAmuD,CAAUlZ,GACRj1C,KAAK6mD,cAAe,EAChB5R,GACFj1C,KAAKulC,IAAI0P,OAEb,CACA,OAAA7E,GACE,QAASpwC,MAAK,IAAkBA,MAAK,IAAWA,MAAK,IAAcA,MAAK,IAAeA,MAAK,IAAaA,MAAK,GAChH,CACA,kBAAI+rD,GACF,MAAO,CAAC,CAAC,UAAW/rD,KAAKssD,iBAC3B,CACA,eAAI3xC,GACF,OAAO,CACT,CACA,MAAAmtB,GACE,GAAI9nC,KAAKulC,IACP,OAAOvlC,KAAKulC,IAEd,IAAIsiB,EAAOC,EAmBX,OAlBI9nD,KAAKokD,UACPyD,EAAQ7nD,KAAKkD,EACb4kD,EAAQ9nD,KAAK47B,GAEf7F,MAAM+R,SACN9nC,KAAKulC,IAAIk6D,QAAS,EAClBz/F,KAAKssD,gBACAtsD,MAAK,KACJA,MAAK,GACPA,MAAK,KAELA,MAAK,MAGLA,KAAKokD,SACPpkD,KAAK4nD,gBAAgBC,EAAOC,GAE9B9nD,KAAKioC,WAAWsN,iBAAiBv1C,MAC1BA,KAAKulC,GACd,CACA,SAAAqa,CAAUtF,EAAqBrN,GAC7B,MACEz9B,GAAI28G,EAAQ,OACZnuG,GACEhe,KAAKioC,WAAWyW,aAAa1R,cAAcsN,EAAqBrN,GACpEA,EAAOh9B,SACHk8G,GAAYnsH,KAAKioC,WAAWyW,aAAalR,UAAU2+E,KACrDnsH,MAAK,GAAYmsH,EACbnuG,IACFhe,MAAK,GAAUge,GAEjBhe,MAAK,IAAiB,EACtBA,MAAK,KAET,CACA,UAAAiqD,GACEjqD,KAAK4yC,iBACP,CACA,eAAAA,GACE,IAAK5yC,KAAK4qC,OACR,OAE4B,OAA1B5qC,MAAK,IACPyzC,aAAazzC,MAAK,IAGpBA,MAAK,GAAmB27C,YAAW,KACjC37C,MAAK,GAAmB,KACxBA,MAAK,IAAa,GAHC,IAKvB,CACA,MACE,MAAM,IACJulC,GACEvlC,KACJ,IAAI,MACFghC,EAAK,OACLC,GACEjhC,MAAK,GACT,MAAOohC,EAAWC,GAAcrhC,KAAKmlD,eAC/BinE,EAAY,IAClB,GAAIpsH,KAAKghC,MACPA,EAAQhhC,KAAKghC,MAAQI,EACrBH,EAASjhC,KAAKihC,OAASI,OAClB,GAAIL,EAAQorF,EAAYhrF,GAAaH,EAASmrF,EAAY/qF,EAAY,CAC3E,MAAM6rB,EAASnqD,KAAKiG,IAAIojH,EAAYhrF,EAAYJ,EAAOorF,EAAY/qF,EAAaJ,GAChFD,GAASksB,EACTjsB,GAAUisB,CACZ,CACA,MAAOpO,EAAaC,GAAgB/+C,KAAKqlD,iBACzCrlD,KAAKipD,QAAQjoB,EAAQ8d,EAAc1d,EAAWH,EAAS8d,EAAe1d,GACtErhC,KAAKioC,WAAWiT,eAAc,GAC9B,MAAMjO,EAASjtC,MAAK,GAAU4K,SAAS0G,cAAc,UACrD27B,EAAOjH,aAAa,OAAQ,OAC5BhmC,KAAKksD,aAAajf,GAClBjtC,KAAKghC,MAAQA,EAAQI,EACrBphC,KAAKihC,OAASA,EAASI,EACnBrhC,KAAKskD,iBAAiBU,WACxBhlD,KAAK8mD,SAEL9mD,KAAKgnD,oBAEPhnD,KAAKskD,gBAAkB,KAClBtkD,KAAKioC,WAAW2L,8BAAiC5zC,KAAKioC,WAAW0L,oBAAqB3zC,KAAKs6C,sBAC9F/U,EAAIk6D,QAAS,GAEfz/F,MAAK,KACAA,MAAK,KACRA,KAAK4qC,OAAOgxE,kBAAkB57G,MAC9BA,MAAK,IAA2B,GAElCA,KAAKsgD,iBAAiB,CACpBxF,OAAQ,mBAEN96C,MAAK,IACPA,KAAKulC,IAAIS,aAAa,mBAAoBhmC,MAAK,IAE5CA,KAAKs6C,qBACRt6C,KAAKioC,WAAWgP,UAAU,iCAE9B,CACA,UAAA40E,CAAWQ,EAAkBC,EAAqBtmD,GAAkB,GAC7DqmD,IACHA,EAAmB,KAErB,MACErrF,MAAOurF,EACPtrF,OAAQurF,GACNxsH,MAAK,GACHysH,EAAc,IAAIxmF,GACxB,IAAIjoB,EAAShe,MAAK,GACdghC,EAAQurF,EACVtrF,EAASurF,EACPv/E,EAAS,KACb,GAAIq/E,EAAqB,CACvB,GAAIC,EAAcD,GAAuBE,EAAeF,EAAqB,CAC3E,MAAMj+B,EAAQtrF,KAAKiG,IAAIsjH,EAAsBC,EAAaD,EAAsBE,GAChFxrF,EAAQj+B,KAAKC,MAAMupH,EAAcl+B,GACjCptD,EAASl+B,KAAKC,MAAMwpH,EAAen+B,EACrC,CACAphD,EAASriC,SAAS0G,cAAc,UAChC,MAAMo7G,EAAcz/E,EAAOjM,MAAQj+B,KAAKD,KAAKk+B,EAAQyrF,EAAYtmF,IAC3DwmF,EAAe1/E,EAAOhM,OAASl+B,KAAKD,KAAKm+B,EAASwrF,EAAYrmF,IAC/DpmC,MAAK,KACRge,EAAShe,MAAK,GAAa0sH,EAAaC,IAE1C,MAAMznF,EAAM+H,EAAO9B,WAAW,MAC9BjG,EAAIz5B,OAASzL,KAAKioC,WAAW4L,UAC7B,IAAIk6B,EAAQ,QACV3E,EAAQ,UACwB,SAA9BppE,KAAKioC,WAAW4L,UAClBu1B,EAAQ,QACCj3D,OAAO09B,aAAa,gCAAgC5L,UAC7D8pC,EAAQ,UACR3E,EAAQ,WAEV,MAAMwjD,EAAS,GACTC,EAAcD,EAASH,EAAYtmF,GACnC2mF,EAAeF,EAASH,EAAYrmF,GACpC07B,EAAU,IAAIxqC,gBAA8B,EAAdu1F,EAAgC,EAAfC,GAC/CC,EAAajrD,EAAQ32B,WAAW,MACtC4hF,EAAWvqD,UAAYuL,EACvBg/C,EAAWr7C,SAAS,EAAG,EAAiB,EAAdm7C,EAAgC,EAAfC,GAC3CC,EAAWvqD,UAAY4G,EACvB2jD,EAAWr7C,SAAS,EAAG,EAAGm7C,EAAaC,GACvCC,EAAWr7C,SAASm7C,EAAaC,EAAcD,EAAaC,GAC5D5nF,EAAIs9B,UAAYt9B,EAAIu9B,cAAcX,EAAS,UAC3C58B,EAAIwsC,SAAS,EAAG,EAAGg7C,EAAaC,GAChCznF,EAAIsG,UAAUxtB,EAAQ,EAAG,EAAGA,EAAOgjB,MAAOhjB,EAAOijB,OAAQ,EAAG,EAAGyrF,EAAaC,EAC9E,CACA,IAAI/xB,EAAY,KAChB,GAAI50B,EAAiB,CACnB,IAAIgnD,EAAWC,EACf,GAAIR,EAAYnmF,WAAatoB,EAAOgjB,MAAQqrF,GAAoBruG,EAAOijB,OAASorF,EAC9EW,EAAYhvG,EAAOgjB,MACnBisF,EAAajvG,EAAOijB,YAGpB,GADAjjB,EAAShe,MAAK,GACVusH,EAAcF,GAAoBG,EAAeH,EAAkB,CACrE,MAAMh+B,EAAQtrF,KAAKiG,IAAIqjH,EAAmBE,EAAaF,EAAmBG,GAC1EQ,EAAYjqH,KAAKC,MAAMupH,EAAcl+B,GACrC4+B,EAAalqH,KAAKC,MAAMwpH,EAAen+B,GAClCruF,MAAK,KACRge,EAAShe,MAAK,GAAagtH,EAAWC,GAE1C,CAEF,MACMC,EADY,IAAI51F,gBAAgB01F,EAAWC,GAClB9hF,WAAW,KAAM,CAC9CC,oBAAoB,IAEtB8hF,EAAa1hF,UAAUxtB,EAAQ,EAAG,EAAGA,EAAOgjB,MAAOhjB,EAAOijB,OAAQ,EAAG,EAAG+rF,EAAWC,GACnFryB,EAAY,CACV55D,MAAOgsF,EACP/rF,OAAQgsF,EACR3/G,KAAM4/G,EAAazhF,aAAa,EAAG,EAAGuhF,EAAWC,GAAY3/G,KAEjE,CACA,MAAO,CACL2/B,SACAjM,QACAC,SACA25D,YAEJ,CACA,IAAa55D,EAAOC,GAClB,MACED,MAAOurF,EACPtrF,OAAQurF,GACNxsH,MAAK,GACT,IAAIkqD,EAAWqiE,EACXpiE,EAAYqiE,EACZxuG,EAAShe,MAAK,GAClB,KAAOkqD,EAAW,EAAIlpB,GAASmpB,EAAY,EAAIlpB,GAAQ,CACrD,MAAM6lF,EAAY58D,EACZ68D,EAAa58D,EACfD,EAAW,EAAIlpB,IACjBkpB,EAAWA,GAAY,MAAQnnD,KAAKC,MAAMknD,EAAW,GAAK,EAAInnD,KAAKD,KAAKonD,EAAW,IAEjFC,EAAY,EAAIlpB,IAClBkpB,EAAYA,GAAa,MAAQpnD,KAAKC,MAAMmnD,EAAY,GAAK,EAAIpnD,KAAKD,KAAKqnD,EAAY,IAEzF,MAAMjd,EAAY,IAAI5V,gBAAgB4yB,EAAUC,GACpCjd,EAAU/B,WAAW,MAC7BK,UAAUxtB,EAAQ,EAAG,EAAG8oG,EAAWC,EAAY,EAAG,EAAG78D,EAAUC,GACnEnsC,EAASkvB,EAAUC,uBACrB,CACA,OAAOnvB,CACT,CACA,MACE,MAAO8gC,EAAaC,GAAgB/+C,KAAKqlD,kBACnC,MACJrkB,EAAK,OACLC,GACEjhC,KACEysH,EAAc,IAAIxmF,GAClBymF,EAAc3pH,KAAKD,KAAKk+B,EAAQ8d,EAAc2tE,EAAYtmF,IAC1DwmF,EAAe5pH,KAAKD,KAAKm+B,EAAS8d,EAAe0tE,EAAYrmF,IAC7D6G,EAASjtC,MAAK,GACpB,IAAKitC,GAAUA,EAAOjM,QAAU0rF,GAAez/E,EAAOhM,SAAW0rF,EAC/D,OAEF1/E,EAAOjM,MAAQ0rF,EACfz/E,EAAOhM,OAAS0rF,EAChB,MAAM3uG,EAAShe,MAAK,GAASA,MAAK,GAAUA,MAAK,GAAa0sH,EAAaC,GACrEznF,EAAM+H,EAAO9B,WAAW,MAC9BjG,EAAIz5B,OAASzL,KAAKioC,WAAW4L,UAC7B3O,EAAIsG,UAAUxtB,EAAQ,EAAG,EAAGA,EAAOgjB,MAAOhjB,EAAOijB,OAAQ,EAAG,EAAGyrF,EAAaC,EAC9E,CACA,IAAiBQ,GACf,GAAIA,EAAO,CACT,GAAIntH,MAAK,GAAQ,CACf,MAAM2b,EAAM3b,KAAKioC,WAAWyW,aAAatR,UAAUptC,MAAK,IACxD,GAAI2b,EACF,OAAOA,CAEX,CACA,MAAMsxB,EAASriC,SAAS0G,cAAc,YAEpC0vB,MAAOiM,EAAOjM,MACdC,OAAQgM,EAAOhM,QACbjhC,MAAK,IAGT,OAFYitC,EAAO9B,WAAW,MAC1BK,UAAUxrC,MAAK,GAAS,EAAG,GACxBitC,EAAOmgF,WAChB,CACA,GAAIptH,MAAK,GAAQ,CACf,MAAOohC,EAAWC,GAAcrhC,KAAKmlD,eAC/BnkB,EAAQj+B,KAAKsnD,MAAMrqD,KAAKghC,MAAQI,EAAYzC,GAAc0U,kBAC1DpS,EAASl+B,KAAKsnD,MAAMrqD,KAAKihC,OAASI,EAAa1C,GAAc0U,kBAC7DnG,EAAY,IAAI5V,gBAAgB0J,EAAOC,GAG7C,OAFYiM,EAAU/B,WAAW,MAC7BK,UAAUxrC,MAAK,GAAS,EAAG,EAAGA,MAAK,GAAQghC,MAAOhhC,MAAK,GAAQihC,OAAQ,EAAG,EAAGD,EAAOC,GACjFiM,EAAUC,uBACnB,CACA,OAAOjnC,gBAAgBlG,MAAK,GAC9B,CACA,wBAAai5C,CAAY3rC,EAAMs9B,EAAQN,GACrC,IAAIy2C,EAAc,KACdssC,GAAgB,EACpB,GAAI//G,aAAgBg0F,GAAwB,CAC1C,MACEh0F,MAAM,KACJqsB,EAAI,SACJyG,EAAQ,GACR5wB,EAAE,aACF89G,EAAY,SACZv+D,GACD,UACDrd,EACA9G,QACEotB,MAAM,WACJjjB,IAEH,OACD9H,GACE3/B,EACJ,IAAI6+G,EAAUnuG,EACVivB,UACK3/B,EAAK2/B,SAEVz9B,GAAI28G,EACJnuG,UACEssB,EAAUoU,aAAa1R,cAAc0E,EAAUliC,GAAIy9B,IACvDA,EAAOh9B,WAEPo9G,GAAgB,EAChB//G,EAAK0kG,cAAe,GAEtB,MAAMxoE,SAAiBoB,EAAO2iF,YAAYpc,kBAAkB,GAAGzzE,KAAmBluB,OAAQrR,IAAI,eAAiB,GAC/G4iF,EAAczzE,EAAO,CACnBsyF,eAAgB91E,EAAqBI,MACrCiiG,WACAnuG,SACA27B,UAAW5E,EAAa,EACxBpb,KAAMA,EAAKl7B,MAAM,GACjB2hC,WACAka,oBAAqB9qC,EACrBA,KACAssC,SAAS,EACTkT,kBAAmB,CACjBhO,YAAY,EACZxX,WAEFoC,OAAO,EACP0hF,eACAv+D,WAEJ,CACA,MAAMxnB,QAAexR,MAAMkjB,YAAY3rC,EAAMs9B,EAAQN,IAC/C,KACJ3Q,EAAI,OACJ3b,EAAM,UACNktG,EAAS,SACTiB,EAAQ,MACRvgF,EAAK,kBACLojB,GACE1hD,EACA+/G,GACF/iF,EAAUuV,iBAAiBvyC,EAAKkC,GAAI+3B,GACpCA,GAAO,IAAiB,GACf4kF,GAAY7hF,EAAUoU,aAAalR,UAAU2+E,IACtD5kF,GAAO,GAAY4kF,EACfnuG,IACFupB,GAAO,GAAUvpB,IAGnBupB,GAAO,GAAa2jF,EAEtB3jF,GAAO,GAASqE,EAChB,MAAOkT,EAAaC,GAAgBxX,EAAO4d,eAQ3C,OAPA5d,EAAOvG,OAASrH,EAAK,GAAKA,EAAK,IAAMmlB,EACrCvX,EAAOtG,QAAUtH,EAAK,GAAKA,EAAK,IAAMolB,EAClCiQ,IACFznB,EAAOglB,YAAcyC,GAEvBznB,EAAOgd,aAAew8B,EACtBx5C,GAAO,KAA6Bw5C,EAC7Bx5C,CACT,CACA,SAAAmR,CAAUqI,GAAe,EAAOl+B,EAAU,MACxC,GAAI7iB,KAAKowC,UACP,OAAO,KAET,GAAIpwC,KAAK87C,QACP,OAAO97C,KAAK8uD,mBAEd,MAAMrW,EAAa,CACjBmnD,eAAgB91E,EAAqBI,MACrCiiG,SAAUnsH,MAAK,GACf25C,UAAW35C,KAAK25C,UAChBhgB,KAAM35B,KAAK+tD,QAAQ,EAAG,GACtB3tB,SAAUpgC,KAAKogC,SACfwL,MAAO5rC,MAAK,GACZk1G,mBAAoBl1G,KAAKilD,qBAE3B,GAAIlE,EAIF,OAHAtI,EAAWyyE,UAAYlrH,MAAK,IAAiB,GAC7Cy4C,EAAWuW,kBAAoBhvD,KAAK0sD,kBAAiB,GACrDjU,EAAWwW,QAAS,EACbxW,EAET,MAAM,WACJuI,EAAU,QACVxX,GACExpC,KAAK0sD,kBAAiB,GAO1B,IANK1L,GAAcxX,IACjBiP,EAAWuW,kBAAoB,CAC7BrpD,KAAM,SACNqlH,IAAKxhF,IAGLxpC,KAAKs6C,oBAAqB,CAC5B,MAAMkzE,EAAUxtH,MAAK,GAAmBy4C,GACxC,GAAI+0E,EAAQC,OACV,OAAO,KAELD,EAAQE,qBACHj1E,EAAWuW,kBAElBvW,EAAWuW,kBAAkBs+D,aAAettH,KAAKukD,aAAa+oE,eAAiB,CAEnF,CAEA,GADA70E,EAAWjpC,GAAKxP,KAAKs6C,oBACL,OAAZz3B,EACF,OAAO41B,EAET51B,EAAQ8qG,SAAW,IAAI1wF,IACvB,MAAM2wF,EAAO5tH,MAAK,IAAUy4C,EAAW9e,KAAK,GAAK8e,EAAW9e,KAAK,KAAO8e,EAAW9e,KAAK,GAAK8e,EAAW9e,KAAK,IAAM,KACnH,GAAK9W,EAAQ8qG,OAAOhpH,IAAI3E,MAAK,KAMtB,GAAIA,MAAK,GAAQ,CACtB,MAAM6tH,EAAWhrG,EAAQ8qG,OAAOxvH,IAAI6B,MAAK,IACrC4tH,EAAOC,EAASD,OAClBC,EAASD,KAAOA,EAChBC,EAASp1E,WAAWz6B,OAAO5T,QAC3ByjH,EAASp1E,WAAWz6B,OAAShe,MAAK,IAAiB,GAEvD,OAZE6iB,EAAQ8qG,OAAOjpH,IAAI1E,MAAK,GAAW,CACjC4tH,OACAn1E,eAEFA,EAAWz6B,OAAShe,MAAK,IAAiB,GAS5C,OAAOy4C,CACT,CACA,IAAmBA,GACjB,MAAM,UACJkB,EACAqV,mBAAmB,QACjBxlB,IAEAxpC,KAAKukD,aACHupE,EAAkBr1E,EAAWkB,YAAcA,EAC3C+zE,GAAiBj1E,EAAWuW,mBAAmBg8D,KAAO,MAAQxhF,EACpE,MAAO,CACLikF,QAASztH,KAAK0oD,gBAAkB1oD,KAAK2oD,iBAAmBmlE,GAAmBJ,EAC3EA,gBAEJ,CACA,uBAAAruE,CAAwBC,GAItB,OAHAA,EAAWqjD,aAAa,CACtBhpE,KAAM35B,KAAK+tD,QAAQ,EAAG,KAEjB,IACT,EAqBF,MAAMggE,GACJ,IACA,KAAc,EACd,IAAmB,KACnB,IAAW,KACX,IAAwB,KACxB,IAAW,IAAI9wF,IACf,KAAkB,EAClB,KAAe,EACf,KAAc,EACd,IAAa,KACb,IAAkB,KAClB,IAAa,KACb,IAAmB,KACnB,IAAuB,KACvB,KAA6B,EAC7B,GACA2B,qBAAsB,EACtBA,SAAsB,IAAI3B,IAAI,CAACo1E,GAAgBwQ,GAAWoI,GAAa3Q,GAAiByP,IAAiB5hH,KAAIxC,GAAQ,CAACA,EAAK6/C,YAAa7/C,MACxI,WAAApG,EAAY,UACV+qC,EAAS,UACTqP,EAAS,IACTpU,EAAG,gBACHsrE,EAAe,qBACfF,EAAoB,gBACpBqd,EAAe,UACfjT,EAAS,UACThlE,EAAS,SACTvQ,EAAQ,KACR0a,IAEA,MAAM+tE,EAAc,IAAIF,IAAsB,EAAahvG,UAC3D,IAAKgvG,GAAsBG,aAAc,CACvCH,GAAsBG,cAAe,EACrC,IAAK,MAAMhlF,KAAc+kF,EACvB/kF,EAAW+W,WAAWC,EAAM5V,EAEhC,CACAA,EAAUgP,oBAAoB20E,GAC9BjuH,MAAK,EAAasqC,EAClBtqC,KAAK25C,UAAYA,EACjB35C,KAAKulC,IAAMA,EACXvlC,MAAK,GAAwB2wG,EAC7B3wG,MAAK,GAAmBguH,EACxBhuH,KAAKwlC,SAAWA,EAChBxlC,MAAK,GAAa+1C,EAClB/1C,KAAK+6G,UAAYA,EACjB/6G,KAAKutH,YAAc1c,EACnB7wG,MAAK,EAAW65C,SAAS75C,KAC3B,CACA,WAAIowC,GACF,OAA8B,IAAvBpwC,MAAK,GAAS6P,IACvB,CACA,eAAIs+G,GACF,OAAOnuH,KAAKowC,SAAWpwC,MAAK,EAAWy+C,YAAc30B,EAAqBC,IAC5E,CACA,aAAA6wB,CAAc17C,GACZc,MAAK,EAAW46C,cAAc17C,EAChC,CACA,UAAA+6C,CAAW/6B,EAAOlf,MAAK,EAAWy+C,WAEhC,OADAz+C,MAAK,KACGkf,GACN,KAAK4K,EAAqBC,KAKxB,OAJA/pB,KAAKouH,uBACLpuH,KAAK0pD,qBAAoB,GACzB1pD,KAAKquH,oCAAmC,QACxCruH,KAAKo7C,eAEP,KAAKtxB,EAAqBK,IACxBnqB,KAAKouH,uBACLpuH,KAAK0pD,qBAAoB,GACzB1pD,KAAKq7C,cACL,MACF,KAAKvxB,EAAqBG,UACxBjqB,KAAKsuH,sBACLtuH,KAAK0pD,qBAAoB,GACzB1pD,KAAKo7C,eACL,MACF,QACEp7C,KAAKouH,uBACLpuH,KAAK0pD,qBAAoB,GACzB1pD,KAAKq7C,cAETr7C,KAAKquH,oCAAmC,GACxC,MAAM,UACJrmF,GACEhoC,KAAKulC,IACT,IAAK,MAAM2D,KAAc6kF,IAAsB,EAAahvG,SAC1DipB,EAAUsN,OAAO,GAAGpM,EAAWqc,eAAgBrmC,IAASgqB,EAAWsc,aAErExlD,KAAKulC,IAAIk6D,QAAS,CACpB,CACA,YAAAxpD,CAAaF,GACX,OAAOA,IAAc/1C,MAAK,IAAYulC,GACxC,CACA,eAAA8T,CAAgBlJ,GACdnwC,MAAK,EAAWq5C,gBAAgBlJ,EAClC,CACA,WAAA+I,CAAYzkC,GACVzU,MAAK,EAAWk5C,YAAYzkC,EAC9B,CACA,cAAAmoC,CAAej3C,GACb3F,MAAK,EAAW48C,eAAej3C,EACjC,CACA,aAAA2xC,CAAc6J,GAAU,GACtBnhD,KAAKulC,IAAIyC,UAAUsN,OAAO,WAAY6L,EACxC,CACA,mBAAAuI,CAAoBvI,GAAU,GAC5BnhD,KAAKulC,IAAIyC,UAAUsN,OAAO,YAAa6L,EACzC,CACA,kCAAAktE,CAAmCltE,GAAU,GAC3CnhD,MAAK,IAAkBulC,IAAIyC,UAAUsN,OAAO,YAAa6L,EAC3D,CACA,YAAMrH,GACJ95C,MAAK,IAAc,EACnBA,KAAKulC,IAAI6D,SAAW,EACpBppC,KAAK0pD,qBAAoB,GACzB1pD,MAAK,IAAsBu+B,QAC3Bv+B,MAAK,GAAuB,KAC5B,MAAMuuH,EAAuB,IAAI/7G,IACjC,IAAK,MAAM+0B,KAAUvnC,MAAK,GAAS+e,SACjCwoB,EAAOwoB,gBACPxoB,EAAOwB,MAAK,GACRxB,EAAO+S,sBACTt6C,MAAK,EAAWi8C,gCAAgC1U,GAChDgnF,EAAqB99G,IAAI82B,EAAO+S,sBAGpC,IAAKt6C,MAAK,GAER,YADAA,MAAK,IAAc,GAGrB,MAAMwuH,EAAYxuH,MAAK,GAAiBiyG,yBACxC,IAAK,MAAM/D,KAAYsgB,EAAW,CAEhC,GADAtgB,EAASrlE,OACL7oC,MAAK,EAAW+7C,2BAA2BmyD,EAAS5gG,KAAKkC,IAC3D,SAEF,GAAI++G,EAAqB5pH,IAAIupG,EAAS5gG,KAAKkC,IACzC,SAEF,MAAM+3B,QAAevnC,KAAKi5C,YAAYi1D,GACjC3mE,IAGLvnC,KAAKk8C,aAAa3U,GAClBA,EAAOwoB,gBACT,CACA/vD,MAAK,IAAc,CACrB,CACA,OAAA+5C,GAIE,GAHA/5C,MAAK,IAAe,EACpBA,KAAKulC,IAAI6D,UAAY,EACrBppC,KAAK0pD,qBAAoB,GACrB1pD,MAAK,KAAeA,MAAK,GAAsB,CACjDA,MAAK,GAAuB,IAAIo+B,gBAChC,MAAMC,EAASr+B,MAAK,EAAW0zC,eAAe1zC,MAAK,IACnDA,MAAK,GAAWulC,IAAI9G,iBAAiB,eAAeruB,IAClD,MACM,QACJq9C,EAAO,QACPC,EAAO,UACP+xD,GACErvG,EAEJ,GAAIqvG,EAD6Bz/G,MAAK,GANV,IAS1B,YADAA,MAAK,GAA4By/G,GAGnCz/G,MAAK,IAA6B,EAClC,MAAM,UACJgoC,GACEhoC,KAAKulC,IACTyC,EAAUsN,OAAO,eAAe,GAChC,MAAMtvB,EAAWpb,SAAS6jH,kBAAkBhhE,EAASC,GAErD,GADA1lB,EAAUsN,OAAO,eAAe,IAC3Bt1C,KAAKulC,IAAIkL,SAASzqB,EAAS,IAC9B,OAEF,IAAIxW,EACJ,MAAMuU,EAAQ,IAAIigB,OAAO,IAAIna,YAC7B,IAAK,MAAM8e,KAAW3iB,EACpB,GAAIjC,EAAM1hB,KAAKsmC,EAAQn5B,IAAK,CAC1BA,EAAKm5B,EAAQn5B,GACb,KACF,CAEF,IAAKA,EACH,OAEF,MAAM+3B,EAASvnC,MAAK,GAAS7B,IAAIqR,GACG,OAAhC+3B,GAAQ+S,sBACVlqC,EAAEyzB,kBACFzzB,EAAEuzB,iBACF4D,EAAO0oB,WACT,GACC,CACD5xB,SACAuK,SAAS,GAEb,CACA,MAAM8lF,EAAqB,IAAIzxF,IACzB0xF,EAAmB,IAAI1xF,IAC7B,IAAK,MAAMsK,KAAUvnC,MAAK,GAAS+e,SACjCwoB,EAAOuoB,iBACFvoB,EAAO+S,sBAGe,OAAvB/S,EAAOmR,aAITi2E,EAAiBjqH,IAAI6iC,EAAO+S,oBAAqB/S,GAEnDvnC,KAAKkyG,sBAAsB3qE,EAAO+S,sBAAsBvR,OACxDxB,EAAOt3B,UANLy+G,EAAmBhqH,IAAI6iC,EAAO+S,oBAAqB/S,IAQvD,GAAIvnC,MAAK,GAAkB,CACzB,MAAMwuH,EAAYxuH,MAAK,GAAiBiyG,yBACxC,IAAK,MAAM/D,KAAYsgB,EAAW,CAChC,MAAM,GACJh/G,GACE0+F,EAAS5gG,KACb,GAAItN,MAAK,EAAW+7C,2BAA2BvsC,GAC7C,SAEF,IAAI+3B,EAASonF,EAAiBxwH,IAAIqR,GAC9B+3B,GACFA,EAAOmpB,uBAAuBw9C,GAC9B3mE,EAAOwB,MAAK,GACZmlE,EAASnlE,SAGXxB,EAASmnF,EAAmBvwH,IAAIqR,GAC5B+3B,IACFvnC,MAAK,EAAW67C,6BAA6BtU,GACzCA,EAAO8X,wBAAwB6uD,IACjC3mE,EAAOwB,MAAK,IAGhBmlE,EAASnlE,OACX,CACF,CACA/oC,MAAK,KACDA,KAAKowC,UACPpwC,KAAKulC,IAAIk6D,QAAS,GAEpB,MAAM,UACJz3D,GACEhoC,KAAKulC,IACT,IAAK,MAAM2D,KAAc6kF,IAAsB,EAAahvG,SAC1DipB,EAAU/3B,OAAO,GAAGi5B,EAAWqc,gBAEjCvlD,KAAKouH,uBACLpuH,KAAKquH,oCAAmC,GACxCruH,MAAK,IAAe,CACtB,CACA,qBAAAkyG,CAAsB1iG,GACpB,OAAOxP,MAAK,IAAkBkyG,sBAAsB1iG,IAAO,IAC7D,CACA,eAAA2sC,CAAgB5U,GACQvnC,MAAK,EAAWs+C,cAChB/W,GAGtBvnC,MAAK,EAAWm8C,gBAAgB5U,EAClC,CACA,mBAAA+mF,GAEE,GADAtuH,KAAKulC,IAAI6D,UAAY,EACjBppC,MAAK,IAAYulC,MAAQvlC,MAAK,GAAkB,CAClDA,MAAK,GAAmB,IAAIo+B,gBAC5B,MAAMC,EAASr+B,MAAK,EAAW0zC,eAAe1zC,MAAK,IACnDA,MAAK,GAAWulC,IAAI9G,iBAAiB,cAAez+B,MAAK,GAAsBsC,KAAKtC,MAAO,CACzFq+B,WAEFr+B,MAAK,GAAWulC,IAAIyC,UAAUv3B,IAAI,eACpC,CACF,CACA,oBAAA29G,GACEpuH,KAAKulC,IAAI6D,SAAW,EAChBppC,MAAK,IAAYulC,KAAOvlC,MAAK,KAC/BA,MAAK,GAAiBu+B,QACtBv+B,MAAK,GAAmB,KACxBA,MAAK,GAAWulC,IAAIyC,UAAU/3B,OAAO,gBAEzC,CACA,IAAsB0+B,GACpB3uC,MAAK,EAAWwxC,cAChB,MAAM,OACJxvC,GACE2sC,EACJ,GAAI3sC,IAAWhC,MAAK,GAAWulC,MAAwC,QAAhCvjC,EAAOi9C,aAAa,SAAqBj9C,EAAOgmC,UAAUyI,SAAS,kBAAoBzwC,MAAK,GAAWulC,IAAIkL,SAASzuC,GAAS,CAClK,MAAM,MACJ41B,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBkX,EAAMxF,QAAgBwF,EAAME,SAAWjX,EACzC,OAEF53B,MAAK,EAAW82C,eAAe,aAAa,GAAM,GAClD92C,MAAK,GAAWulC,IAAIyC,UAAUv3B,IAAI,QAClCzQ,KAAKs3C,gBACLgjE,GAAgB8B,kBAAkBp8G,KAAoC,QAA9BA,MAAK,EAAWuoC,UAAqB,CAC3EvmC,OAAQhC,MAAK,GAAWulC,IACxBriC,EAAGyrC,EAAMzrC,EACT04B,EAAG+S,EAAM/S,IAEX57B,MAAK,GAAWulC,IAAI9G,iBAAiB,aAAa,KAChDz+B,MAAK,GAAWulC,IAAIyC,UAAU/3B,OAAO,QACrCjQ,KAAKs3C,eAAc,EAAK,GACvB,CACD1C,MAAM,EACNvW,OAAQr+B,MAAK,EAAWkoC,UAE1ByG,EAAMhL,gBACR,CACF,CACA,WAAA0X,GACE,GAAIr7C,MAAK,GACP,OAEFA,MAAK,GAAW,IAAIo+B,gBACpB,MAAMC,EAASr+B,MAAK,EAAW0zC,eAAe1zC,MAAK,IACnDA,KAAKulC,IAAI9G,iBAAiB,cAAez+B,KAAKqtD,YAAY/qD,KAAKtC,MAAO,CACpEq+B,WAEF,MAAMkZ,EAAYv3C,KAAKu3C,UAAUj1C,KAAKtC,MACtCA,KAAKulC,IAAI9G,iBAAiB,YAAa8Y,EAAW,CAChDlZ,WAEFr+B,KAAKulC,IAAI9G,iBAAiB,gBAAiB8Y,EAAW,CACpDlZ,UAEJ,CACA,YAAA+c,GACEp7C,MAAK,IAAUu+B,QACfv+B,MAAK,GAAW,IAClB,CACA,MAAA4uH,CAAOrnF,GACLvnC,MAAK,GAAS0E,IAAI6iC,EAAO/3B,GAAI+3B,GAC7B,MAAM,oBACJ+S,GACE/S,EACA+S,GAAuBt6C,MAAK,EAAW+7C,2BAA2BzB,IACpEt6C,MAAK,EAAWg8C,+BAA+BzU,EAEnD,CACA,MAAAt0B,CAAOs0B,GACLvnC,MAAK,GAASqpC,OAAO9B,EAAO/3B,IAC5BxP,MAAK,IAAuB6uH,yBAAyBtnF,EAAO2oB,aACvDlwD,MAAK,IAAgBunC,EAAO+S,qBAC/Bt6C,MAAK,EAAW47C,4BAA4BrU,EAEhD,CACA,MAAAt3B,CAAOs3B,GACLvnC,KAAKiT,OAAOs0B,GACZvnC,MAAK,EAAW07C,aAAanU,GAC7BA,EAAOhC,IAAIt1B,SACXs3B,EAAO+d,iBAAkB,CAC3B,CACA,YAAAjH,CAAa9W,GACPA,EAAOqD,SAAW5qC,OAGlBunC,EAAOqD,QAAUrD,EAAO+S,sBAC1Bt6C,MAAK,EAAW47C,4BAA4BrU,EAAO+S,qBACnD6J,GAAiByB,wBAAwBre,GACzCA,EAAO+S,oBAAsB,MAE/Bt6C,KAAK4uH,OAAOrnF,GACZA,EAAOqD,QAAQ33B,OAAOs0B,GACtBA,EAAO6f,UAAUpnD,MACbunC,EAAOhC,KAAOgC,EAAO+d,kBACvB/d,EAAOhC,IAAIt1B,SACXjQ,KAAKulC,IAAIjxB,OAAOizB,EAAOhC,MAE3B,CACA,GAAA90B,CAAI82B,GACF,GAAIA,EAAOqD,SAAW5qC,OAAQunC,EAAO+d,gBAArC,CAMA,GAHAtlD,KAAKq+C,aAAa9W,GAClBvnC,MAAK,EAAWy7C,UAAUlU,GAC1BvnC,KAAK4uH,OAAOrnF,IACPA,EAAO+d,gBAAiB,CAC3B,MAAM/f,EAAMgC,EAAOO,SACnB9nC,KAAKulC,IAAIjxB,OAAOixB,GAChBgC,EAAO+d,iBAAkB,CAC3B,CACA/d,EAAOyf,oBACPzf,EAAO4mB,WAAWnuD,MAAK,IACvBA,MAAK,EAAW+2C,uBAAuBxP,GACvCA,EAAO+Y,iBAAiB/Y,EAAO8oB,qBAZ/B,CAaF,CACA,eAAAvC,CAAgBvmB,GACd,IAAKA,EAAO+d,gBACV,OAEF,MAAM,cACJ5U,GACE9lC,SACA28B,EAAOhC,IAAIkL,SAASC,KAAmB1wC,MAAK,KAC9CunC,EAAOmB,qBAAsB,EAC7B1oC,MAAK,GAAwB27C,YAAW,KACtC37C,MAAK,GAAwB,KACxBunC,EAAOhC,IAAIkL,SAAS7lC,SAAS8lC,eAShCnJ,EAAOmB,qBAAsB,GAR7BnB,EAAOhC,IAAI9G,iBAAiB,WAAW,KACrC8I,EAAOmB,qBAAsB,CAAI,GAChC,CACDkM,MAAM,EACNvW,OAAQr+B,MAAK,EAAWkoC,UAE1BwI,EAAcuE,QAGhB,GACC,IAEL1N,EAAO0d,oBAAsBjlD,MAAK,IAAuBqxG,iBAAiBrxG,KAAKulC,IAAKgC,EAAOhC,IAAKgC,EAAO2oB,YAAY,EACrH,CACA,YAAAhU,CAAa3U,GACPA,EAAO+mB,oBACT/mB,EAAOqD,SAAW5qC,KAClBunC,EAAO6W,UACP7W,EAAOwB,QAEP/oC,KAAKyQ,IAAI82B,EAEb,CACA,iBAAAq0E,CAAkBr0E,GAKhBvnC,KAAKk5C,YAAY,CACfvL,IALU,IAAMpG,EAAOU,WAAWmW,QAAQ7W,GAM1CqG,KALW,KACXrG,EAAOt3B,QAAQ,EAKf69B,UAAU,GAEd,CACA,SAAAiY,GACE,OAAO/lD,MAAK,EAAWy5C,OACzB,CACA,MAAI,GACF,OAAOs0E,IAAsB,EAAa5vH,IAAI6B,MAAK,EAAWy+C,UAChE,CACA,cAAA/K,CAAevV,GACb,OAAOn+B,MAAK,EAAW0zC,eAAevV,EACxC,CACA,IAAiB1pB,GACf,MAAMy0B,EAAalpC,MAAK,GACxB,OAAOkpC,EAAa,IAAIA,EAAWzpC,UAAUF,YAAYkV,GAAU,IACrE,CACA,uBAAAimC,GACE,OAAO16C,MAAK,IAAoB06C,yBAClC,CACA,iBAAM0wE,CAAYlsH,EAASuV,GACzBzU,KAAK46C,cAAc17C,SACbc,MAAK,EAAWi6C,WAAW/6C,EAAQggB,MACzC,MAAM,QACJmhB,EAAO,QACPC,GACEtgC,MAAK,KACHwP,EAAKxP,KAAK+lD,YACVxe,EAASvnC,MAAK,GAAiB,CACnC4qC,OAAQ5qC,KACRwP,KACAtM,EAAGm9B,EACHzE,EAAG0E,EACHgK,UAAWtqC,MAAK,EAChBglD,YAAY,KACTvwC,IAED8yB,GACFvnC,KAAKyQ,IAAI82B,EAEb,CACA,iBAAM0R,CAAY3rC,GAChB,aAAcygH,IAAsB,EAAa5vH,IAAImP,EAAKsyF,gBAAkBtyF,EAAK05F,uBAAuB/tD,YAAY3rC,EAAMtN,KAAMA,MAAK,KAAgB,IACvJ,CACA,qBAAA62C,CAAsBlI,EAAOqW,EAAY13C,EAAO,CAAC,GAC/C,MAAMkC,EAAKxP,KAAK+lD,YACVxe,EAASvnC,MAAK,GAAiB,CACnC4qC,OAAQ5qC,KACRwP,KACAtM,EAAGyrC,EAAMtO,QACTzE,EAAG+S,EAAMrO,QACTgK,UAAWtqC,MAAK,EAChBglD,gBACG13C,IAKL,OAHIi6B,GACFvnC,KAAKyQ,IAAI82B,GAEJA,CACT,CACA,MACE,MAAM,EACJrkC,EAAC,EACD04B,EAAC,MACDoF,EAAK,OACLC,GACEjhC,KAAKulC,IAAI8P,wBACPy1B,EAAM/nE,KAAKkO,IAAI,EAAG/N,GAClB8nE,EAAMjoE,KAAKkO,IAAI,EAAG2qB,GAGlB4E,GAAWsqC,EAFL/nE,KAAKiG,IAAImJ,OAAOw8C,WAAYzrD,EAAI89B,IAEd,EAAI99B,EAC5Bu9B,GAAWuqC,EAFLjoE,KAAKiG,IAAImJ,OAAOu8C,YAAa9yB,EAAIqF,IAEf,EAAIrF,GAC3ByE,EAASC,GAAWtgC,KAAKwlC,SAASpF,SAAW,KAAQ,EAAI,CAACI,EAASC,GAAW,CAACA,EAASD,GAC/F,MAAO,CACLH,UACAC,UAEJ,CACA,YAAAqa,CAAartC,EAAO,CAAC,GACnBtN,KAAK62C,sBAAsB72C,MAAK,MAAmB,EAAMsN,EAC3D,CACA,WAAAitC,CAAYhT,GACVvnC,MAAK,EAAWu6C,YAAYhT,EAC9B,CACA,cAAAiV,CAAejV,GACbvnC,MAAK,EAAWw8C,eAAejV,EACjC,CACA,QAAAkT,CAASlT,GACPvnC,MAAK,EAAWy6C,SAASlT,EAC3B,CACA,SAAAgQ,CAAU5I,GACR,MAAM,MACJ/W,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBkX,EAAMxF,QAAgBwF,EAAME,SAAWjX,EACzC,OAEF,GAAI+W,EAAM3sC,SAAWhC,KAAKulC,IACxB,OAEF,IAAKvlC,MAAK,GACR,OAGF,GADAA,MAAK,IAAkB,EACnBA,MAAK,IAAoBylD,UAAYzlD,MAAK,GAAmB49G,wBAC/D,OAEF,IAAK59G,MAAK,GAER,YADAA,MAAK,IAAc,GAGrB,MAAM8uH,EAAc9uH,MAAK,EAAWy+C,UAChCqwE,IAAgBhlG,EAAqBI,OAAS4kG,IAAgBhlG,EAAqBM,UAIvFpqB,KAAK62C,sBAAsBlI,GAAO,GAHhC3uC,MAAK,EAAWwxC,aAIpB,CACA,WAAA6b,CAAY1e,GAIV,GAHI3uC,MAAK,EAAWy+C,YAAc30B,EAAqBG,WACrDjqB,KAAKsuH,sBAEHtuH,MAAK,GAEP,YADAA,MAAK,IAAkB,GAGzB,MAAM,MACJ43B,GACEZ,GAAiBS,SACrB,GAAqB,IAAjBkX,EAAMxF,QAAgBwF,EAAME,SAAWjX,EACzC,OAEF,GAAI+W,EAAM3sC,SAAWhC,KAAKulC,IACxB,OAGF,GADAvlC,MAAK,IAAkB,EACnBA,MAAK,IAAoBylD,SAE3B,YADAzlD,KAAK+uH,oBAAoBpgF,GAG3B,MAAMpH,EAASvnC,MAAK,EAAWs+C,YAC/Bt+C,MAAK,IAAeunC,GAAUA,EAAO6I,SACvC,CACA,mBAAA2+E,CAAoBpgF,GAIlB,GAHA3uC,KAAKulC,IAAI0P,MAAM,CACb4a,eAAe,IAEb7vD,MAAK,GAEP,YADAA,MAAK,GAAmBm/G,aAAan/G,KAAMA,MAAK,GAAY,EAAO2uC,GAGrE3uC,MAAK,EAAWo0C,yBAAyBp0C,MACzCA,MAAK,GAAa,IAAIo+B,gBACtB,MAAMC,EAASr+B,MAAK,EAAW0zC,eAAe1zC,MAAK,IACnDA,KAAKulC,IAAI9G,iBAAiB,QAAQ,EAChC8oB,oBAEIA,IAAkBvnD,KAAKulC,IAAIkL,SAAS8W,KACtCvnD,MAAK,GAAkB,KACvBA,KAAKy1C,iBACP,GACC,CACDpX,WAEFr+B,MAAK,GAAmBm/G,aAAan/G,KAAMA,MAAK,GAAY,EAAO2uC,EACrE,CACA,KAAAqgF,CAAMr6E,GACJ,GAAIA,EAAJ,CACE,MAAM,cACJjE,GACE9lC,SACA5K,KAAKulC,IAAIkL,SAASC,KACpB1wC,MAAK,GAAkB0wC,EAG3B,MACI1wC,MAAK,IACP27C,YAAW,KACT37C,MAAK,IAAiBi1C,QACtBj1C,MAAK,GAAkB,IAAI,GAC1B,EAEP,CACA,iBAAA88C,CAAkBijE,GAAY,GAC5B,OAAK//G,MAAK,IAGVA,MAAK,EAAWo0C,yBAAyB,MACzCp0C,MAAK,GAAWu+B,QAChBv+B,MAAK,GAAa,KAClBA,MAAK,GAAkB,KAChBA,MAAK,GAAmBioE,WAAW83C,IANjC,IAOX,CACA,aAAA33D,CAAc7gB,EAAQrkC,EAAG04B,GACvB,MAAM4X,EAAQxzC,MAAK,EAAWk1C,WAAWhyC,EAAG04B,GAC5C,OAAc,OAAV4X,GAAkBA,IAAUxzC,OAGhCwzC,EAAM6K,aAAa9W,IACZ,EACT,CACA,cAAAkO,GACE,QAAIz1C,MAAK,KACPA,KAAK88C,qBACE,EAGX,CACA,eAAAlK,GACO5yC,MAAK,IAGVA,MAAK,GAAmB8+G,2BAA2B9+G,KACrD,CACA,OAAAoqC,GACEpqC,KAAKy1C,iBACDz1C,MAAK,EAAWs+C,aAAa1T,SAAW5qC,OAC1CA,MAAK,EAAWy1C,iBAChBz1C,MAAK,EAAWm8C,gBAAgB,OAE9Bn8C,MAAK,KACPyzC,aAAazzC,MAAK,IAClBA,MAAK,GAAwB,MAE/B,IAAK,MAAMunC,KAAUvnC,MAAK,GAAS+e,SACjC/e,MAAK,IAAuB6uH,yBAAyBtnF,EAAO2oB,YAC5D3oB,EAAO6f,UAAU,MACjB7f,EAAO+d,iBAAkB,EACzB/d,EAAOhC,IAAIt1B,SAEbjQ,KAAKulC,IAAM,KACXvlC,MAAK,GAASwf,QACdxf,MAAK,EAAWg6C,YAAYh6C,KAC9B,CACA,MACE,IAAK,MAAMunC,KAAUvnC,MAAK,GAAS+e,SAC7BwoB,EAAO6I,WACT7I,EAAOt3B,QAGb,CACA,MAAA63B,EAAO,SACLtC,IAEAxlC,KAAKwlC,SAAWA,EAChBF,GAAmBtlC,KAAKulC,IAAKC,GAC7B,IAAK,MAAM+B,KAAUvnC,MAAK,EAAWu7C,WAAWv7C,KAAK25C,WACnD35C,KAAKyQ,IAAI82B,GACTA,EAAO6W,UAETp+C,KAAKi6C,YACP,CACA,MAAAiX,EAAO,SACL1rB,IAEAxlC,MAAK,EAAWy1C,iBAChBz1C,MAAK,KACL,MAAMivH,EAAcjvH,KAAKwlC,SAASpF,SAC5BA,EAAWoF,EAASpF,SAK1B,GAJApgC,KAAKwlC,SAAWA,EAChBF,GAAmBtlC,KAAKulC,IAAK,CAC3BnF,aAEE6uF,IAAgB7uF,EAClB,IAAK,MAAMmH,KAAUvnC,MAAK,GAAS+e,SACjCwoB,EAAOqnB,OAAOxuB,EAGpB,CACA,kBAAI+kB,GACF,MAAM,UACJ/jB,EAAS,WACTC,GACErhC,KAAKwlC,SAAStE,QAClB,MAAO,CAACE,EAAWC,EACrB,CACA,SAAIlB,GACF,OAAOngC,MAAK,EAAWmzC,eAAeC,SACxC,EAMF,MAAM87E,GACJ,IAAU,KACV,IAAW,IAAIjyF,IACf,IAAY,IAAIA,IAChB2B,SAAa,EACb,WAAAr/B,EAAY,UACVo6C,IAEA35C,KAAK25C,UAAYA,CACnB,CACA,SAAAyN,CAAUxc,GACR,GAAK5qC,MAAK,IAIV,GAAIA,MAAK,KAAY4qC,EAAQ,CAC3B,GAAI5qC,MAAK,GAAS6P,KAAO,EACvB,IAAK,MAAMwU,KAAQrkB,MAAK,GAAS+e,SAC/BsF,EAAKpU,SACL26B,EAAOt2B,OAAO+P,GAGlBrkB,MAAK,GAAU4qC,CACjB,OAXE5qC,MAAK,GAAU4qC,CAYnB,CACA,sBAAWukF,GACT,OAAO15F,EAAOz1B,KAAM,cAAe,IAAI+9F,GACzC,CACA,SAAO,CAAQp1D,GAAUzlC,EAAG04B,EAAGoF,EAAOC,IACpC,MAAM,MACJn2B,GACE69B,EACJ79B,EAAM29B,IAAS,IAAM7M,EAAT,IACZ9wB,EAAM09C,KAAU,IAAMtlD,EAAT,IACb4H,EAAMk2B,MAAW,IAAMA,EAAT,IACdl2B,EAAMm2B,OAAY,IAAMA,EAAT,GACjB,CACA,MACE,MAAMo8B,EAAM6xD,GAAUC,YAAY/jH,OAAO,EAAG,GAAG,GAG/C,OAFApL,MAAK,GAAQsU,OAAO+oD,GACpBA,EAAIr3B,aAAa,eAAe,GACzBq3B,CACT,CACA,IAAgBooC,EAAM2pB,GACpB,MAAM1pB,EAAWwpB,GAAUC,YAAY79G,cAAc,YACrDm0F,EAAKnxF,OAAOoxF,GACZ,MAAMoV,EAAa,QAAQsU,IAC3B1pB,EAAS1/D,aAAa,KAAM80E,GAC5BpV,EAAS1/D,aAAa,gBAAiB,qBACvC,MAAMqpF,EAAcH,GAAUC,YAAY79G,cAAc,OAIxD,OAHAo0F,EAASpxF,OAAO+6G,GAChBA,EAAYrpF,aAAa,OAAQ,IAAIopF,KACrCC,EAAYrnF,UAAUv3B,IAAI,QACnBqqG,CACT,CACA,IAAkBnyE,EAAS8lC,GACzB,IAAK,MAAO/lE,EAAK7J,KAAUN,OAAOoW,QAAQ85D,GAC1B,OAAV5vE,EACF8pC,EAAQyO,gBAAgB1uC,GAExBigC,EAAQ3C,aAAat9B,EAAK7J,EAGhC,CACA,IAAAi9G,CAAKrtC,EAAY6gD,GAAkB,EAAOC,GAAU,GAClD,MAAM//G,EAAK0/G,IAAU,IACf7qG,EAAOrkB,MAAK,KACZylG,EAAOypB,GAAUC,YAAY79G,cAAc,QACjD+S,EAAK/P,OAAOmxF,GACZ,MAAMpuC,EAAO63D,GAAUC,YAAY79G,cAAc,QACjDm0F,EAAKnxF,OAAO+iD,GACZ,MAAM+3D,EAAS,SAASpvH,KAAK25C,aAAanqC,IAC1C6nD,EAAKrxB,aAAa,KAAMopF,GACxB/3D,EAAKrxB,aAAa,gBAAiB,sBAC/BspF,GACFtvH,MAAK,GAAU0E,IAAI8K,EAAI6nD,GAEzB,MAAMyjD,EAAayU,EAAUvvH,MAAK,GAAgBylG,EAAM2pB,GAAU,KAC5DI,EAAMN,GAAUC,YAAY79G,cAAc,OAKhD,OAJA+S,EAAK/P,OAAOk7G,GACZA,EAAIxpF,aAAa,OAAQ,IAAIopF,KAC7BpvH,KAAKq7G,iBAAiBh3F,EAAMoqD,GAC5BzuE,MAAK,GAAS0E,IAAI8K,EAAI6U,GACf,CACL7U,KACAsrG,WAAY,QAAQA,KAExB,CACA,WAAAG,CAAYxsC,EAAYghD,GACtB,MAAMjgH,EAAK0/G,IAAU,IACf7qG,EAAOrkB,MAAK,KACZylG,EAAOypB,GAAUC,YAAY79G,cAAc,QACjD+S,EAAK/P,OAAOmxF,GACZ,MAAMpuC,EAAO63D,GAAUC,YAAY79G,cAAc,QACjDm0F,EAAKnxF,OAAO+iD,GACZ,MAAM+3D,EAAS,SAASpvH,KAAK25C,aAAanqC,IAG1C,IAAIkgH,EACJ,GAHAr4D,EAAKrxB,aAAa,KAAMopF,GACxB/3D,EAAKrxB,aAAa,gBAAiB,sBAE/BypF,EAA6B,CAC/B,MAAMthD,EAAO+gD,GAAUC,YAAY79G,cAAc,QACjDm0F,EAAKnxF,OAAO65D,GACZuhD,EAAS,SAAS1vH,KAAK25C,aAAanqC,IACpC2+D,EAAKnoC,aAAa,KAAM0pF,GACxBvhD,EAAKnoC,aAAa,YAAa,qBAC/B,MAAMrM,EAAOu1F,GAAUC,YAAY79G,cAAc,QACjD68D,EAAK75D,OAAOqlB,GACZA,EAAKqM,aAAa,QAAS,KAC3BrM,EAAKqM,aAAa,SAAU,KAC5BrM,EAAKqM,aAAa,OAAQ,SAC1B,MAAMwpF,EAAMN,GAAUC,YAAY79G,cAAc,OAChD68D,EAAK75D,OAAOk7G,GACZA,EAAIxpF,aAAa,OAAQ,IAAIopF,KAC7BI,EAAIxpF,aAAa,SAAU,QAC3BwpF,EAAIxpF,aAAa,OAAQ,SACzBwpF,EAAIxpF,aAAa,YAAa,WAC9BwpF,EAAIxnF,UAAUv3B,IAAI,OACpB,CACA,MAAMk/G,EAAOT,GAAUC,YAAY79G,cAAc,OACjD+S,EAAK/P,OAAOq7G,GACZA,EAAK3pF,aAAa,OAAQ,IAAIopF,KAC1BM,GACFC,EAAK3pF,aAAa,OAAQ,QAAQ0pF,MAEpC,MAAME,EAAOD,EAAKE,YAMlB,OALAxrG,EAAK/P,OAAOs7G,GACZD,EAAK3nF,UAAUv3B,IAAI,eACnBm/G,EAAK5nF,UAAUv3B,IAAI,oBACnBzQ,KAAKq7G,iBAAiBh3F,EAAMoqD,GAC5BzuE,MAAK,GAAS0E,IAAI8K,EAAI6U,GACf7U,CACT,CACA,YAAAwrG,CAAaxrG,EAAIi/D,GACfzuE,MAAK,GAAUqpC,OAAO75B,GACtBxP,KAAKq7G,iBAAiB7rG,EAAIi/D,EAC5B,CACA,gBAAA4sC,CAAiByU,EAAarhD,GAC5B,IAAKA,EACH,OAEF,MAAM,KACJpqD,EAAI,KACJo8C,EAAI,UACJy6C,EAAS,KACT7jD,GACEoX,EACE9lC,EAAiC,iBAAhBmnF,EAA2B9vH,MAAK,GAAS7B,IAAI2xH,GAAeA,EACnF,GAAKnnF,EAAL,CASA,GANItkB,GACFrkB,MAAK,GAAkB2oC,EAAStkB,GAE9Bo8C,GACFyuD,IAAU,GAAQvmF,EAAS83B,GAEzBy6C,EAAW,CACb,MAAM,UACJlzE,GACEW,EACJ,IAAK,MAAOP,EAAWvpC,KAAUN,OAAOoW,QAAQumG,GAC9ClzE,EAAUsN,OAAOlN,EAAWvpC,EAEhC,CACA,GAAIw4D,EAAM,CACR,MACM04D,EADOpnF,EAAQ8mB,WACIA,WACzBzvD,MAAK,GAAkB+vH,EAAa14D,EACtC,CAnBA,CAoBF,CACA,YAAAonD,CAAajvG,EAAIgkC,GACf,GAAIA,IAAUxzC,KACZ,OAEF,MAAMqkB,EAAOrkB,MAAK,GAAS7B,IAAIqR,GAC1B6U,IAGLmvB,GAAM,GAAQl/B,OAAO+P,GACrBrkB,MAAK,GAASqpC,OAAO75B,GACrBgkC,GAAM,GAAS9uC,IAAI8K,EAAI6U,GACzB,CACA,MAAApU,CAAOT,GACLxP,MAAK,GAAUqpC,OAAO75B,GACD,OAAjBxP,MAAK,KAGTA,MAAK,GAAS7B,IAAIqR,GAAIS,SACtBjQ,MAAK,GAASqpC,OAAO75B,GACvB,CACA,OAAA46B,GACEpqC,MAAK,GAAU,KACf,IAAK,MAAMqkB,KAAQrkB,MAAK,GAAS+e,SAC/BsF,EAAKpU,SAEPjQ,MAAK,GAASwf,QACdxf,MAAK,GAAUwf,OACjB,EAqBA3a,WAAWmrH,mBAAqB,CAC9BtY,kBAAmBA,IAGvB7yG,WAAWorH,SAAW,CACpB15F,eAAgBA,GAChBw3F,sBAAuBA,GACvB1jG,2BAA4BA,EAC5BP,qBAAsBA,EACtBmmB,0BAA2BA,GAC3BygE,gBAAiBA,GACjBlnF,eAAgBA,EAChB0C,eAAgBA,EAChBswE,MAAOA,GACPuc,YAAaA,GACbpkF,uBAAwBA,EACxBopE,cAAeA,GACfmxB,UAAWA,GACXgB,YAAal5F,GACb+H,UAAWA,GACX2vD,YAAaA,GACbrsD,mBAAoBA,GACpBE,sBAAuBA,GACvBlF,QAASA,GACTsH,mBAAoBA,GACpB45C,oBAAqBA,GACrB4xC,UAAWrkG,EACXoK,oBAAqBA,GACrB6L,aAAcA,GACdI,UAAWA,GACXy1B,oBAAqBA,GACrBj6B,UAAWA,GACX+F,cAAeA,GACf1G,iBAAkBA,GAClBlP,IAAKA,EACLmY,YAAaA,GACbtS,kBAAmBA,EACnBy7D,sBAAuBA,GACvBtrD,cAAeA,GACfwrD,UAAWA,GACXlkE,eAAgBA,EAChBuT,cAAeA,GACfkD,4BAA6BA,GAC7B1L,kBAAmBA,GACnBmP,mBAAoBA,GACpB7P,OAAQA,EACRstF,mBAAoBA,GACpBn/E,UAAWA,GACXyD,wBAAyBA,GACzBmkD,UAAWA,GACX9pC,aAAcA,GACdpsB,cAAeA,EACf8C,KAAMA,GACN1K,eAAgBA,EAChB1b,QAASA,GACTgsF,SAAUA,G","sources":["webpack://swh/./node_modules/pdfjs-dist/legacy/build/pdf.mjs"],"sourcesContent":["/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/**\n * pdfjsVersion = 5.3.93\n * pdfjsBuild = cbeef3233\n */\n/******/ var __webpack_modules__ = ({\n\n/***/ 34:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n\n/***/ }),\n\n/***/ 81:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar getIteratorMethod = __webpack_require__(851);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n\n\n/***/ }),\n\n/***/ 283:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar hasOwn = __webpack_require__(9297);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\nvar inspectSource = __webpack_require__(3706);\nvar InternalStateModule = __webpack_require__(1181);\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n\n\n/***/ }),\n\n/***/ 350:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar hasOwn = __webpack_require__(9297);\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\n\n/***/ }),\n\n/***/ 397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 421:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 507:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n\n\n/***/ }),\n\n/***/ 531:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorFlattenable = __webpack_require__(8646);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorClose = __webpack_require__(9539);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE\n && !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n\nvar FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var mapper = this.mapper;\n var result, inner;\n\n while (true) {\n if (inner = this.inner) try {\n result = anObject(call(inner.next, inner.iterator));\n if (!result.done) return result.value;\n this.inner = null;\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n\n result = anObject(call(this.next, iterator));\n\n if (this.done = !!result.done) return;\n\n try {\n this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n } catch (error) { iteratorClose(iterator, 'throw', error); }\n }\n});\n\n// `Iterator.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.flatmap\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n flatMap: function flatMap(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper,\n inner: null\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 616:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n\n\n/***/ }),\n\n/***/ 655:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n\n\n/***/ }),\n\n/***/ 679:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPrototypeOf = __webpack_require__(1625);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw new $TypeError('Incorrect invocation');\n};\n\n\n/***/ }),\n\n/***/ 684:\n/***/ ((module) => {\n\n\n// Should throw an error on invalid iterator\n// https://issues.chromium.org/issues/336839115\nmodule.exports = function (methodName, argument) {\n // eslint-disable-next-line es/no-iterator -- required for testing\n var method = typeof Iterator == 'function' && Iterator.prototype[methodName];\n if (method) try {\n method.call({ next: null }, argument).next();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 741:\n/***/ ((module) => {\n\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n\n\n/***/ }),\n\n/***/ 757:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar isCallable = __webpack_require__(4901);\nvar isPrototypeOf = __webpack_require__(1625);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n\n\n/***/ }),\n\n/***/ 851:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\nvar getMethod = __webpack_require__(5966);\nvar isNullOrUndefined = __webpack_require__(4117);\nvar Iterators = __webpack_require__(6269);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 944:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (options) {\n var alphabet = options && options.alphabet;\n if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n throw new $TypeError('Incorrect `alphabet` option');\n};\n\n\n/***/ }),\n\n/***/ 1072:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 1103:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n\n\n/***/ }),\n\n/***/ 1148:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n\n// `Iterator.prototype.every` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.every\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n every: function every(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return !iterate(record, function (value, stop) {\n if (!predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 1181:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8622);\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar hasOwn = __webpack_require__(9297);\nvar shared = __webpack_require__(7629);\nvar sharedKey = __webpack_require__(6119);\nvar hiddenKeys = __webpack_require__(421);\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 1291:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar trunc = __webpack_require__(741);\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n\n\n/***/ }),\n\n/***/ 1385:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar iteratorClose = __webpack_require__(9539);\n\nmodule.exports = function (iters, kind, value) {\n for (var i = iters.length - 1; i >= 0; i--) {\n if (iters[i] === undefined) continue;\n try {\n value = iteratorClose(iters[i].iterator, kind, value);\n } catch (error) {\n kind = 'throw';\n value = error;\n }\n }\n if (kind === 'throw') throw value;\n return value;\n};\n\n\n/***/ }),\n\n/***/ 1548:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar fails = __webpack_require__(9039);\nvar V8 = __webpack_require__(9519);\nvar ENVIRONMENT = __webpack_require__(4215);\n\nvar structuredClone = globalThis.structuredClone;\n\nmodule.exports = !!structuredClone && !fails(function () {\n // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n var buffer = new ArrayBuffer(8);\n var clone = structuredClone(buffer, { transfer: [buffer] });\n return buffer.byteLength !== 0 || clone.byteLength !== 8;\n});\n\n\n/***/ }),\n\n/***/ 1549:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar $fromBase64 = __webpack_require__(9143);\nvar anUint8Array = __webpack_require__(4154);\n\nvar Uint8Array = globalThis.Uint8Array;\n\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n var target = new Uint8Array([255, 255, 255, 255, 255]);\n try {\n target.setFromBase64('MjYyZg===');\n } catch (error) {\n return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n }\n})();\n\n// `Uint8Array.prototype.setFromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n setFromBase64: function setFromBase64(string /* , options */) {\n anUint8Array(this);\n\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n\n return { read: result.read, written: result.written };\n }\n});\n\n\n/***/ }),\n\n/***/ 1625:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n\n/***/ }),\n\n/***/ 1689:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar apply = __webpack_require__(8745);\nvar slice = __webpack_require__(7680);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\nvar aCallable = __webpack_require__(9306);\nvar perform = __webpack_require__(1103);\n\nvar Promise = globalThis.Promise;\n\nvar ACCEPT_ARGUMENTS = false;\n// Avoiding the use of polyfills of the previous iteration of this proposal\n// that does not accept arguments of the callback\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\n Promise['try'](function (argument) {\n ACCEPT_ARGUMENTS = argument === 8;\n }, 8);\n}).error || !ACCEPT_ARGUMENTS;\n\n// `Promise.try` method\n// https://tc39.es/ecma262/#sec-promise.try\n$({ target: 'Promise', stat: true, forced: FORCED }, {\n 'try': function (callbackfn /* , ...args */) {\n var args = arguments.length > 1 ? slice(arguments, 1) : [];\n var promiseCapability = newPromiseCapabilityModule.f(this);\n var result = perform(function () {\n return apply(aCallable(callbackfn), undefined, args);\n });\n (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n return promiseCapability.promise;\n }\n});\n\n\n/***/ }),\n\n/***/ 1698:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar union = __webpack_require__(4204);\nvar setMethodGetKeysBeforeCloning = __webpack_require__(9835);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar FORCED = !setMethodAcceptSetLike('union') || !setMethodGetKeysBeforeCloning('union');\n\n// `Set.prototype.union` method\n// https://tc39.es/ecma262/#sec-set.prototype.union\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n union: union\n});\n\n\n/***/ }),\n\n/***/ 1701:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });\nvar mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n\nvar FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var result = anObject(call(this.next, iterator));\n var done = this.done = !!result.done;\n if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.map\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n map: function map(mapper) {\n anObject(this);\n try {\n aCallable(mapper);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n\n return new IteratorProxy(getIteratorDirect(this), {\n mapper: mapper\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 1767:\n/***/ ((module) => {\n\n\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n\n\n/***/ }),\n\n/***/ 1828:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\nvar toIndexedObject = __webpack_require__(5397);\nvar indexOf = (__webpack_require__(9617).indexOf);\nvar hiddenKeys = __webpack_require__(421);\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2106:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar makeBuiltIn = __webpack_require__(283);\nvar defineProperty = __webpack_require__(4913);\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n\n\n/***/ }),\n\n/***/ 2140:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 2195:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\n\n/***/ }),\n\n/***/ 2211:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 2303:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\n\nvar Uint8Array = globalThis.Uint8Array;\nvar SyntaxError = globalThis.SyntaxError;\nvar parseInt = globalThis.parseInt;\nvar min = Math.min;\nvar NOT_HEX = /[^\\da-f]/i;\nvar exec = uncurryThis(NOT_HEX.exec);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (string, into) {\n var stringLength = string.length;\n if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n var maxLength = into ? min(into.length, stringLength / 2) : stringLength / 2;\n var bytes = into || new Uint8Array(maxLength);\n var read = 0;\n var written = 0;\n while (written < maxLength) {\n var hexits = stringSlice(string, read, read += 2);\n if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n bytes[written++] = parseInt(hexits, 16);\n }\n return { bytes: bytes, read: read };\n};\n\n\n/***/ }),\n\n/***/ 2360:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = __webpack_require__(8551);\nvar definePropertiesModule = __webpack_require__(6801);\nvar enumBugKeys = __webpack_require__(8727);\nvar hiddenKeys = __webpack_require__(421);\nvar html = __webpack_require__(397);\nvar documentCreateElement = __webpack_require__(4055);\nvar sharedKey = __webpack_require__(6119);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 2475:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSupersetOf = __webpack_require__(8527);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n return !result;\n});\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issupersetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSupersetOf: isSupersetOf\n});\n\n\n/***/ }),\n\n/***/ 2489:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar createIteratorProxy = __webpack_require__(9462);\nvar callWithSafeIterationClosing = __webpack_require__(6319);\nvar IS_PURE = __webpack_require__(6395);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });\nvar filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n\nvar FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var predicate = this.predicate;\n var next = this.next;\n var result, done, value;\n while (true) {\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n value = result.value;\n if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n }\n});\n\n// `Iterator.prototype.filter` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.filter\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n filter: function filter(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n\n return new IteratorProxy(getIteratorDirect(this), {\n predicate: predicate\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 2529:\n/***/ ((module) => {\n\n\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n\n\n/***/ }),\n\n/***/ 2603:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toString = __webpack_require__(655);\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n\n\n/***/ }),\n\n/***/ 2652:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar bind = __webpack_require__(6080);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar tryToString = __webpack_require__(6823);\nvar isArrayIteratorMethod = __webpack_require__(4209);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar isPrototypeOf = __webpack_require__(1625);\nvar getIterator = __webpack_require__(81);\nvar getIteratorMethod = __webpack_require__(851);\nvar iteratorClose = __webpack_require__(9539);\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal');\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n\n\n/***/ }),\n\n/***/ 2777:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isObject = __webpack_require__(34);\nvar isSymbol = __webpack_require__(757);\nvar getMethod = __webpack_require__(5966);\nvar ordinaryToPrimitive = __webpack_require__(4270);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n\n/***/ }),\n\n/***/ 2787:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar isCallable = __webpack_require__(4901);\nvar toObject = __webpack_require__(8981);\nvar sharedKey = __webpack_require__(6119);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 2796:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 2804:\n/***/ ((module) => {\n\n\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\nvar base64Alphabet = commonAlphabet + '+/';\nvar base64UrlAlphabet = commonAlphabet + '-_';\n\nvar inverse = function (characters) {\n // TODO: use `Object.create(null)` in `core-js@4`\n var result = {};\n var index = 0;\n for (; index < 64; index++) result[characters.charAt(index)] = index;\n return result;\n};\n\nmodule.exports = {\n i2c: base64Alphabet,\n c2i: inverse(base64Alphabet),\n i2cUrl: base64UrlAlphabet,\n c2iUrl: inverse(base64UrlAlphabet)\n};\n\n\n/***/ }),\n\n/***/ 2812:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n\n\n/***/ }),\n\n/***/ 2839:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n\n\n/***/ }),\n\n/***/ 2967:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar isObject = __webpack_require__(34);\nvar requireObjectCoercible = __webpack_require__(7750);\nvar aPossiblePrototype = __webpack_require__(3506);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 3167:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar setPrototypeOf = __webpack_require__(2967);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 3238:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\nvar arrayBufferByteLength = __webpack_require__(7394);\n\nvar DataView = globalThis.DataView;\n\nmodule.exports = function (O) {\n if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n try {\n // eslint-disable-next-line no-new -- thrower\n new DataView(O);\n return false;\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 3392:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n\n/***/ }),\n\n/***/ 3440:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(result, e)) remove(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3463:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'string') return argument;\n throw new $TypeError('Argument is not a string');\n};\n\n\n/***/ }),\n\n/***/ 3506:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isPossiblePrototype = __webpack_require__(3925);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n\n\n/***/ }),\n\n/***/ 3579:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n\n// `Iterator.prototype.some` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.some\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n some: function some(predicate) {\n anObject(this);\n try {\n aCallable(predicate);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop();\n }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n }\n});\n\n\n/***/ }),\n\n/***/ 3650:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 3706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar isCallable = __webpack_require__(4901);\nvar store = __webpack_require__(7629);\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 3717:\n/***/ ((__unused_webpack_module, exports) => {\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 3724:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n\n\n/***/ }),\n\n/***/ 3789:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar call = __webpack_require__(9565);\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar getIteratorDirect = __webpack_require__(1767);\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n\n\n/***/ }),\n\n/***/ 3838:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar size = __webpack_require__(5170);\nvar iterate = __webpack_require__(8469);\nvar getSetRecord = __webpack_require__(3789);\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n\n\n/***/ }),\n\n/***/ 3853:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isDisjointFrom = __webpack_require__(4449);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n return !result;\n});\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isDisjointFrom: isDisjointFrom\n});\n\n\n/***/ }),\n\n/***/ 3925:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n\n\n/***/ }),\n\n/***/ 3972:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (argument === undefined || isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object or undefined');\n};\n\n\n/***/ }),\n\n/***/ 4055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isObject = __webpack_require__(34);\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 4114:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar toObject = __webpack_require__(8981);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar setArrayLength = __webpack_require__(4527);\nvar doesNotExceedSafeInteger = __webpack_require__(6837);\nvar fails = __webpack_require__(9039);\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n\n\n/***/ }),\n\n/***/ 4117:\n/***/ ((module) => {\n\n\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n\n\n/***/ }),\n\n/***/ 4149:\n/***/ ((module) => {\n\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n // eslint-disable-next-line no-self-compare -- NaN check\n if (it === it) return it;\n throw new $RangeError('NaN is not allowed');\n};\n\n\n/***/ }),\n\n/***/ 4154:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(6955);\n\nvar $TypeError = TypeError;\n\n// Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n// If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\nmodule.exports = function (argument) {\n if (classof(argument) === 'Uint8Array') return argument;\n throw new $TypeError('Argument is not an Uint8Array');\n};\n\n\n/***/ }),\n\n/***/ 4204:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar add = (__webpack_require__(4402).add);\nvar clone = __webpack_require__(9286);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 4209:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar wellKnownSymbol = __webpack_require__(8227);\nvar Iterators = __webpack_require__(6269);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 4215:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* global Bun, Deno -- detection */\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\nvar classof = __webpack_require__(2195);\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n\n\n/***/ }),\n\n/***/ 4270:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 4376:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classof = __webpack_require__(2195);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4402:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n\n\n/***/ }),\n\n/***/ 4449:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getBuiltInNodeModule = __webpack_require__(9429);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar $ArrayBuffer = globalThis.ArrayBuffer;\nvar $MessageChannel = globalThis.MessageChannel;\nvar detach = false;\nvar WorkerThreads, channel, buffer, $detach;\n\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\n detach = function (transferable) {\n structuredClone(transferable, { transfer: [transferable] });\n };\n} else if ($ArrayBuffer) try {\n if (!$MessageChannel) {\n WorkerThreads = getBuiltInNodeModule('worker_threads');\n if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n }\n\n if ($MessageChannel) {\n channel = new $MessageChannel();\n buffer = new $ArrayBuffer(2);\n\n $detach = function (transferable) {\n channel.port1.postMessage(null, [transferable]);\n };\n\n if (buffer.byteLength === 2) {\n $detach(buffer);\n if (buffer.byteLength === 0) detach = $detach;\n }\n }\n} catch (error) { /* empty */ }\n\nmodule.exports = detach;\n\n\n/***/ }),\n\n/***/ 4495:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = __webpack_require__(9519);\nvar fails = __webpack_require__(9039);\nvar globalThis = __webpack_require__(4576);\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n\n/***/ }),\n\n/***/ 4527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar isArray = __webpack_require__(4376);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n\n\n/***/ }),\n\n/***/ 4549:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// https://github.com/tc39/ecma262/pull/3467\nmodule.exports = function (METHOD_NAME, ExpectedError) {\n var Iterator = globalThis.Iterator;\n var IteratorPrototype = Iterator && Iterator.prototype;\n var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n\n var CLOSED = false;\n\n if (method) try {\n method.call({\n next: function () { return { done: true }; },\n 'return': function () { CLOSED = true; }\n }, -1);\n } catch (error) {\n // https://bugs.webkit.org/show_bug.cgi?id=291195\n if (!(error instanceof ExpectedError)) CLOSED = false;\n }\n\n if (!CLOSED) return method;\n};\n\n\n/***/ }),\n\n/***/ 4576:\n/***/ (function(module) {\n\n\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 4603:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar append = uncurryThis(URLSearchParamsPrototype.append);\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\nvar push = uncurryThis([].push);\nvar params = new $URLSearchParams('a=1&a=2&b=3');\n\nparams['delete']('a', 1);\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nparams['delete']('b', undefined);\n\nif (params + '' !== 'a=2') {\n defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $delete(this, name);\n var entries = [];\n forEach(this, function (v, k) { // also validates `this`\n push(entries, { key: k, value: v });\n });\n validateArgumentsLength(length, 1);\n var key = toString(name);\n var value = toString($value);\n var index = 0;\n var dindex = 0;\n var found = false;\n var entriesLength = entries.length;\n var entry;\n while (index < entriesLength) {\n entry = entries[index++];\n if (found || entry.key === key) {\n found = true;\n $delete(this, entry.key);\n } else dindex++;\n }\n while (dindex < entriesLength) {\n entry = entries[dindex++];\n if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n }\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4628:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar newPromiseCapabilityModule = __webpack_require__(6043);\n\n// `Promise.withResolvers` method\n// https://tc39.es/ecma262/#sec-promise.withResolvers\n$({ target: 'Promise', stat: true }, {\n withResolvers: function withResolvers() {\n var promiseCapability = newPromiseCapabilityModule.f(this);\n return {\n promise: promiseCapability.promise,\n resolve: promiseCapability.resolve,\n reject: promiseCapability.reject\n };\n }\n});\n\n\n/***/ }),\n\n/***/ 4659:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n\n\n/***/ }),\n\n/***/ 4901:\n/***/ ((module) => {\n\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n\n\n/***/ }),\n\n/***/ 4913:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar anObject = __webpack_require__(8551);\nvar toPropertyKey = __webpack_require__(6969);\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\n\nvar createSetLike = function (size) {\n return {\n size: size,\n has: function () {\n return false;\n },\n keys: function () {\n return {\n next: function () {\n return { done: true };\n }\n };\n }\n };\n};\n\nvar createSetLikeWithInfinitySize = function (size) {\n return {\n size: size,\n has: function () {\n return true;\n },\n keys: function () {\n throw new Error('e');\n }\n };\n};\n\nmodule.exports = function (name, callback) {\n var Set = getBuiltIn('Set');\n try {\n new Set()[name](createSetLike(0));\n try {\n // late spec change, early WebKit ~ Safari 17 implementation does not pass it\n // https://github.com/tc39/proposal-set-methods/pull/88\n // also covered engines with\n // https://bugs.webkit.org/show_bug.cgi?id=272679\n new Set()[name](createSetLike(-1));\n return false;\n } catch (error2) {\n if (!callback) return true;\n // early V8 implementation bug\n // https://issues.chromium.org/issues/351332634\n try {\n new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n return false;\n } catch (error) {\n var set = new Set();\n set.add(1);\n set.add(2);\n return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n }\n }\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ }),\n\n/***/ 4979:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar defineProperty = (__webpack_require__(4913).f);\nvar hasOwn = __webpack_require__(9297);\nvar anInstance = __webpack_require__(679);\nvar inheritIfRequired = __webpack_require__(3167);\nvar normalizeStringArgument = __webpack_require__(2603);\nvar DOMExceptionConstants = __webpack_require__(5002);\nvar clearErrorStack = __webpack_require__(8574);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DOM_EXCEPTION = 'DOMException';\nvar Error = getBuiltIn('Error');\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n\nvar $DOMException = function DOMException() {\n anInstance(this, DOMExceptionPrototype);\n var argumentsLength = arguments.length;\n var message = normalizeStringArgument(argumentsLength < 1 ? undefined : arguments[0]);\n var name = normalizeStringArgument(argumentsLength < 2 ? undefined : arguments[1], 'Error');\n var that = new NativeDOMException(message, name);\n var error = new Error(message);\n error.name = DOM_EXCEPTION;\n defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n inheritIfRequired(that, this, $DOMException);\n return that;\n};\n\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n\n// Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n// https://github.com/Jarred-Sumner/bun/issues/399\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n\n// `DOMException` constructor patch for `.stack` where it's required\n// https://webidl.spec.whatwg.org/#es-DOMException-specialness\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic\n DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n});\n\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n if (!IS_PURE) {\n defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n }\n\n for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n var constant = DOMExceptionConstants[key];\n var constantName = constant.s;\n if (!hasOwn(PolyfilledDOMException, constantName)) {\n defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 5002:\n/***/ ((module) => {\n\n\nmodule.exports = {\n IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n};\n\n\n/***/ }),\n\n/***/ 5024:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar symmetricDifference = __webpack_require__(3650);\nvar setMethodGetKeysBeforeCloning = __webpack_require__(9835);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar FORCED = !setMethodAcceptSetLike('symmetricDifference') || !setMethodGetKeysBeforeCloning('symmetricDifference');\n\n// `Set.prototype.symmetricDifference` method\n// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n symmetricDifference: symmetricDifference\n});\n\n\n/***/ }),\n\n/***/ 5031:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar getOwnPropertyNamesModule = __webpack_require__(8480);\nvar getOwnPropertySymbolsModule = __webpack_require__(3717);\nvar anObject = __webpack_require__(8551);\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 5169:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isDetached = __webpack_require__(3238);\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 5170:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar SetHelpers = __webpack_require__(4402);\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n\n\n/***/ }),\n\n/***/ 5370:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar lengthOfArrayLike = __webpack_require__(6198);\n\nmodule.exports = function (Constructor, list, $length) {\n var index = 0;\n var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n var result = new Constructor(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 5397:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(7055);\nvar requireObjectCoercible = __webpack_require__(7750);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 5610:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 5623:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\n\nvar numberToString = uncurryThis(1.1.toString);\n\n// `Uint8Array.prototype.toHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n toHex: function toHex() {\n anUint8Array(this);\n notDetached(this.buffer);\n var result = '';\n for (var i = 0, length = this.length; i < length; i++) {\n var hex = numberToString(this[i], 16);\n result += hex.length === 1 ? '0' + hex : hex;\n }\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 5636:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar toIndex = __webpack_require__(7696);\nvar notDetached = __webpack_require__(5169);\nvar arrayBufferByteLength = __webpack_require__(7394);\nvar detachTransferable = __webpack_require__(4483);\nvar PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n\nvar structuredClone = globalThis.structuredClone;\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar DataView = globalThis.DataView;\nvar min = Math.min;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataViewPrototype = DataView.prototype;\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\n\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n var byteLength = arrayBufferByteLength(arrayBuffer);\n var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n var fixedLength = !isResizable || !isResizable(arrayBuffer);\n var newBuffer;\n notDetached(arrayBuffer);\n if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n }\n if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n newBuffer = slice(arrayBuffer, 0, newByteLength);\n } else {\n var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n newBuffer = new ArrayBuffer(newByteLength, options);\n var a = new DataView(arrayBuffer);\n var b = new DataView(newBuffer);\n var copyLength = min(newByteLength, byteLength);\n for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));\n }\n if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n return newBuffer;\n};\n\n\n/***/ }),\n\n/***/ 5745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar store = __webpack_require__(7629);\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n\n\n/***/ }),\n\n/***/ 5781:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar getBuiltIn = __webpack_require__(7751);\nvar validateArgumentsLength = __webpack_require__(2812);\nvar toString = __webpack_require__(655);\nvar USE_NATIVE_URL = __webpack_require__(7416);\n\nvar URL = getBuiltIn('URL');\n\n// `URL.parse` method\n// https://url.spec.whatwg.org/#dom-url-canparse\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n parse: function parse(url) {\n var length = validateArgumentsLength(arguments.length, 1);\n var urlString = toString(url);\n var base = length < 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n try {\n return new URL(urlString, base);\n } catch (error) {\n return null;\n }\n }\n});\n\n\n/***/ }),\n\n/***/ 5876:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar isSubsetOf = __webpack_require__(3838);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n return result;\n});\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.es/ecma262/#sec-set.prototype.issubsetof\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n isSubsetOf: isSubsetOf\n});\n\n\n/***/ }),\n\n/***/ 5917:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\nvar createElement = __webpack_require__(4055);\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n\n\n/***/ }),\n\n/***/ 5966:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\nvar isNullOrUndefined = __webpack_require__(4117);\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n\n\n/***/ }),\n\n/***/ 6043:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aCallable = __webpack_require__(9306);\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n\n\n/***/ }),\n\n/***/ 6080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(7476);\nvar aCallable = __webpack_require__(9306);\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 6119:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar shared = __webpack_require__(5745);\nvar uid = __webpack_require__(3392);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 6193:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar ENVIRONMENT = __webpack_require__(4215);\n\nmodule.exports = ENVIRONMENT === 'NODE';\n\n\n/***/ }),\n\n/***/ 6198:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toLength = __webpack_require__(8014);\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n\n\n/***/ }),\n\n/***/ 6269:\n/***/ ((module) => {\n\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 6279:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar anObject = __webpack_require__(8551);\nvar iteratorClose = __webpack_require__(9539);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n\n\n/***/ }),\n\n/***/ 6395:\n/***/ ((module) => {\n\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 6518:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar getOwnPropertyDescriptor = (__webpack_require__(7347).f);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIn = __webpack_require__(6840);\nvar defineGlobalProperty = __webpack_require__(9433);\nvar copyConstructorProperties = __webpack_require__(7740);\nvar isForced = __webpack_require__(2796);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 6573:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar isDetached = __webpack_require__(3238);\n\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\n\n// `ArrayBuffer.prototype.detached` getter\n// https://tc39.es/ecma262/#sec-get-arraybuffer.prototype.detached\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n configurable: true,\n get: function detached() {\n return isDetached(this);\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 6699:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar definePropertyModule = __webpack_require__(4913);\nvar createPropertyDescriptor = __webpack_require__(6980);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 6706:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar aCallable = __webpack_require__(9306);\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n\n\n/***/ }),\n\n/***/ 6801:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\nvar definePropertyModule = __webpack_require__(4913);\nvar anObject = __webpack_require__(8551);\nvar toIndexedObject = __webpack_require__(5397);\nvar objectKeys = __webpack_require__(1072);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 6823:\n/***/ ((module) => {\n\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\n\n/***/ }),\n\n/***/ 6837:\n/***/ ((module) => {\n\n\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n\n\n/***/ }),\n\n/***/ 6840:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar definePropertyModule = __webpack_require__(4913);\nvar makeBuiltIn = __webpack_require__(283);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 6955:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\nvar isCallable = __webpack_require__(4901);\nvar classofRaw = __webpack_require__(2195);\nvar wellKnownSymbol = __webpack_require__(8227);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 6969:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toPrimitive = __webpack_require__(2777);\nvar isSymbol = __webpack_require__(757);\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\n\n/***/ }),\n\n/***/ 6980:\n/***/ ((module) => {\n\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 7040:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 7055:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar fails = __webpack_require__(9039);\nvar classof = __webpack_require__(2195);\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n\n\n/***/ }),\n\n/***/ 7080:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar has = (__webpack_require__(4402).has);\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7347:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar call = __webpack_require__(9565);\nvar propertyIsEnumerableModule = __webpack_require__(8773);\nvar createPropertyDescriptor = __webpack_require__(6980);\nvar toIndexedObject = __webpack_require__(5397);\nvar toPropertyKey = __webpack_require__(6969);\nvar hasOwn = __webpack_require__(9297);\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 7394:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThisAccessor = __webpack_require__(6706);\nvar classof = __webpack_require__(2195);\n\nvar ArrayBuffer = globalThis.ArrayBuffer;\nvar TypeError = globalThis.TypeError;\n\n// Includes\n// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n return O.byteLength;\n};\n\n\n/***/ }),\n\n/***/ 7416:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'https://a');\n var params = url.searchParams;\n var params2 = new URLSearchParams('a=1&a=2&b=3');\n var result = '';\n url.pathname = 'c%20d';\n params.forEach(function (value, key) {\n params['delete']('b');\n result += key + value;\n });\n params2['delete']('a', 2);\n // `undefined` case is a Chromium 117 bug\n // https://bugs.chromium.org/p/v8/issues/detail?id=14222\n params2['delete']('b', undefined);\n return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n || (!params.size && (IS_PURE || !DESCRIPTORS))\n || !params.sort\n || url.href !== 'https://a/c%20d?a=1&c=3'\n || params.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !params[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('https://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('https://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('https://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 7476:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar classofRaw = __webpack_require__(2195);\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n\n\n/***/ }),\n\n/***/ 7566:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar defineBuiltIn = __webpack_require__(6840);\nvar uncurryThis = __webpack_require__(9504);\nvar toString = __webpack_require__(655);\nvar validateArgumentsLength = __webpack_require__(2812);\n\nvar $URLSearchParams = URLSearchParams;\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\nvar params = new $URLSearchParams('a=1');\n\n// `undefined` case is a Chromium 117 bug\n// https://bugs.chromium.org/p/v8/issues/detail?id=14222\nif (params.has('a', 2) || !params.has('a', undefined)) {\n defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name /* , value */) {\n var length = arguments.length;\n var $value = length < 2 ? undefined : arguments[1];\n if (length && $value === undefined) return $has(this, name);\n var values = getAll(this, name); // also validates `this`\n validateArgumentsLength(length, 1);\n var value = toString($value);\n var index = 0;\n while (index < values.length) {\n if (values[index++] === value) return true;\n } return false;\n }, { enumerable: true, unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 7629:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar IS_PURE = __webpack_require__(6395);\nvar globalThis = __webpack_require__(4576);\nvar defineGlobalProperty = __webpack_require__(9433);\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.43.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.43.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n\n\n/***/ }),\n\n/***/ 7642:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar difference = __webpack_require__(3440);\nvar fails = __webpack_require__(9039);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike('difference', function (result) {\n return result.size === 0;\n});\n\nvar FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function () {\n // https://bugs.webkit.org/show_bug.cgi?id=288595\n var setLike = {\n size: 1,\n has: function () { return true; },\n keys: function () {\n var index = 0;\n return {\n next: function () {\n var done = index++ > 1;\n if (baseSet.has(1)) baseSet.clear();\n return { done: done, value: 2 };\n }\n };\n }\n };\n // eslint-disable-next-line es/no-set -- testing\n var baseSet = new Set([1, 2, 3, 4]);\n // eslint-disable-next-line es/no-set-prototype-difference -- testing\n return baseSet.difference(setLike).size !== 3;\n});\n\n// `Set.prototype.difference` method\n// https://tc39.es/ecma262/#sec-set.prototype.difference\n$({ target: 'Set', proto: true, real: true, forced: FORCED }, {\n difference: difference\n});\n\n\n/***/ }),\n\n/***/ 7657:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar fails = __webpack_require__(9039);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar create = __webpack_require__(2360);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltIn = __webpack_require__(6840);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IS_PURE = __webpack_require__(6395);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7680:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nmodule.exports = uncurryThis([].slice);\n\n\n/***/ }),\n\n/***/ 7696:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\nvar toLength = __webpack_require__(8014);\n\nvar $RangeError = RangeError;\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toIntegerOrInfinity(it);\n var length = toLength(number);\n if (number !== length) throw new $RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 7740:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar hasOwn = __webpack_require__(9297);\nvar ownKeys = __webpack_require__(5031);\nvar getOwnPropertyDescriptorModule = __webpack_require__(7347);\nvar definePropertyModule = __webpack_require__(4913);\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n\n\n/***/ }),\n\n/***/ 7750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isNullOrUndefined = __webpack_require__(4117);\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 7751:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 7811:\n/***/ ((module) => {\n\n\n// eslint-disable-next-line es/no-typed-arrays -- safe\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n\n\n/***/ }),\n\n/***/ 7936:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transferToFixedLength` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transferToFixedLength: function transferToFixedLength() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n }\n});\n\n\n/***/ }),\n\n/***/ 8004:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar fails = __webpack_require__(9039);\nvar intersection = __webpack_require__(8750);\nvar setMethodAcceptSetLike = __webpack_require__(4916);\n\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n return result.size === 2 && result.has(1) && result.has(2);\n}) || fails(function () {\n // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing\n return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n});\n\n// `Set.prototype.intersection` method\n// https://tc39.es/ecma262/#sec-set.prototype.intersection\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n intersection: intersection\n});\n\n\n/***/ }),\n\n/***/ 8014:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 8100:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar $transfer = __webpack_require__(5636);\n\n// `ArrayBuffer.prototype.transfer` method\n// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n transfer: function transfer() {\n return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n }\n});\n\n\n/***/ }),\n\n/***/ 8111:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar anInstance = __webpack_require__(679);\nvar anObject = __webpack_require__(8551);\nvar isCallable = __webpack_require__(4901);\nvar getPrototypeOf = __webpack_require__(2787);\nvar defineBuiltInAccessor = __webpack_require__(2106);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar hasOwn = __webpack_require__(9297);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar IS_PURE = __webpack_require__(6395);\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = globalThis[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n || !isCallable(NativeIterator)\n || NativeIterator.prototype !== IteratorPrototype\n // FF44- non-standard `Iterator` passes previous tests\n || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n anInstance(this, IteratorPrototype);\n if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n if (DESCRIPTORS) {\n defineBuiltInAccessor(IteratorPrototype, key, {\n configurable: true,\n get: function () {\n return value;\n },\n set: function (replacement) {\n anObject(this);\n if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n if (hasOwn(this, key)) this[key] = replacement;\n else createProperty(this, key, replacement);\n }\n });\n } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://tc39.es/ecma262/#sec-iterator\n$({ global: true, constructor: true, forced: FORCED }, {\n Iterator: IteratorConstructor\n});\n\n\n/***/ }),\n\n/***/ 8227:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar shared = __webpack_require__(5745);\nvar hasOwn = __webpack_require__(9297);\nvar uid = __webpack_require__(3392);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 8235:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar hasOwn = __webpack_require__(9297);\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n\n\n/***/ }),\n\n/***/ 8237:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar iterate = __webpack_require__(2652);\nvar aCallable = __webpack_require__(9306);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar apply = __webpack_require__(8745);\nvar fails = __webpack_require__(9039);\n\nvar $TypeError = TypeError;\n\n// https://bugs.webkit.org/show_bug.cgi?id=291651\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n // eslint-disable-next-line es/no-iterator-prototype-reduce, es/no-array-prototype-keys, array-callback-return -- required for testing\n [].keys().reduce(function () { /* empty */ }, undefined);\n});\n\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n\n// `Iterator.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.reduce\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n reduce: function reduce(reducer /* , initialValue */) {\n anObject(this);\n try {\n aCallable(reducer);\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? undefined : arguments[1];\n if (reduceWithoutClosingOnEarlyError) {\n return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n }\n var record = getIteratorDirect(this);\n var counter = 0;\n iterate(record, function (value) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = reducer(accumulator, value, counter);\n }\n counter++;\n }, { IS_RECORD: true });\n if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n return accumulator;\n }\n});\n\n\n/***/ }),\n\n/***/ 8335:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar DESCRIPTORS = __webpack_require__(3724);\nvar globalThis = __webpack_require__(4576);\nvar getBuiltIn = __webpack_require__(7751);\nvar uncurryThis = __webpack_require__(9504);\nvar call = __webpack_require__(9565);\nvar isCallable = __webpack_require__(4901);\nvar isObject = __webpack_require__(34);\nvar isArray = __webpack_require__(4376);\nvar hasOwn = __webpack_require__(9297);\nvar toString = __webpack_require__(655);\nvar lengthOfArrayLike = __webpack_require__(6198);\nvar createProperty = __webpack_require__(4659);\nvar fails = __webpack_require__(9039);\nvar parseJSONString = __webpack_require__(8235);\nvar NATIVE_SYMBOL = __webpack_require__(4495);\n\nvar JSON = globalThis.JSON;\nvar Number = globalThis.Number;\nvar SyntaxError = globalThis.SyntaxError;\nvar nativeParse = JSON && JSON.parse;\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis([].push);\n\nvar IS_DIGIT = /^\\d$/;\nvar IS_NON_ZERO_DIGIT = /^[1-9]$/;\nvar IS_NUMBER_START = /^[\\d-]$/;\nvar IS_WHITESPACE = /^[\\t\\n\\r ]$/;\n\nvar PRIMITIVE = 0;\nvar OBJECT = 1;\n\nvar $parse = function (source, reviver) {\n source = toString(source);\n var context = new Context(source, 0, '');\n var root = context.parse();\n var value = root.value;\n var endIndex = context.skip(IS_WHITESPACE, root.end);\n if (endIndex < source.length) {\n throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n }\n return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n};\n\nvar internalize = function (holder, name, reviver, node) {\n var val = holder[name];\n var unmodified = node && val === node.value;\n var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n var elementRecordsLen, keys, len, i, P;\n if (isObject(val)) {\n var nodeIsArray = isArray(val);\n var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n if (nodeIsArray) {\n elementRecordsLen = nodes.length;\n len = lengthOfArrayLike(val);\n for (i = 0; i < len; i++) {\n internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));\n }\n } else {\n keys = enumerableOwnProperties(val);\n len = lengthOfArrayLike(keys);\n for (i = 0; i < len; i++) {\n P = keys[i];\n internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n }\n }\n }\n return call(reviver, holder, name, val, context);\n};\n\nvar internalizeProperty = function (object, key, value) {\n if (DESCRIPTORS) {\n var descriptor = getOwnPropertyDescriptor(object, key);\n if (descriptor && !descriptor.configurable) return;\n }\n if (value === undefined) delete object[key];\n else createProperty(object, key, value);\n};\n\nvar Node = function (value, end, source, nodes) {\n this.value = value;\n this.end = end;\n this.source = source;\n this.nodes = nodes;\n};\n\nvar Context = function (source, index) {\n this.source = source;\n this.index = index;\n};\n\n// https://www.json.org/json-en.html\nContext.prototype = {\n fork: function (nextIndex) {\n return new Context(this.source, nextIndex);\n },\n parse: function () {\n var source = this.source;\n var i = this.skip(IS_WHITESPACE, this.index);\n var fork = this.fork(i);\n var chr = at(source, i);\n if (exec(IS_NUMBER_START, chr)) return fork.number();\n switch (chr) {\n case '{':\n return fork.object();\n case '[':\n return fork.array();\n case '\"':\n return fork.string();\n case 't':\n return fork.keyword(true);\n case 'f':\n return fork.keyword(false);\n case 'n':\n return fork.keyword(null);\n } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n },\n node: function (type, value, start, end, nodes) {\n return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n },\n object: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectKeypair = false;\n var object = {};\n var nodes = {};\n while (i < source.length) {\n i = this.until(['\"', '}'], i);\n if (at(source, i) === '}' && !expectKeypair) {\n i++;\n break;\n }\n // Parsing the key\n var result = this.fork(i).string();\n var key = result.value;\n i = result.end;\n i = this.until([':'], i) + 1;\n // Parsing value\n i = this.skip(IS_WHITESPACE, i);\n result = this.fork(i).parse();\n createProperty(nodes, key, result);\n createProperty(object, key, result.value);\n i = this.until([',', '}'], result.end);\n var chr = at(source, i);\n if (chr === ',') {\n expectKeypair = true;\n i++;\n } else if (chr === '}') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, object, this.index, i, nodes);\n },\n array: function () {\n var source = this.source;\n var i = this.index + 1;\n var expectElement = false;\n var array = [];\n var nodes = [];\n while (i < source.length) {\n i = this.skip(IS_WHITESPACE, i);\n if (at(source, i) === ']' && !expectElement) {\n i++;\n break;\n }\n var result = this.fork(i).parse();\n push(nodes, result);\n push(array, result.value);\n i = this.until([',', ']'], result.end);\n if (at(source, i) === ',') {\n expectElement = true;\n i++;\n } else if (at(source, i) === ']') {\n i++;\n break;\n }\n }\n return this.node(OBJECT, array, this.index, i, nodes);\n },\n string: function () {\n var index = this.index;\n var parsed = parseJSONString(this.source, this.index + 1);\n return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n },\n number: function () {\n var source = this.source;\n var startIndex = this.index;\n var i = startIndex;\n if (at(source, i) === '-') i++;\n if (at(source, i) === '0') i++;\n else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n else throw new SyntaxError('Failed to parse number at: ' + i);\n if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n if (at(source, i) === 'e' || at(source, i) === 'E') {\n i++;\n if (at(source, i) === '+' || at(source, i) === '-') i++;\n var exponentStartIndex = i;\n i = this.skip(IS_DIGIT, i);\n if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n }\n return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n },\n keyword: function (value) {\n var keyword = '' + value;\n var index = this.index;\n var endIndex = index + keyword.length;\n if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n return this.node(PRIMITIVE, value, index, endIndex);\n },\n skip: function (regex, i) {\n var source = this.source;\n for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;\n return i;\n },\n until: function (array, i) {\n i = this.skip(IS_WHITESPACE, i);\n var chr = at(this.source, i);\n for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;\n throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n }\n};\n\nvar NO_SOURCE_SUPPORT = fails(function () {\n var unsafeInt = '9007199254740993';\n var source;\n nativeParse(unsafeInt, function (key, value, context) {\n source = context.source;\n });\n return source !== unsafeInt;\n});\n\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n // Safari 9 bug\n return 1 / nativeParse('-0 \\t') !== -Infinity;\n});\n\n// `JSON.parse` method\n// https://tc39.es/ecma262/#sec-json.parse\n// https://github.com/tc39/proposal-json-parse-with-source\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n parse: function parse(text, reviver) {\n return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n }\n});\n\n\n/***/ }),\n\n/***/ 8469:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar iterateSimple = __webpack_require__(507);\nvar SetHelpers = __webpack_require__(4402);\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n\n\n/***/ }),\n\n/***/ 8480:\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\nvar internalObjectKeys = __webpack_require__(1828);\nvar enumBugKeys = __webpack_require__(8727);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 8527:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar has = (__webpack_require__(4402).has);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSimple = __webpack_require__(507);\nvar iteratorClose = __webpack_require__(9539);\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n\n\n/***/ }),\n\n/***/ 8551:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isObject = __webpack_require__(34);\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n\n\n/***/ }),\n\n/***/ 8574:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable, sonarjs/slow-regex -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n\n\n/***/ }),\n\n/***/ 8622:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar isCallable = __webpack_require__(4901);\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n\n\n/***/ }),\n\n/***/ 8646:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar getIteratorMethod = __webpack_require__(851);\n\nmodule.exports = function (obj, stringHandling) {\n if (!stringHandling || typeof obj !== 'string') anObject(obj);\n var method = getIteratorMethod(obj);\n return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n};\n\n\n/***/ }),\n\n/***/ 8686:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar fails = __webpack_require__(9039);\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n\n\n/***/ }),\n\n/***/ 8721:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar DESCRIPTORS = __webpack_require__(3724);\nvar uncurryThis = __webpack_require__(9504);\nvar defineBuiltInAccessor = __webpack_require__(2106);\n\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n\n// `URLSearchParams.prototype.size` getter\n// https://github.com/whatwg/url/pull/734\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n get: function size() {\n var count = 0;\n forEach(this, function () { count++; });\n return count;\n },\n configurable: true,\n enumerable: true\n });\n}\n\n\n/***/ }),\n\n/***/ 8727:\n/***/ ((module) => {\n\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 8745:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n\n\n/***/ }),\n\n/***/ 8750:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar aSet = __webpack_require__(7080);\nvar SetHelpers = __webpack_require__(4402);\nvar size = __webpack_require__(5170);\nvar getSetRecord = __webpack_require__(3789);\nvar iterateSet = __webpack_require__(8469);\nvar iterateSimple = __webpack_require__(507);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n\n\n/***/ }),\n\n/***/ 8773:\n/***/ ((__unused_webpack_module, exports) => {\n\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 8981:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar requireObjectCoercible = __webpack_require__(7750);\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 9039:\n/***/ ((module) => {\n\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 9143:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar aString = __webpack_require__(3463);\nvar hasOwn = __webpack_require__(9297);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\nvar notDetached = __webpack_require__(5169);\n\nvar base64Alphabet = base64Map.c2i;\nvar base64UrlAlphabet = base64Map.c2iUrl;\n\nvar SyntaxError = globalThis.SyntaxError;\nvar TypeError = globalThis.TypeError;\nvar at = uncurryThis(''.charAt);\n\nvar skipAsciiWhitespace = function (string, index) {\n var length = string.length;\n for (;index < length; index++) {\n var chr = at(string, index);\n if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n } return index;\n};\n\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n var chunkLength = chunk.length;\n\n if (chunkLength < 4) {\n chunk += chunkLength === 2 ? 'AA' : 'A';\n }\n\n var triplet = (alphabet[at(chunk, 0)] << 18)\n + (alphabet[at(chunk, 1)] << 12)\n + (alphabet[at(chunk, 2)] << 6)\n + alphabet[at(chunk, 3)];\n\n var chunkBytes = [\n (triplet >> 16) & 255,\n (triplet >> 8) & 255,\n triplet & 255\n ];\n\n if (chunkLength === 2) {\n if (throwOnExtraBits && chunkBytes[1] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0]];\n }\n\n if (chunkLength === 3) {\n if (throwOnExtraBits && chunkBytes[2] !== 0) {\n throw new SyntaxError('Extra bits');\n }\n return [chunkBytes[0], chunkBytes[1]];\n }\n\n return chunkBytes;\n};\n\nvar writeBytes = function (bytes, elements, written) {\n var elementsLength = elements.length;\n for (var index = 0; index < elementsLength; index++) {\n bytes[written + index] = elements[index];\n }\n return written + elementsLength;\n};\n\n/* eslint-disable max-statements, max-depth -- TODO */\nmodule.exports = function (string, options, into, maxLength) {\n aString(string);\n anObjectOrUndefined(options);\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n\n if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n\n if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n throw new TypeError('Incorrect `lastChunkHandling` option');\n }\n\n if (into) notDetached(into.buffer);\n\n var bytes = into || [];\n var written = 0;\n var read = 0;\n var chunk = '';\n var index = 0;\n\n if (maxLength) while (true) {\n index = skipAsciiWhitespace(string, index);\n if (index === string.length) {\n if (chunk.length > 0) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n if (lastChunkHandling === 'loose') {\n if (chunk.length === 1) {\n throw new SyntaxError('Malformed padding: exactly one additional character');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n } else {\n throw new SyntaxError('Missing padding');\n }\n }\n read = string.length;\n break;\n }\n var chr = at(string, index);\n ++index;\n if (chr === '=') {\n if (chunk.length < 2) {\n throw new SyntaxError('Padding is too early');\n }\n index = skipAsciiWhitespace(string, index);\n if (chunk.length === 2) {\n if (index === string.length) {\n if (lastChunkHandling === 'stop-before-partial') {\n break;\n }\n throw new SyntaxError('Malformed padding: only one =');\n }\n if (at(string, index) === '=') {\n ++index;\n index = skipAsciiWhitespace(string, index);\n }\n }\n if (index < string.length) {\n throw new SyntaxError('Unexpected character after padding');\n }\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n read = string.length;\n break;\n }\n if (!hasOwn(alphabet, chr)) {\n throw new SyntaxError('Unexpected character');\n }\n var remainingBytes = maxLength - written;\n if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n // special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n break;\n }\n\n chunk += chr;\n if (chunk.length === 4) {\n written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n chunk = '';\n read = index;\n if (written === maxLength) {\n break;\n }\n }\n }\n\n return { bytes: bytes, read: read, written: written };\n};\n\n\n/***/ }),\n\n/***/ 9286:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar SetHelpers = __webpack_require__(4402);\nvar iterate = __webpack_require__(8469);\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9297:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar uncurryThis = __webpack_require__(9504);\nvar toObject = __webpack_require__(8981);\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\n\n/***/ }),\n\n/***/ 9306:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar isCallable = __webpack_require__(4901);\nvar tryToString = __webpack_require__(6823);\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n\n\n/***/ }),\n\n/***/ 9314:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getIteratorDirect = __webpack_require__(1767);\nvar notANaN = __webpack_require__(4149);\nvar toPositiveInteger = __webpack_require__(9590);\nvar iteratorClose = __webpack_require__(9539);\nvar createIteratorProxy = __webpack_require__(9462);\nvar iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\nvar IS_PURE = __webpack_require__(6395);\n\nvar DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);\nvar dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR\n && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);\n\nvar FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError;\n\nvar IteratorProxy = createIteratorProxy(function () {\n var iterator = this.iterator;\n var next = this.next;\n var result, done;\n while (this.remaining) {\n this.remaining--;\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (done) return;\n }\n result = anObject(call(next, iterator));\n done = this.done = !!result.done;\n if (!done) return result.value;\n});\n\n// `Iterator.prototype.drop` method\n// https://tc39.es/ecma262/#sec-iterator.prototype.drop\n$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {\n drop: function drop(limit) {\n anObject(this);\n var remaining;\n try {\n remaining = toPositiveInteger(notANaN(+limit));\n } catch (error) {\n iteratorClose(this, 'throw', error);\n }\n\n if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\n\n return new IteratorProxy(getIteratorDirect(this), {\n remaining: remaining\n });\n }\n});\n\n\n/***/ }),\n\n/***/ 9429:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar IS_NODE = __webpack_require__(6193);\n\nmodule.exports = function (name) {\n if (IS_NODE) {\n try {\n return globalThis.process.getBuiltinModule(name);\n } catch (error) { /* empty */ }\n try {\n // eslint-disable-next-line no-new-func -- safe\n return Function('return require(\"' + name + '\")')();\n } catch (error) { /* empty */ }\n }\n};\n\n\n/***/ }),\n\n/***/ 9432:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar arrayFromConstructorAndList = __webpack_require__(5370);\nvar $fromBase64 = __webpack_require__(9143);\n\nvar Uint8Array = globalThis.Uint8Array;\n\n// `Uint8Array.fromBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\n fromBase64: function fromBase64(string /* , options */) {\n var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\n return arrayFromConstructorAndList(Uint8Array, result.bytes);\n }\n});\n\n\n/***/ }),\n\n/***/ 9433:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 9462:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar create = __webpack_require__(2360);\nvar createNonEnumerableProperty = __webpack_require__(6699);\nvar defineBuiltIns = __webpack_require__(6279);\nvar wellKnownSymbol = __webpack_require__(8227);\nvar InternalStateModule = __webpack_require__(1181);\nvar getMethod = __webpack_require__(5966);\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\nvar createIterResultObject = __webpack_require__(2529);\nvar iteratorClose = __webpack_require__(9539);\nvar iteratorCloseAll = __webpack_require__(1385);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar NORMAL = 'normal';\nvar THROW = 'throw';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n return defineBuiltIns(create(IteratorPrototype), {\n next: function next() {\n var state = getInternalState(this);\n // for simplification:\n // for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n // for `%IteratorHelperPrototype%.next` - just a value\n if (IS_ITERATOR) return state.nextHandler();\n if (state.done) return createIterResultObject(undefined, true);\n try {\n var result = state.nextHandler();\n return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n } catch (error) {\n state.done = true;\n throw error;\n }\n },\n 'return': function () {\n var state = getInternalState(this);\n var iterator = state.iterator;\n state.done = true;\n if (IS_ITERATOR) {\n var returnMethod = getMethod(iterator, 'return');\n return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n }\n if (state.inner) try {\n iteratorClose(state.inner.iterator, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (state.openIters) try {\n iteratorCloseAll(state.openIters, NORMAL);\n } catch (error) {\n return iteratorClose(iterator, THROW, error);\n }\n if (iterator) iteratorClose(iterator, NORMAL);\n return createIterResultObject(undefined, true);\n }\n });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n var IteratorProxy = function Iterator(record, state) {\n if (state) {\n state.iterator = record.iterator;\n state.next = record.next;\n } else state = record;\n state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n state.nextHandler = nextHandler;\n state.counter = 0;\n state.done = false;\n setInternalState(this, state);\n };\n\n IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n return IteratorProxy;\n};\n\n\n/***/ }),\n\n/***/ 9504:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 9519:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar globalThis = __webpack_require__(4576);\nvar userAgent = __webpack_require__(2839);\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n\n\n/***/ }),\n\n/***/ 9539:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar call = __webpack_require__(9565);\nvar anObject = __webpack_require__(8551);\nvar getMethod = __webpack_require__(5966);\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n\n\n/***/ }),\n\n/***/ 9565:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar NATIVE_BIND = __webpack_require__(616);\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\n\n/***/ }),\n\n/***/ 9590:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIntegerOrInfinity = __webpack_require__(1291);\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw new $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9617:\n/***/ ((module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar toIndexedObject = __webpack_require__(5397);\nvar toAbsoluteIndex = __webpack_require__(5610);\nvar lengthOfArrayLike = __webpack_require__(6198);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 9631:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar uncurryThis = __webpack_require__(9504);\nvar anObjectOrUndefined = __webpack_require__(3972);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar base64Map = __webpack_require__(2804);\nvar getAlphabetOption = __webpack_require__(944);\n\nvar base64Alphabet = base64Map.i2c;\nvar base64UrlAlphabet = base64Map.i2cUrl;\n\nvar charAt = uncurryThis(''.charAt);\n\n// `Uint8Array.prototype.toBase64` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n toBase64: function toBase64(/* options */) {\n var array = anUint8Array(this);\n var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n var omitPadding = !!options && !!options.omitPadding;\n notDetached(this.buffer);\n\n var result = '';\n var i = 0;\n var length = array.length;\n var triplet;\n\n var at = function (shift) {\n return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n };\n\n for (; i + 2 < length; i += 3) {\n triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];\n result += at(3) + at(2) + at(1) + at(0);\n }\n if (i + 2 === length) {\n triplet = (array[i] << 16) + (array[i + 1] << 8);\n result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n } else if (i + 1 === length) {\n triplet = array[i] << 16;\n result += at(3) + at(2) + (omitPadding ? '' : '==');\n }\n\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 9797:\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n\nvar $ = __webpack_require__(6518);\nvar globalThis = __webpack_require__(4576);\nvar aString = __webpack_require__(3463);\nvar anUint8Array = __webpack_require__(4154);\nvar notDetached = __webpack_require__(5169);\nvar $fromHex = __webpack_require__(2303);\n\n// `Uint8Array.prototype.setFromHex` method\n// https://github.com/tc39/proposal-arraybuffer-base64\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n setFromHex: function setFromHex(string) {\n anUint8Array(this);\n aString(string);\n notDetached(this.buffer);\n var read = $fromHex(string, this).read;\n return { read: read, written: read / 2 };\n }\n});\n\n\n/***/ }),\n\n/***/ 9835:\n/***/ ((module) => {\n\n\n// Should get iterator record of a set-like object before cloning this\n// https://bugs.webkit.org/show_bug.cgi?id=289430\nmodule.exports = function (METHOD_NAME) {\n try {\n // eslint-disable-next-line es/no-set -- needed for test\n var baseSet = new Set();\n var setLike = {\n size: 0,\n has: function () { return true; },\n keys: function () {\n // eslint-disable-next-line es/no-object-defineproperty -- needed for test\n return Object.defineProperty({}, 'next', {\n get: function () {\n baseSet.clear();\n baseSet.add(4);\n return function () {\n return { done: true };\n };\n }\n });\n }\n };\n var result = baseSet[METHOD_NAME](setLike);\n\n return result.size !== 1 || result.values().next().value !== 4;\n } catch (error) {\n return false;\n }\n};\n\n\n/***/ })\n\n/******/ });\n/************************************************************************/\n/******/ // The module cache\n/******/ var __webpack_module_cache__ = {};\n/******/ \n/******/ // The require function\n/******/ function __webpack_require__(moduleId) {\n/******/ \t// Check if module is in cache\n/******/ \tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \tif (cachedModule !== undefined) {\n/******/ \t\treturn cachedModule.exports;\n/******/ \t}\n/******/ \t// Create a new module (and put it into the cache)\n/******/ \tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t// no module.id needed\n/******/ \t\t// no module.loaded needed\n/******/ \t\texports: {}\n/******/ \t};\n/******/ \n/******/ \t// Execute the module function\n/******/ \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \n/******/ \t// Return the exports of the module\n/******/ \treturn module.exports;\n/******/ }\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js\nvar es_array_push = __webpack_require__(4114);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.detached.js\nvar es_array_buffer_detached = __webpack_require__(6573);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer.js\nvar es_array_buffer_transfer = __webpack_require__(8100);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.transfer-to-fixed-length.js\nvar es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js\nvar es_iterator_constructor = __webpack_require__(8111);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js\nvar es_iterator_reduce = __webpack_require__(8237);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.try.js\nvar es_promise_try = __webpack_require__(1689);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.from-base64.js\nvar esnext_uint8_array_from_base64 = __webpack_require__(9432);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-base64.js\nvar esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.set-from-hex.js\nvar esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-base64.js\nvar esnext_uint8_array_to_base64 = __webpack_require__(9631);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.uint8-array.to-hex.js\nvar esnext_uint8_array_to_hex = __webpack_require__(5623);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-exception.stack.js\nvar web_dom_exception_stack = __webpack_require__(4979);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.parse.js\nvar web_url_parse = __webpack_require__(5781);\n;// ./src/shared/util.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n SIGNATURE: 101\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94\n};\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n closePath: 3\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n if (m1 !== 0 || m2 !== 0) {\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Math.sumPrecise !== \"function\") {\n Math.sumPrecise = function (numbers) {\n return numbers.reduce((a, b) => a + b, 0);\n };\n}\nif (typeof AbortSignal.any !== \"function\") {\n AbortSignal.any = function (iterable) {\n const ac = new AbortController();\n const {\n signal\n } = ac;\n for (const s of iterable) {\n if (s.aborted) {\n ac.abort(s.reason);\n return signal;\n }\n }\n for (const s of iterable) {\n s.addEventListener(\"abort\", () => {\n ac.abort(s.reason);\n }, {\n signal\n });\n }\n return signal;\n };\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js\nvar es_iterator_map = __webpack_require__(1701);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.promise.with-resolvers.js\nvar es_promise_with_resolvers = __webpack_require__(4628);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js\nvar es_set_difference_v2 = __webpack_require__(7642);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js\nvar es_set_intersection_v2 = __webpack_require__(8004);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js\nvar es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-subset-of.v2.js\nvar es_set_is_subset_of_v2 = __webpack_require__(5876);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-superset-of.v2.js\nvar es_set_is_superset_of_v2 = __webpack_require__(2475);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.symmetric-difference.v2.js\nvar es_set_symmetric_difference_v2 = __webpack_require__(5024);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js\nvar es_set_union_v2 = __webpack_require__(1698);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.delete.js\nvar web_url_search_params_delete = __webpack_require__(4603);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.has.js\nvar web_url_search_params_has = __webpack_require__(7566);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url-search-params.size.js\nvar web_url_search_params_size = __webpack_require__(8721);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.drop.js\nvar es_iterator_drop = __webpack_require__(9314);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.every.js\nvar es_iterator_every = __webpack_require__(1148);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js\nvar es_iterator_some = __webpack_require__(3579);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/esnext.json.parse.js\nvar esnext_json_parse = __webpack_require__(8335);\n;// ./src/display/display_utils.js\n\n\n\n\n\n\n\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n const p = [x, y];\n Util.applyTransform(p, this.transform);\n return p;\n }\n convertToViewportRectangle(rect) {\n const topLeft = [rect[0], rect[1]];\n Util.applyTransform(topLeft, this.transform);\n const bottomRight = [rect[2], rect[3]];\n Util.applyTransform(bottomRight, this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n const p = [x, y];\n Util.applyInverseTransform(p, this.transform);\n return p;\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const getURL = urlString => {\n try {\n return new URL(urlString);\n } catch {\n try {\n return new URL(decodeURIComponent(urlString));\n } catch {\n try {\n return new URL(urlString, \"https://foo.bar\");\n } catch {\n try {\n return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n } catch {\n return null;\n }\n }\n }\n }\n };\n const newURL = getURL(url);\n if (!newURL) {\n return defaultFilename;\n }\n const decode = name => {\n try {\n let decoded = decodeURIComponent(name);\n if (decoded.includes(\"/\")) {\n decoded = decoded.split(\"/\").at(-1);\n if (decoded.test(/^\\.pdf$/i)) {\n return decoded;\n }\n return name;\n }\n return decoded;\n } catch {\n return name;\n }\n };\n const pdfRegex = /\\.pdf$/i;\n const filename = newURL.pathname.split(\"/\").at(-1);\n if (pdfRegex.test(filename)) {\n return decode(filename);\n }\n if (newURL.searchParams.size > 0) {\n const values = Array.from(newURL.searchParams.values()).reverse();\n for (const value of values) {\n if (pdfRegex.test(value)) {\n return decode(value);\n }\n }\n const keys = Array.from(newURL.searchParams.keys()).reverse();\n for (const key of keys) {\n if (pdfRegex.test(key)) {\n return decode(key);\n }\n }\n }\n if (newURL.hash) {\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const hashFilename = reFilename.exec(newURL.hash);\n if (hashFilename) {\n return decode(hashFilename[0]);\n }\n }\n return defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n span.style.colorScheme = \"only light\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n static capPixels(maxPixels, capAreaFactor) {\n if (capAreaFactor >= 0) {\n const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor / 100));\n return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n }\n return maxPixels;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.append(button, this.#divider);\n }\n async addButton(name, tool) {\n switch (name) {\n case \"colorPicker\":\n this.addColorPicker(tool);\n break;\n case \"altText\":\n await this.addAltText(tool);\n break;\n case \"editSignature\":\n await this.addEditSignatureButton(tool);\n break;\n case \"delete\":\n this.addDeleteButton();\n break;\n }\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #viewerAlert = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, viewerAlert, altTextManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#viewerAlert = viewerAlert;\n this.#altTextManager = altTextManager;\n this.#signatureManager = signatureManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#signatureManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => {\n pair = pair.split(\"=\").map(x => x.trim());\n pair[1] = pair[1].toUpperCase();\n return pair;\n })) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n a11yAlert(messageId, args = null) {\n const viewerAlert = this.#viewerAlert;\n if (!viewerAlert) {\n return;\n }\n viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n if (args) {\n viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n } else {\n viewerAlert.removeAttribute(\"data-l10n-args\");\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false, mustEnterInEditMode = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#currentDrawingSession?.commitOrRemove();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this._editorUndoBar?.hide();\n this.#updateModeCapability.resolve();\n return;\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId || editor.id === editId) {\n this.setSelected(editor);\n if (mustEnterInEditMode) {\n editor.enterInEditMode();\n }\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(options) {\n if (options.mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n ...options\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.updateToolbar({\n mode: editor.mode,\n editId: editor.id\n });\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n if (this.#touchMoveAC) {\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n }\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n isSelected = false;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n this.annotationElementId = parameters.annotationElementId || null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n get mode() {\n return Object.getPrototypeOf(this).constructor._editorType;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) / savedWidth;\n } else {\n ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n get toolbarButtons() {\n return null;\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n const {\n toolbarButtons\n } = this;\n if (toolbarButtons) {\n for (const [name, tool] of toolbarButtons) {\n await this._editToolbar.addButton(name, tool);\n }\n }\n this._editToolbar.addButton(\"delete\");\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n createAltText() {\n if (!this.#altText) {\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n }\n return this.#altText;\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(false);\n this.#isInEditMode = true;\n return true;\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return false;\n }\n this.parent.setEditingState(true);\n this.#isInEditMode = false;\n return true;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n annotationElementId: data.annotationElementId\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n if (this.isSelected && this._editToolbar) {\n return;\n }\n this.isSelected = true;\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n if (!this.isSelected) {\n return;\n }\n this.isSelected = false;\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get canChangeContent() {\n return false;\n }\n enterInEditMode() {\n if (!this.canChangeContent) {\n return;\n }\n this.enableEditMode();\n this.div.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n this.parent.updateToolbar({\n mode: this.constructor._editorType,\n editId: this.id\n });\n }\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\n\n\n\n\n\n\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n [Symbol.iterator]() {\n return this.#storage.entries();\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\n\n\n\n\n\n\n\n\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, inspectFont = null) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n}\n\n;// ./src/display/api_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\n\n;// ./src/shared/message_handler.js\n\n\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js\nvar es_iterator_filter = __webpack_require__(2489);\n;// ./src/display/filter_factory.js\n\n\n\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = updateUrlHash(url, \"\");\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\n\n\n\n\n\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nif (isNodeJS) {\n let canvas;\n try {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n try {\n canvas = require(\"@napi-rs/canvas\");\n } catch (ex) {\n warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n }\n } catch (ex) {\n warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n }\n if (!globalThis.DOMMatrix) {\n if (canvas?.DOMMatrix) {\n globalThis.DOMMatrix = canvas.DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n }\n if (!globalThis.ImageData) {\n if (canvas?.ImageData) {\n globalThis.ImageData = canvas.ImageData;\n } else {\n warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n }\n }\n if (!globalThis.Path2D) {\n if (canvas?.Path2D) {\n globalThis.Path2D = canvas.Path2D;\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n }\n if (!globalThis.navigator?.language) {\n globalThis.navigator = {\n language: \"en-US\",\n platform: \"\",\n userAgent: \"\"\n };\n }\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\n\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n isModifyingCurrentTransform() {\n return true;\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n const scale = new Float32Array(2);\n if (pathType === PathType.SHADING) {\n Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n } else if (this.matrix) {\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n scale[0] *= matrixScaleX;\n scale[1] *= matrixScaleY;\n } else {\n Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n this.color = IR[1];\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const scale = new Float32Array(2);\n Util.singularValueDecompose2dScale(this.matrix, scale);\n const [matrixScaleX, matrixScaleY] = scale;\n Util.singularValueDecompose2dScale(this.baseTransform, scale);\n const combinedScaleX = matrixScaleX * scale[0];\n const combinedScaleY = matrixScaleY * scale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const {\n fillStyle,\n strokeStyle\n } = this.ctx;\n context.fillStyle = current.fillColor = fillStyle;\n context.strokeStyle = current.strokeColor = strokeStyle;\n break;\n case PaintType.UNCOLORED:\n context.fillStyle = context.strokeStyle = color;\n current.fillColor = current.strokeColor = color;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n isModifyingCurrentTransform() {\n return false;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\n\n\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\n\n\n\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst FULL_CHUNK_HEIGHT = 16;\nconst SCALE_MATRIX = new DOMMatrix();\nconst XY = new Float32Array(2);\nconst MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function () {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function () {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function (x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function (x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function (a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function (a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function () {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function (angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function (rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nclass CanvasExtraState {\n alphaIsShape = false;\n fontSize = 0;\n fontSizeScale = 1;\n textMatrix = null;\n textMatrixScale = 1;\n fontMatrix = FONT_IDENTITY_MATRIX;\n leading = 0;\n x = 0;\n y = 0;\n lineX = 0;\n lineY = 0;\n charSpacing = 0;\n wordSpacing = 0;\n textHScale = 1;\n textRenderingMode = TextRenderingMode.FILL;\n textRise = 0;\n fillColor = \"#000000\";\n strokeColor = \"#000000\";\n patternFill = false;\n patternStroke = false;\n fillAlpha = 1;\n strokeAlpha = 1;\n lineWidth = 1;\n activeSMask = null;\n transferMaps = \"none\";\n constructor(width, height) {\n this.clipBox = new Float32Array([0, 0, width, height]);\n this.minMax = MIN_MAX_INIT.slice();\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n clone.minMax = this.minMax.slice();\n return clone;\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = this.minMax.slice();\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const xStrokePad = XY[0] * this.lineWidth / 2;\n const yStrokePad = XY[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minMax[0] === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox.set(box, 0);\n this.minMax.set(MIN_MAX_INIT, 0);\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n Util.singularValueDecompose2dScale(transform, XY);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return XY[0] <= actualScale && XY[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n const [minX, minY, maxX, maxY] = minMax;\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.ctx.globalAlpha = this.current.fillAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n const ctx = this.ctx = scratchCanvas.context;\n ctx.setTransform(this.suspendedCtx.getTransform());\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdrop;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdrop;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n }\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0) {\n if (this.inSMaskMode) {\n this.endSMaskMode();\n }\n return;\n }\n this.current = this.stateStack.pop();\n this.ctx.restore();\n if (this.inSMaskMode) {\n copyCtxState(this.suspendedCtx, this.ctx);\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(op, data, minMax) {\n let [path] = data;\n if (!minMax) {\n path ||= data[0] = new Path2D();\n this[op](path);\n return;\n }\n if (!(path instanceof Path2D)) {\n const path2d = data[0] = new Path2D();\n for (let i = 0, ii = path.length; i < ii;) {\n switch (path[i++]) {\n case DrawOPS.moveTo:\n path2d.moveTo(path[i++], path[i++]);\n break;\n case DrawOPS.lineTo:\n path2d.lineTo(path[i++], path[i++]);\n break;\n case DrawOPS.curveTo:\n path2d.bezierCurveTo(path[i++], path[i++], path[i++], path[i++], path[i++], path[i++]);\n break;\n case DrawOPS.closePath:\n path2d.closePath();\n break;\n default:\n warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n break;\n }\n }\n path = path2d;\n }\n Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n this[op](path);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(path, consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n this.rescaleAndStroke(path, false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(path, true);\n }\n }\n if (consumePath) {\n this.consumePath(path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke(path) {\n this.stroke(path);\n }\n fill(path, consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n if (baseTransform) {\n const newPath = new Path2D();\n newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n path = newPath;\n }\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(path, \"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill(path);\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(path, intersect);\n }\n }\n eoFill(path) {\n this.pendingEOFill = true;\n this.fill(path);\n }\n fillStroke(path) {\n this.fill(path, false);\n this.stroke(path, false);\n this.consumePath(path);\n }\n eoFillStroke(path) {\n this.pendingEOFill = true;\n this.fillStroke(path);\n }\n closeFillStroke(path) {\n this.fillStroke(path);\n }\n closeEOFillStroke(path) {\n this.pendingEOFill = true;\n this.fillStroke(path);\n }\n endPath(path) {\n this.consumePath(path);\n }\n rawFillPath(path) {\n this.ctx.fill(path);\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = null;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n return;\n }\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(matrix) {\n const {\n current\n } = this;\n current.textMatrix = matrix;\n current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n Util.singularValueDecompose2dScale(transf, XY);\n ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n if (current.textMatrix) {\n ctx.transform(...current.textMatrix);\n }\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n } else if (this.contentVisible) {\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const p = [glyph.width, 0];\n Util.applyTransform(p, fontMatrix);\n width = p[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n const clip = new Path2D();\n clip.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip(clip);\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n this.current.patternStroke = true;\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(color) {\n this.ctx.strokeStyle = this.current.strokeColor = color;\n this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(color) {\n this.ctx.fillStyle = this.current.fillColor = color;\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const minMax = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n const [x0, y0, x1, y1] = minMax;\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n const [x0, y0, x1, y1] = bbox;\n const clip = new Path2D();\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n this.ctx.clip(clip);\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n let clip = new Path2D();\n const [x0, y0, x1, y1] = group.bbox;\n clip.rect(x0, y0, x1 - x0, y1 - y0);\n if (group.matrix) {\n const path = new Path2D();\n path.addPath(clip, new DOMMatrix(group.matrix));\n clip = path;\n }\n groupCtx.clip(clip);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = MIN_MAX_INIT.slice();\n Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n const clip = new Path2D();\n clip.rect(rect[0], rect[1], width, height);\n this.ctx.clip(clip);\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n ctx.drawImage(mask.canvas, trans[4], trans[5]);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(path, clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(path, \"evenodd\");\n } else {\n ctx.clip(path);\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(path, saveRestore) {\n const {\n ctx,\n current: {\n lineWidth\n }\n } = this;\n const [scaleX, scaleY] = this.getScaleForStroking();\n if (scaleX === scaleY) {\n ctx.lineWidth = (lineWidth || 1) * scaleX;\n ctx.stroke(path);\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n SCALE_MATRIX.a = 1 / scaleX;\n SCALE_MATRIX.d = 1 / scaleY;\n const newPath = new Path2D();\n newPath.addPath(path, SCALE_MATRIX);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.lineWidth = lineWidth || 1;\n ctx.stroke(newPath);\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\nclass Metadata {\n #map;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#map = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#map.get(name) ?? null;\n }\n [Symbol.iterator]() {\n return this.#map.entries();\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n [Symbol.iterator]() {\n return this.#groups.entries();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\n\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\n\n\n\n\n\n\n\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\n\n\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/pdf_objects.js\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\n\n\n\n\n\n\n\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\n\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n worker = PDFWorker.create({\n verbosity,\n port: GlobalWorkerOptions.workerPort\n });\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.3.93\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n _capability = Promise.withResolvers();\n _transport = null;\n _worker = null;\n docId = `d${PDFDocumentLoadingTask.#docId++}`;\n destroyed = false;\n onPassword = null;\n onProgress = null;\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n async getData() {\n return this._transport.getData();\n }\n}\nclass PDFDataRangeTransport {\n #capability = Promise.withResolvers();\n #progressiveDoneListeners = [];\n #progressiveReadListeners = [];\n #progressListeners = [];\n #rangeListeners = [];\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n }\n addRangeListener(listener) {\n this.#rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this.#progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this.#progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this.#progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this.#rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this.#capability.promise.then(() => {\n for (const listener of this.#progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this.#capability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass PDFWorker {\n #capability = Promise.withResolvers();\n #messageHandler = null;\n #port = null;\n #webWorker = null;\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts = new WeakMap();\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n this.fromPort = params => {\n deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n return this.create(params);\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n if (port) {\n if (PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n PDFWorker.#workerPorts.set(port, this);\n this.#initializeFromPort(port);\n } else {\n this.#initialize();\n }\n }\n get promise() {\n return this.#capability.promise;\n }\n #resolve() {\n this.#capability.resolve();\n this.#messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this.#port;\n }\n get messageHandler() {\n return this.#messageHandler;\n }\n #initializeFromPort(port) {\n this.#port = port;\n this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this.#messageHandler.on(\"ready\", () => {});\n this.#resolve();\n }\n #initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this.#setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this.#setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this.#webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this.#messageHandler = messageHandler;\n this.#port = worker;\n this.#webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this.#setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this.#setupFakeWorker();\n }\n #setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this.#capability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this.#port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this.#webWorker?.terminate();\n this.#webWorker = null;\n PDFWorker.#workerPorts.delete(this.#port);\n this.#port = null;\n this.#messageHandler?.destroy();\n this.#messageHandler = null;\n }\n static create(params) {\n const cachedPort = this.#workerPorts.get(params?.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(\n /*webpackIgnore: true*/\n /*@vite-ignore*/\n this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, inspectFont);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.3.93\";\nconst build = \"cbeef3233\";\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.flat-map.js\nvar es_iterator_flat_map = __webpack_require__(531);\n;// ./src/shared/scripting_utils.js\n\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nconst DateFormats = (/* unused pure expression or super */ null && ([\"m/d\", \"m/d/yy\", \"mm/dd/yy\", \"mm/yy\", \"d-mmm\", \"d-mmm-yy\", \"dd-mmm-yy\", \"yy-mm-dd\", \"mmm-yy\", \"mmmm-yy\", \"mmm d, yyyy\", \"mmmm d, yyyy\", \"m/d/yy h:MM tt\", \"m/d/yy HH:MM\"]));\nconst TimeFormats = (/* unused pure expression or super */ null && ([\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"]));\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n contentsObj,\n richText\n }) {\n return !!(contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = 0;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n svg.role = \"none\";\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n noRotate: true\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n mustEnterInEditMode: true\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = 0;\n const format = this.data.dateFormat || this.data.timeFormat;\n if (format) {\n element.title = format;\n }\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = 0;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = 0;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n const {\n container\n } = this;\n container.classList.add(\"popupAnnotation\");\n container.role = \"comment\";\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"time\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n modificationDate.dateTime = this.#dateObj.toISOString();\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n if (overlaidText) {\n const mark = document.createElement(\"mark\");\n mark.classList.add(\"overlaidText\");\n mark.textContent = overlaidText;\n this.container.append(mark);\n }\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n if (overlaidText) {\n const underline = document.createElement(\"u\");\n underline.classList.add(\"overlaidText\");\n underline.textContent = overlaidText;\n this.container.append(underline);\n }\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n const {\n data: {\n overlaidText,\n popupRef\n }\n } = this;\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n if (overlaidText) {\n const strikeout = document.createElement(\"s\");\n strikeout.classList.add(\"overlaidText\");\n strikeout.textContent = overlaidText;\n this.container.append(strikeout);\n }\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id, popupElements) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n if (popupElements) {\n popupElements.at(-1).container.after(element);\n } else {\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id, elementParams.elements);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n async addLinkAnnotations(annotations, linkService) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n await this.#appendElement(rendered, data.id, null);\n }\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n }\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (!super.enableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n return true;\n }\n disableEditMode() {\n if (!super.disableEditMode()) {\n return false;\n }\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n return true;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n get canChangeContent() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\n\n\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\n\n\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n const minMax = [lastX, lastY, lastX, lastY];\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n const x = outline[i + 4],\n y = outline[i + 5];\n if (isNaN(outline[i])) {\n Util.pointBoundingBox(x, y, minMax);\n if (lastPointY < y) {\n lastPointX = x;\n lastPointY = y;\n } else if (lastPointY === y) {\n lastPointX = ltrCallback(lastPointX, x);\n }\n } else {\n const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bbox);\n Util.rectBoundingBox(...bbox, minMax);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = x;\n lastY = y;\n }\n const bbox = this.#bbox;\n bbox[0] = minMax[0] - this.#innerMargin;\n bbox[1] = minMax[1] - this.#innerMargin;\n bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightOutliner {\n #box;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n }\n const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n const shiftedMinX = minMax[0] - innerMargin;\n const shiftedMinY = minMax[1] - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color?.toUpperCase() || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.ariaHasPopup = \"true\";\n if (this.#editor) {\n button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n }\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.ariaHidden = \"true\";\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.ariaOrientation = \"horizontal\";\n dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.ariaMultiSelectable = \"false\";\n div.ariaOrientation = \"vertical\";\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n if (this.#editor) {\n div.id = `${this.#editor.id}_colorpicker_dropdown`;\n }\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.ariaSelected = color === this.#defaultColor;\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n this.#button.ariaExpanded = \"true\";\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#button.ariaExpanded = \"false\";\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.ariaSelected = i.next().value === color.toUpperCase();\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n get toolbarButtons() {\n if (this._uiManager.highlightColors) {\n const colorPicker = this.#colorPicker = new ColorPicker({\n editor: this\n });\n return [[\"colorPicker\", colorPicker]];\n }\n return super.toolbarButtons;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.#opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n editor.rotate(editor.parentRotation);\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\n\n\n\n\n\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n }\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\n\n\n\n\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n Util.pointBoundingBox(line[i], line[i + 1], bbox);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor._initialData = initialData;\n return editor;\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const A = buf[(i << 2) + 3];\n if (A === 0) {\n max = out[i] = 0xff;\n continue;\n }\n const pix = out[i] = buf[i << 2];\n if (pix > max) {\n max = pix;\n }\n if (pix < min) {\n min = pix;\n }\n }\n const ratio = 255 / (max - min);\n for (let i = 0; i < N; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = Math.ceil(prevWidth / 2);\n newHeight = Math.ceil(prevHeight / 2);\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description: \"\"\n }));\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n get toolbarButtons() {\n if (this._uiManager.signatureManager) {\n return [[\"editSignature\", this._uiManager.signatureManager]];\n }\n return super.toolbarButtons;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.description = description;\n this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n description\n }));\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [parentWidth, parentHeight] = this.parentDimensions;\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims(parentWidth * this.width, parentHeight * this.height);\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.SIGNATURE,\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.#description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor({\n mode: AnnotationEditorType.STAMP\n }, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this.addEditToolbar().then(() => {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n });\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get toolbarButtons() {\n return [[\"altText\", this.createAltText()]];\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.createAltText();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n if (!this.annotationElementId) {\n this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n annotationElementId: id,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #textLayerDblClickAC = null;\n #lastPointerDownTimestamp = -1;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(options) {\n this.#uiManager.updateToolbar(options);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n this.#textLayerDblClickAC?.abort();\n this.#textLayerDblClickAC = null;\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n this.#isEnabling = false;\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n this.#isEnabling = false;\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n if (this.#textLayer && !this.#textLayerDblClickAC) {\n this.#textLayerDblClickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", e => {\n const DBL_CLICK_THRESHOLD = 500;\n const {\n clientX,\n clientY,\n timeStamp\n } = e;\n const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n this.#lastPointerDownTimestamp = timeStamp;\n return;\n }\n this.#lastPointerDownTimestamp = -1;\n const {\n classList\n } = this.div;\n classList.toggle(\"getElements\", true);\n const elements = document.elementsFromPoint(clientX, clientY);\n classList.toggle(\"getElements\", false);\n if (!this.div.contains(elements[0])) {\n return;\n }\n let id;\n const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n for (const element of elements) {\n if (regex.test(element.id)) {\n id = element.id;\n break;\n }\n }\n if (!id) {\n return;\n }\n const editor = this.#editors.get(id);\n if (editor?.annotationElementId === null) {\n e.stopPropagation();\n e.preventDefault();\n editor.dblclick();\n }\n }, {\n signal,\n capture: true\n });\n }\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(options, params) {\n this.updateToolbar(options);\n await this.#uiManager.updateMode(options.mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n{\n globalThis._pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\nglobalThis.pdfjsLib = {\n AbortException: AbortException,\n AnnotationEditorLayer: AnnotationEditorLayer,\n AnnotationEditorParamsType: AnnotationEditorParamsType,\n AnnotationEditorType: AnnotationEditorType,\n AnnotationEditorUIManager: AnnotationEditorUIManager,\n AnnotationLayer: AnnotationLayer,\n AnnotationMode: AnnotationMode,\n AnnotationType: AnnotationType,\n build: build,\n ColorPicker: ColorPicker,\n createValidAbsoluteUrl: createValidAbsoluteUrl,\n DOMSVGFactory: DOMSVGFactory,\n DrawLayer: DrawLayer,\n FeatureTest: util_FeatureTest,\n fetchData: fetchData,\n getDocument: getDocument,\n getFilenameFromUrl: getFilenameFromUrl,\n getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n getUuid: getUuid,\n getXfaPageViewport: getXfaPageViewport,\n GlobalWorkerOptions: GlobalWorkerOptions,\n ImageKind: util_ImageKind,\n InvalidPDFException: InvalidPDFException,\n isDataScheme: isDataScheme,\n isPdfFile: isPdfFile,\n isValidExplicitDest: isValidExplicitDest,\n MathClamp: MathClamp,\n noContextMenu: noContextMenu,\n normalizeUnicode: normalizeUnicode,\n OPS: OPS,\n OutputScale: OutputScale,\n PasswordResponses: PasswordResponses,\n PDFDataRangeTransport: PDFDataRangeTransport,\n PDFDateString: PDFDateString,\n PDFWorker: PDFWorker,\n PermissionFlag: PermissionFlag,\n PixelsPerInch: PixelsPerInch,\n RenderingCancelledException: RenderingCancelledException,\n ResponseException: ResponseException,\n setLayerDimensions: setLayerDimensions,\n shadow: shadow,\n SignatureExtractor: SignatureExtractor,\n stopEvent: stopEvent,\n SupportedImageMimeTypes: SupportedImageMimeTypes,\n TextLayer: TextLayer,\n TouchManager: TouchManager,\n updateUrlHash: updateUrlHash,\n Util: Util,\n VerbosityLevel: VerbosityLevel,\n version: version,\n XfaLayer: XfaLayer\n};\n\nexport { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, build, createValidAbsoluteUrl, fetchData, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n\n//# sourceMappingURL=pdf.mjs.map"],"names":["__webpack_modules__","module","__unused_webpack_exports","isCallable","exports","it","call","aCallable","anObject","tryToString","getIteratorMethod","$TypeError","TypeError","argument","usingIterator","iteratorMethod","arguments","length","uncurryThis","fails","hasOwn","DESCRIPTORS","CONFIGURABLE_FUNCTION_NAME","inspectSource","InternalStateModule","enforceInternalState","enforce","getInternalState","get","$String","String","defineProperty","Object","stringSlice","slice","replace","join","CONFIGURABLE_LENGTH","value","TEMPLATE","split","makeBuiltIn","name","options","getter","setter","configurable","arity","constructor","writable","prototype","undefined","error","state","source","Function","toString","this","FunctionPrototype","getDescriptor","getOwnPropertyDescriptor","EXISTS","PROPER","CONFIGURABLE","getBuiltIn","record","fn","ITERATOR_INSTEAD_OF_RECORD","step","result","iterator","next","done","__unused_webpack_module","$","getIteratorDirect","getIteratorFlattenable","createIteratorProxy","iteratorClose","IS_PURE","iteratorHelperThrowsOnInvalidIterator","iteratorHelperWithoutClosingOnEarlyError","FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","flatMapWithoutClosingOnEarlyError","FORCED","IteratorProxy","inner","mapper","counter","target","proto","real","forced","flatMap","test","bind","hasOwnProperty","classof","isPrototypeOf","Prototype","methodName","method","Iterator","ceil","Math","floor","trunc","x","n","USE_SYMBOL_AS_UID","$Object","$Symbol","getMethod","isNullOrUndefined","Iterators","ITERATOR","wellKnownSymbol","alphabet","internalObjectKeys","enumBugKeys","keys","O","exec","iterate","everyWithoutClosingOnEarlyError","every","predicate","stop","IS_RECORD","INTERRUPTED","stopped","set","has","NATIVE_WEAK_MAP","globalThis","isObject","createNonEnumerableProperty","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","store","metadata","facade","STATE","getterFor","TYPE","type","number","iters","kind","i","V8","ENVIRONMENT","structuredClone","buffer","ArrayBuffer","clone","transfer","byteLength","$fromBase64","anUint8Array","Uint8Array","INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS","setFromBase64","string","read","written","apply","newPromiseCapabilityModule","perform","Promise","ACCEPT_ARGUMENTS","stat","callbackfn","args","promiseCapability","f","reject","resolve","promise","union","setMethodGetKeysBeforeCloning","setMethodAcceptSetLike","callWithSafeIterationClosing","MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR","mapWithoutClosingOnEarlyError","map","obj","toIndexedObject","indexOf","push","object","names","key","descriptor","F","getPrototypeOf","SyntaxError","parseInt","min","NOT_HEX","into","stringLength","maxLength","bytes","hexits","activeXDocument","definePropertiesModule","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","document","domain","style","display","appendChild","src","contentWindow","open","create","Properties","isSupersetOf","FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR","filterWithoutClosingOnEarlyError","filter","$default","isArrayIteratorMethod","lengthOfArrayLike","getIterator","Result","ResultPrototype","iterable","unboundFunction","iterFn","index","that","AS_ENTRIES","IS_ITERATOR","condition","callFn","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","input","pref","exoticToPrim","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","toLowerCase","commonAlphabet","base64Alphabet","base64UrlAlphabet","inverse","characters","charAt","i2c","c2i","i2cUrl","c2iUrl","passed","required","navigator","userAgent","uncurryThisAccessor","requireObjectCoercible","aPossiblePrototype","setPrototypeOf","CORRECT_SETTER","Array","__proto__","$this","dummy","Wrapper","NewTarget","NewTargetPrototype","NATIVE_ARRAY_BUFFER","arrayBufferByteLength","DataView","id","postfix","random","aSet","SetHelpers","size","getSetRecord","iterateSet","iterateSimple","remove","other","otherRec","e","includes","isPossiblePrototype","someWithoutClosingOnEarlyError","some","add","keysIter","functionToString","getOwnPropertySymbols","toIntegerOrInfinity","INVALID_SIZE","$RangeError","RangeError","max","SetRecord","intSize","numSize","isDisjointFrom","createElement","setArrayLength","doesNotExceedSafeInteger","properErrorOnNonWritableLength","item","len","argCount","ArrayPrototype","userAgentStartsWith","Bun","version","Deno","process","window","val","valueOf","isArray","SetPrototype","Set","WorkerThreads","channel","$detach","getBuiltInNodeModule","PROPER_STRUCTURED_CLONE_TRANSFER","$ArrayBuffer","$MessageChannel","MessageChannel","detach","transferable","port1","postMessage","V8_VERSION","symbol","Symbol","sham","SILENT_ON_NON_WRITABLE_LENGTH_SET","METHOD_NAME","ExpectedError","IteratorPrototype","CLOSED","check","self","global","defineBuiltIn","validateArgumentsLength","$URLSearchParams","URLSearchParams","URLSearchParamsPrototype","append","$delete","forEach","params","$value","entries","v","k","entry","dindex","found","entriesLength","enumerable","unsafe","withResolvers","definePropertyModule","createPropertyDescriptor","documentAll","all","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","P","Attributes","current","createSetLike","createSetLikeWithInfinitySize","Error","callback","error2","Infinity","anInstance","inheritIfRequired","normalizeStringArgument","DOMExceptionConstants","clearErrorStack","DOM_EXCEPTION","NativeDOMException","$DOMException","DOMExceptionPrototype","argumentsLength","message","stack","ERROR_HAS_STACK","DOM_EXCEPTION_HAS_STACK","BUGGY_DESCRIPTOR","FORCED_CONSTRUCTOR","DOMException","PolyfilledDOMException","PolyfilledDOMExceptionPrototype","constant","constantName","s","c","IndexSizeError","m","DOMStringSizeError","HierarchyRequestError","WrongDocumentError","InvalidCharacterError","NoDataAllowedError","NoModificationAllowedError","NotFoundError","NotSupportedError","InUseAttributeError","InvalidStateError","InvalidModificationError","NamespaceError","InvalidAccessError","ValidationError","TypeMismatchError","SecurityError","NetworkError","AbortError","URLMismatchError","QuotaExceededError","TimeoutError","InvalidNodeTypeError","DataCloneError","symmetricDifference","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","concat","isDetached","Constructor","list","$length","IndexedObject","integer","notDetached","numberToString","toHex","hex","toIndex","detachTransferable","ArrayBufferPrototype","DataViewPrototype","isResizable","maxByteLength","getInt8","setInt8","arrayBuffer","newLength","preserveResizability","newBuffer","newByteLength","fixedLength","a","b","copyLength","USE_NATIVE_URL","URL","parse","url","urlString","base","isSubsetOf","V","func","PromiseCapability","C","$$resolve","$$reject","NATIVE_BIND","uid","toLength","ENTRIES","defineGlobalProperty","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","dontCallGetSet","defineBuiltInAccessor","objectKeys","defineProperties","props","simple","nonConfigurable","nonWritable","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","toPrimitive","bitmap","NATIVE_SYMBOL","propertyIsEnumerable","propertyIsEnumerableModule","searchParams","params2","pathname","toJSON","sort","href","username","host","hash","getAll","$has","values","SHARED","versions","mode","copyright","license","difference","setLike","baseSet","clear","PrototypeOfArrayIteratorPrototype","arrayIterator","BUGGY_SAFARI_ITERATORS","ownKeys","getOwnPropertyDescriptorModule","exceptions","namespace","$transfer","transferToFixedLength","intersection","from","createProperty","CONSTRUCTOR","NativeIterator","IteratorConstructor","defineIteratorPrototypeAccessor","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$SyntaxError","$parseInt","fromCharCode","at","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","end","FAILS_ON_INITIAL_UNDEFINED","reduce","reduceWithoutClosingOnEarlyError","reducer","noInitial","accumulator","parseJSONString","JSON","Number","nativeParse","enumerableOwnProperties","IS_DIGIT","IS_NON_ZERO_DIGIT","IS_NUMBER_START","IS_WHITESPACE","internalize","holder","reviver","node","elementRecordsLen","unmodified","context","nodeIsArray","nodes","internalizeProperty","Node","Context","fork","nextIndex","skip","array","keyword","start","expectKeypair","until","expectElement","parsed","startIndex","endIndex","regex","j","NO_SOURCE_SUPPORT","unsafeInt","PROPER_BASE_PARSE","text","root","$parse","interruptible","getOwnPropertyNames","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","stringHandling","count","Reflect","$propertyIsEnumerable","NASHORN_BUG","anObjectOrUndefined","aString","base64Map","getAlphabetOption","skipAsciiWhitespace","decodeBase64Chunk","chunk","throwOnExtraBits","chunkLength","triplet","chunkBytes","writeBytes","elements","elementsLength","lastChunkHandling","remainingBytes","notANaN","toPositiveInteger","DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR","dropWithoutClosingOnEarlyError","remaining","drop","limit","IS_NODE","getBuiltinModule","arrayFromConstructorAndList","fromBase64","defineBuiltIns","createIterResultObject","iteratorCloseAll","ITERATOR_HELPER","WRAP_FOR_VALID_ITERATOR","NORMAL","THROW","setInternalState","createIteratorProxyPrototype","nextHandler","returnHandlerResult","returnMethod","openIters","WrapForValidIteratorPrototype","IteratorHelperPrototype","RETURN_HANDLER_RESULT","uncurryThisWithBind","match","v8","innerResult","innerError","toAbsoluteIndex","createMethod","IS_INCLUDES","el","fromIndex","toBase64","omitPadding","shift","$fromHex","setFromHex","__webpack_module_cache__","moduleId","cachedModule","__webpack_exports__","isNodeJS","nw","electron","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","AnnotationEditorPrefix","AnnotationEditorType","NONE","FREETEXT","HIGHLIGHT","STAMP","INK","SIGNATURE","AnnotationEditorParamsType","RESIZE","CREATE","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","HIGHLIGHT_COLOR","HIGHLIGHT_DEFAULT_COLOR","HIGHLIGHT_THICKNESS","HIGHLIGHT_FREE","HIGHLIGHT_SHOW_ALL","DRAW_STEP","PermissionFlag","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","util_ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","UNDERLINE","SQUIGGLY","STRIKEOUT","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationBorderStyleType","VerbosityLevel","ERRORS","WARNINGS","INFOS","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","setStrokeTransparent","setFillTransparent","rawFillPath","DrawOPS","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","setVerbosityLevel","level","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","assert","cond","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","decodeURIComponent","escape","absoluteUrl","protocol","_isValidProtocol","updateUrlHash","allowRel","res","shadow","prop","nonSerializable","BaseException","PasswordException","code","super","UnknownErrorException","details","InvalidPDFException","ResponseException","status","missing","FormatError","AbortException","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","subarray","stringToBytes","str","charCodeAt","util_FeatureTest","isLittleEndian","buffer8","Uint32Array","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","isImageDecoderSupported","ImageDecoder","platform","isAndroid","isLinux","isMac","isWindows","isFirefox","isCSSRoundSupported","CSS","supports","hexNumbers","padStart","Util","makeHexColor","r","g","scaleMinMax","minMax","m1","m2","applyTransform","p","pos","p0","p1","applyTransformToBezier","m0","m3","m4","m5","pI","pI1","applyInverseTransform","d","axialAlignedBoundingBox","rect","output","r0","r1","r2","r3","a0","a2","a1","a3","b0","b2","b1","b3","m1r0","m1r2","m2r1","m2r3","inverseTransform","singularValueDecompose2dScale","matrix","first","second","sqrt","normalizeRect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","pointBoundingBox","y","rectBoundingBox","x0","y0","x1","y1","x2","x3","y2","y3","t","mt","tt","ttt","abs","delta","sqrtDelta","bezierBoundingBox","NormalizeRegex","NormalizationMap","normalizeUnicode","Map","replaceAll","_","p2","getUuid","crypto","randomUUID","buf","getRandomValues","AnnotationPrefix","MathClamp","toBase64Util","arr","btoa","sumPrecise","numbers","AbortSignal","any","ac","AbortController","signal","aborted","abort","reason","addEventListener","SVG_NS","PixelsPerInch","static","PDF","async","fetchData","isValidFetchUrl","baseURI","response","fetch","ok","statusText","blob","json","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","send","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","width","height","rawDims","dims","pageWidth","pageHeight","pageX","pageY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","RenderingCancelledException","extraDelay","isDataScheme","ii","trim","substring","isPdfFile","filename","getFilenameFromUrl","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","newURL","getURL","decode","decoded","pdfRegex","reverse","hashFilename","StatTimer","started","times","time","Date","now","timeEnd","outBuf","longest","padEnd","noContextMenu","preventDefault","stopEvent","stopPropagation","PDFDateString","toDateObject","RegExp","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","getRGB","color","colorRGB","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","setLayerDimensions","div","viewport","mustFlip","mustRotate","useRound","w","h","widthStr","heightStr","setAttribute","OutputScale","pixelRatio","sx","sy","scaled","symmetric","limitCanvas","maxPixels","maxDim","capAreaFactor","maxAreaScale","maxWidthScale","maxHeightScale","capPixels","maxScale","devicePixelRatio","winPixels","screen","availWidth","availHeight","SupportedImageMimeTypes","EditorToolbar","editor","freeze","freetext","highlight","ink","stamp","signature","render","editToolbar","classList","_uiManager","_signal","buttons","className","position","toolbarPosition","direction","insetInlineEnd","top","_focusEventsAllowed","element","capture","hide","hideDropdown","show","shown","addDeleteButton","editorType","button","tabIndex","delete","divider","addAltText","altText","addColorPicker","colorPicker","renderButton","addEditSignatureButton","signatureManager","renderEditButton","addButton","tool","updateEditSignatureButton","description","title","destroy","HighlightToolbar","uiManager","boxes","isLTR","lastY","lastX","box","parent","span","highlightSelection","bindEvents","IdManager","ImageManager","_isSVGFittingCanvas","getContext","willReadFrequently","image","Image","then","drawImage","getImageData","rawData","refCounter","isSvg","File","file","Blob","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","onerror","readAsDataURL","createImageBitmap","getFromFile","lastModified","getFromUrl","getFromBlob","blobPromise","getFromId","getFromCanvas","canvas","offscreen","transferToImageBitmap","getSvgUrl","deleteId","transferFromImageBitmap","convertToBlob","isValidId","CommandManager","maxSize","cmd","undo","post","mustExec","NaN","overwriteIfSameType","keepUndo","splice","redo","hasSomethingToUndo","hasSomethingToRedo","cleanType","KeyboardManager","callbacks","allKeys","isMacKey","event","altKey","ctrlKey","metaKey","shiftKey","bubbles","checker","ColorManager","_colors","colors","visibility","colorScheme","body","computedColor","getComputedStyle","getColorValues","convert","rgb","matchMedia","RGB","_colorsMapping","getHexCode","AnnotationEditorUIManager","_editorUndoBar","isEditing","isEmpty","hasSelectedEditor","hasSelectedText","_keyboardManager","arrowChecker","contains","activeElement","tagName","hasSomethingToControl","textInputChecker","_self","HTMLInputElement","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","isEnterHandled","unselectAll","translateSelectedEditors","container","viewer","viewerAlert","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_eventBus","_on","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","onSetPreference","evt","updateParams","annotationStorage","filterFactory","viewParameters","realScale","PDF_TO_CSS_UNITS","isShiftKeyDown","_supportsPinchToZoom","layer","clearTimeout","combinedSignal","useNewAltTextFlow","useNewAltTextWhenAddingImage","hcmFilter","addHCMFilter","foreground","background","pair","toUpperCase","highlightColorNames","setCurrentDrawingSession","disableUserSelect","setMainHighlightColorPicker","editAltText","firstTime","getSignature","switchToMode","on","once","dispatch","setPreference","pageNumber","focusMainContainer","focus","findParent","layerX","layerY","getBoundingClientRect","toggle","addShouldRescale","removeShouldRescale","commitOrRemove","pagesRotation","anchorNode","nodeType","TEXT_NODE","parentElement","textLayer","currentLayer","hasTextLayer","methodOfCreation","selection","getSelection","isCollapsed","anchorOffset","focusNode","focusOffset","closest","getSelectionBoxes","empty","isNoneMode","createAndAddNewEditor","showAllEditors","addToAnnotationStorage","setValue","a11yAlert","messageId","stringify","removeAttribute","activeLayer","toggleDrawing","pointerup","blur","hasSelection","lastEditor","lastActiveElement","keydown","keyup","copy","cut","paste","dragOver","addEditListeners","removeEditListeners","dataTransfer","items","isHandlingMimeForPasting","dropEffect","editors","serialized","serialize","clipboardData","setData","getData","ex","newEditors","deserializedEditor","deserialize","addCommands","isEditorHandlingKeyboard","assign","setEditingState","registerEditorTypes","types","defaultPropertiesToUpdate","getId","getLayer","pageIndex","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","editId","isFromKeyboard","mustEnterInEditMode","loadSignatures","annotationElementId","setSelected","enterInEditMode","unselect","canCreateNewEmptyEditor","addNewEditor","updateToolbar","updateColor","action","updateDefaultParams","visible","updateButton","enableWaiting","mustWait","disableClick","enableClick","promises","getEditors","getEditor","addEditor","removeEditor","setTimeout","addDeletedAnnotationElement","addChangedExistingAnnotation","deleted","isDeletedAnnotationElement","removeDeletedAnnotationElement","removeChangedExistingAnnotation","addOrRebuild","setActiveEditor","propertiesToUpdate","ed","updateUI","updateUIForDefaultProperties","toggleSelected","select","isSelected","firstSelectedEditor","cleanUndoStack","drawingEditor","endDrawingSession","commit","noCommit","totalX","totalY","translateInPage","translationDone","setUpDragSession","savedX","savedY","savedPageIndex","newX","newY","newPageIndex","endDragSession","mustBeAddedInUndoStack","move","_setParentAndPosition","dragSelectedEditors","tx","ty","drag","rebuild","changeParent","getActive","shouldGetKeyboardEvents","isActive","getMode","imageManager","rangeCount","getRangeAt","commonAncestorContainer","parentWidth","parentHeight","rotator","getAttribute","range","collapsed","getClientRects","renderAnnotationElement","annotation","editorId","getRawValue","hasBeenModified","setMissingCanvas","annotationId","setCanvas","addMissingCanvas","AltText","added","review","initialize","l10n","_l10n","label","onClick","_reportTelemetry","guessedText","finish","focusVisible","hasData","setGuessedText","generatedAltText","toggleAltTextBadge","badge","isForCopying","decorative","textWithDisclaimer","cancel","enabled","disabled","tooltip","DELAY_TO_SHOW_TOOLTIP","textContent","parentNode","getElementForAltText","TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","passive","MIN_TOUCH_DISTANCE_TO_PINCH","touches","pointerDownAC","opts","cancelPointerDown","pointerType","opt","onTouchEnd","touch0","touch1","identifier","touch0X","screenX","touch0Y","screenY","touch1X","touch1Y","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","hypot","pDistance","origin","AnnotationEditor","_isCopy","_editToolbar","_initialOptions","_initialData","_isVisible","_zIndex","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","parameters","_willKeepAspectRatio","isCentered","_structTreeParentId","pageRotation","pageDimensions","pageTranslation","parentDimensions","isAttachedToDOM","_type","_editorType","isDrawer","_defaultLineColor","_colorManager","deleteAnnotationElement","fakeEditor","FakeEditor","getNextId","_l10nResizer","topMiddle","topRight","middleRight","bottomMiddle","bottomLeft","middleLeft","_borderLineWidth","documentElement","parseFloat","getPropertyValue","_value","mime","_isDraggable","center","parentRotation","fixAndSetPosition","setInBackground","zIndex","setInForeground","setParent","focusin","focusout","relatedTarget","isMultipleSelection","isInEditMode","setAt","screenToPageTranslation","_moveAfterPaste","baseX","baseY","_onTranslated","_onTranslating","translate","scrollIntoView","block","findNewParent","bx","by","getBaseTranslation","left","toFixed","_hasBeenMoved","_hasBeenResized","_mustFixPosition","moveInDOM","angle","pageTranslationToScreen","parentScale","setDims","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","classes","prepend","savedDraggable","togglePointerEvents","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","_onResized","newWidth","newHeight","_round","round","minWidth","MIN_SIZE","minHeight","rotationMatrix","transf","invRotationMatrix","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","deltaX","deltaY","ratioX","ratioY","fromKeyboard","lastScreenX","lastScreenY","oldDiag","_onResizing","altTextFinish","toolbarButtons","addEditToolbar","removeEditToolbar","addContainer","editToolbarDiv","before","getClientDimensions","createAltText","altTextData","guessedAltText","setGuessedAltText","serializeAltText","hasAltText","hasAltTextData","defaultL10nId","maxWidth","maxHeight","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","pointerdown","hasDraggingStarted","cancelDrag","_onStopDragging","clientX","clientY","pointerId","_onStartDragging","isPrimary","moveEditorInDOM","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","needsToBeRebuilt","isOnScreen","bottom","right","innerHeight","innerWidth","rotate","_angle","serializeDeleted","popupRef","accessibilityData","isCopy","timeout","makeResizable","children","boundResizerKeydown","boundResizerBlur","firstPosition","nextFirstPosition","firstChild","lastChild","child","stopImmediatePropagation","preventScroll","disableEditing","enableEditing","canChangeContent","dblclick","contentDiv","setAspectRatio","aspectRatio","telemetryInitialData","telemetryFinalData","_telemetryTimeout","querySelector","nodeName","resetAnnotationElement","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","h1","h2","update","isView","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hexdigest","SerializableEmpty","AnnotationStorage","onSetModified","onResetModified","onAnnotationEditor","getValue","defaultValue","resetModified","modified","print","PrintAnnotationStorage","serializable","hasBitmap","editorStats","stats","typeToEditor","counters","computeTelemetryFinalData","resetModifiedIds","modifiedIds","ids","FontLoader","ownerDocument","styleElement","_document","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadSystemFont","systemFontInfo","disableFontFace","_inspectFont","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","font","attached","missingFile","createNativeFontFace","loaded","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","complete","otherRequest","_loadTestFont","atob","int32","offset","spliceString","insert","called","XXXX_VALUE","checksum","fontFamily","isFontReady","fillText","FontFaceObject","translatedData","inspectFont","compiledGlyphs","cssFontInfo","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","objs","character","objId","cmds","path","Path2D","fontExtraProperties","getFactoryUrlProp","isRefProxy","num","gen","isValidExplicitDest","validRef","validName","dest","page","zoom","argsLen","allowNull","arg","LoopbackPort","listener","rmAbort","onAbort","removeEventListener","terminate","CallbackKind","StreamKind","onFn","wrapReason","MessageHandler","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","stream","capability","try","actionName","handler","ah","transfers","sendWithPromise","sendWithStream","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","enqueue","isCancelled","lastDesiredSize","sinkCapability","ready","onPull","onCancel","success","streamController","dataReason","allSettled","BaseCanvasFactory","enableHWA","_createCanvas","reset","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","_fetch","cMapData","catch","DOMCMapReaderFactory","BaseFilterFactory","addFilter","maps","fgColor","bgColor","addAlphaFilter","addLuminosityFilter","addHighlightHCMFilter","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","contain","svg","createElementNS","mapR","table","mapG","mapB","bufferR","bufferG","bufferB","tableR","tableG","tableB","fgRGB","bgRGB","getSteps","tableA","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","feColorMatrix","feComponentTransfer","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","require","createRequire","DOMMatrix","ImageData","language","node_utils_fetchData","fs","readFile","NodeFilterFactory","NodeCanvasFactory","createCanvas","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","isModifyingCurrentTransform","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","pathType","pattern","ownerBBox","getClippedPathBoundingBox","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","baseTransform","fillStyle","createPattern","domMatrix","setTransform","drawTriangle","p3","c1","c2","c3","coords","rowSize","tmp","scaleX","scaleY","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","createImageData","putImageData","Float32Array","matrixScaleX","matrixScaleY","temporaryPatternCanvas","DummyShadingPattern","PaintType","TilingPattern","canvasGraphicsFactory","operatorList","xstep","ystep","paintType","tilingType","createPatternCanvas","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","clipBbox","executeOperatorList","endDrawing","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","strokeStyle","fillColor","strokeColor","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","FULL_CHUNK_HEIGHT","SCALE_MATRIX","XY","MIN_MAX_INIT","CachedCanvases","canvasFactory","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","patternStroke","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","clipBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","isEmptyClip","putBinaryImageData","imgData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","destCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","getImageSmoothingEnabled","interpolate","actualScale","fround","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","CanvasGraphics","canvasCtx","commonObjs","optionalContentConfig","markedContentStack","annotationCanvasMap","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","beginDrawing","transparency","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","steps","fnId","nextBreakPoint","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","savedFilter","_scaleImage","img","displayWidth","displayHeight","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","_createMaskCanvas","isPatternFill","currentTransform","cacheKey","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","dashArray","dashPhase","intent","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","compose","dirtyBox","smask","composeSMask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","subtype","backdrop","transferMap","maskCtx","maskOffsetX","maskOffsetY","maskX","maskY","old","pop","op","path2d","consumePath","newPath","addPath","multiplySelf","rescaleAndStroke","needRestore","paths","pendingTextPaths","invTransf","preMultiplySelf","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternFillTransform","patternStrokeTransform","fillStrokeMode","isAddToPathSet","invPatternTransform","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","_getPattern","getShadingPattern","inv","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","annotationCanvas","savedCtx","skewX","skewY","positions","trans","images","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","GlobalWorkerOptions","workerPort","Worker","workerSrc","Metadata","parsedData","getRaw","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","view","viewState","printState","_setVisible","internal","userSet","OptionalContentConfig","creator","order","groups","baseState","off","getHash","operator","expression","policy","setVisibility","preserveRB","rbGroup","otherId","setOCGState","hasInitialVisibility","getOrder","getGroup","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","begin","_onReceiveData","addProgressListener","total","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","rangeReader","_begin","_progressiveDataLength","_loaded","onProgress","_removeRangeReader","reader","getFullReader","queuedChunks","PDFDataTransportStreamReader","getRangeReader","PDFDataTransportStreamRangeReader","requestDataRange","cancelAllRequests","_stream","_done","_filename","_requests","_headersReady","headersReady","isRangeSupported","isStreamingSupported","contentLength","requestCapability","_end","_queuedChunk","createHeaders","isHttp","httpHeaders","headers","Headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","allowRangeRequests","suggestedLength","extractFilenameFromHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","parts","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","quotindex","extvalue","encodingend","charset","getFilenameFromContentDispositionHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","credentials","redirect","getArrayBuffer","PDFFetchStream","_responseOrigin","_rangeRequestReaders","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_headersCapability","_disableRange","_rangeChunkSize","_abortController","getReader","_readCapability","responseOrigin","NetworkManager","currXhrId","pendingRequests","xhr","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","network_getArrayBuffer","rangeHeader","getResponseHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_url","_fullRequestId","_onHeadersReceived","_onDone","_onError","_cachedChunks","_storedError","fullRequestXhrId","fullRequestXhr","responseURL","rawResponseHeaders","getAllResponseHeaders","trimStart","lengthComputable","_requestId","_close","urlRegex","PDFNodeStream","sourceUrl","pathToFileURL","parseUrlOrPath","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","_readableStream","lstat","_setReadableStream","createReadStream","_error","readableStream","INITIAL_DATA","PDFObjects","TextLayer","FontInspector","textContentSource","finally","fontFamilyMap","pump","lang","styles","onBefore","abortEx","textDivs","textContentItemsStr","geom","textDiv","textDivProperties","hasText","hasEOL","atan2","fontName","PI","fontSubstitution","fontHeight","fontAscent","sin","cos","scaleFactorStr","divStyle","dir","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","br","cleanup","alpha","cached","opacity","lineHeight","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","XfaText","xfa","walk","shouldBuildText","getDocument","task","PDFDocumentLoadingTask","location","getUrlProp","Buffer","isNaN","getDataProp","password","rangeTransport","PDFDataRangeTransport","worker","PDFWorker","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","stopAtErrors","maxImageSize","chrome","canvasMaxAreaInBytes","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","cMapReaderFactory","standardFontDataFactory","wasmFactory","port","_worker","docParams","apiVersion","evaluatorOptions","transportParams","loadingParams","destroyed","workerIdPromise","messageHandler","networkStream","NetworkStream","workerId","transport","WorkerTransport","_transport","_capability","onPassword","_pendingDestroy","onDataRange","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getRenderingIntent","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","keepLoadedFonts","startCleanup","loadingTask","cachedPageNumber","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","_intentStates","getViewport","getAnnotations","getPageJSActions","getXfa","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","streamReaderCancelTimeout","intentPrint","displayReadyCapability","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","internalRenderTask","_abortOperatorList","Stats","InternalRenderTask","useRequestAnimationFrame","renderTask","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","highWaterMark","getTextContent","getStructTree","_destroy","waitOn","force","completed","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","curCacheKey","curIntentState","_isSameOrigin","otherUrl","_createCDNWrapper","wrapper","createObjectURL","fromPort","terminateEarly","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","import","loader","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","isOpList","modifiedIdsHash","terminated","sink","readyReason","_numPages","htmlForXfa","updatePassword","err","exportedData","exportedError","fontAdded","imageRef","pageProxy","dataLen","imageData","refStr","results","RenderTask","onContinue","form","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","StepperManager","init","getNextBreakPoint","gfx","cancelAnimationFrame","updateOperatorList","requestAnimationFrame","build","makeColorComp","scaleAndClamp","ColorConverters","CMYK_G","G_CMYK","G_RGB","G_rgb","G_HTML","G","RGB_G","RGB_rgb","RGB_HTML","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","RGB_CMYK","BaseSVGFactory","skipDimensions","_createSVG","DOMSVGFactory","XfaLayer","setupStorage","storage","storedData","xfaOn","xfaOff","checked","option","selected","selectedIndex","setAttributes","linkService","isHTMLAnchorElement","HTMLAnchorElement","addLinkAttributes","newWindow","dataId","xfaHtml","rootHtml","isNotForRichText","rootDiv","createTextNode","childHtml","xmlns","querySelectorAll","hidden","GetElementsByNameSet","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","_createQuadrilaterals","_hasPopupData","contentsObj","richText","_isEditable","isEditable","hasPopupData","updateEdited","popup","resetEdited","currentRect","setRotation","alternativeText","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","detail","colorType","colorArray","noView","noPrint","userName","readonly","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","role","defs","clipPath","rectWidth","rectHeight","backgroundImage","_createPopup","titleObj","modificationDate","parentRect","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","maybeShow","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","_editOnDoubleClick","annotationEditorType","isTooltipOnly","link","isBound","_bindNamedAction","attachment","attachmentDest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","dispatchEvent","Event","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","elementData","baseName","eventName","valueGetter","modifier","focused","_setEventListeners","Blur","Focus","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","format","dateFormat","timeFormat","defaultFieldValue","blurListener","scrollLeft","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","isExport","selectedValues","getItems","multipleSelection","findIndex","selectChild","indices","editable","changeEx","keyDown","PopupElement","elementIds","ariaHasPopup","trigger","baseColor","outlineColor","header","dateObj","dateTime","toISOString","contents","_formatContents","popupLines","popupContent","lineAttributes","line","lines","useParentRect","normalizedRect","popupLeft","popupTop","textPosition","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","vertices","points","polyline","inkLists","thickness","overlaidText","mark","underline","strikeout","AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_annotationEditorUIManager","hasEditableAnnotations","popupElements","contentElement","ariaAttributes","getAriaAttributes","after","moveElementInDOM","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","rendered","addLinkAnnotations","_defaultBorderStyle","replaceWith","editableAnnotation","_hasNoCanvas","getEditableAnnotations","getEditableAnnotation","rawWidth","EOL_PATTERN","FreeTextEditor","_translateEmpty","_defaultColor","_defaultFontSize","_internalPadding","setFontsize","editorDiv","savedFontsize","col","savedColor","overlayDiv","contentEditable","editorDivKeydown","editorDivFocus","editorDivBlur","editorDivInput","editorDivPaste","innerText","prevChild","childNodes","savedDisplay","savedVisibility","savedText","newText","trimEnd","setText","posX","posY","nodeValue","deleteFromDocument","insertNode","collapseToStart","startContainer","startOffset","bufferBefore","bufferAfter","newRange","Range","beforeLength","setStart","setEnd","removeAllRanges","addRange","replaceChildren","padding","structTreeParentId","Outline","toSVGPath","_rotation","_rescale","_rescaleAndSwap","_translate","svgRound","_normalizePoint","_normalizePagePoint","createBezierPoints","FreeDrawOutliner","scaleFactor","innerMargin","lastTop","lastBottom","diffX","diffY","diffD","K","nY","thX","thY","lastTopX","lastTopY","lastBottomX","lastBottomY","newFreeDrawOutline","outline","FreeDrawOutline","getOutlines","last","N","lastPoint","lastPointX","lastPointY","ltrCallback","newOutliner","getNewOutline","outliner","HighlightOutliner","EPSILON","shiftedMinX","shiftedMinY","lastEdge","edge","outlineVerticalEdges","edges","allEdges","edge1","edge2","outlines","HighlightOutline","middle","y4","polygon","prevX","prevY","classNamesForOutlining","FreeHighlightOutliner","FreeHighlightOutline","ColorPicker","_hideDropdownFromKeyboard","_colorSelectFromKeyboard","_moveToNext","_moveToPrevious","_moveToBeginning","_moveToEnd","blue","green","pink","red","yellow","ariaControls","swatch","ariaHidden","renderMainDropdown","dropdown","ariaOrientation","ariaLabelledBy","ariaMultiSelectable","ariaSelected","nextSibling","ariaExpanded","HighlightEditor","_moveCaret","_defaultThickness","_defaultOpacity","highlightId","numberOfColors","outlinerForOutline","highlightOutlines","clipPathId","drawLayer","finalizeDraw","drawOutline","rootClass","highlightOutline","free","updateProperties","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","addUndoableEditor","mustBeSelected","draw","highlightDiv","pointerover","hovered","pointerleave","setPosition","startHighlighting","_freeHighlight","_freeHighlightId","_freeHighlightClipId","DrawingOptions","updateProperty","updateSVGProperty","toSVGProperties","updateAll","DrawingEditor","_drawId","mustBeCommitted","_addOutlines","drawOutlines","drawId","drawingOptions","_drawingOptions","defaultProperties","_mergeSVGProperties","defaultSVGProperties","p1Keys","getDefaultDrawingOptions","_options","typesMap","supportMultipleDrawings","propertyName","_defaultDrawingOptions","_currentParent","_currentDrawId","_updateProperty","savedValue","getPathResizingSVGProperties","getPathResizedSVGProperties","_x","_y","getPathTranslatedSVGProperties","moving","updateParent","pW","pH","updateRotation","updateParentDimensions","onScaleChangingWhenDrawing","drawDiv","createDrawerInstance","_parentWidth","_parentHeight","startDrawing","_isLTR","_endDraw","isCancellable","removeLastElement","_drawMove","timeStamp","startNew","_cleanup","lastElement","getLastElement","setLastElement","isAborted","_INNER_MARGIN","createDrawingOptions","_data","deserializeDraw","_pageX","_pageY","_pageWidth","_pageHeight","_innerWidth","serializeDraw","InkDrawOutliner","Float64Array","InkDrawOutline","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","serializedLines","serializedPoints","rescaleFn","newLines","margin","marginX","marginY","oldMarginX","oldMarginY","newMarginX","newMarginY","diffMarginX","diffMarginY","rotationTransform","PRECISION","s1x","s1y","s2x","s2y","newParentWidth","newParentHeight","InkDrawingOptions","viewerParameters","_viewParameters","InkEditor","ContourDrawOutline","SignatureExtractor","sigmaSFactor","sigmaR","kernelSize","i0","j0","Int32Array","kk","threshold","lnbd","nbd","contours","ij","pix","i2","j2","isHole","contour","contour0","shiftI","shiftJ","i1","j1","i3","j3","i4","j4","ij3","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","atan","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","kernel","sigmaS2","halfSize","exp","rangeValues","sigmaR2","out","histogram","sum","norm","l","neighbour","Uint8ClampedArray","M","L","spos","originalBitmap","prevWidth","prevHeight","log2","isteps","grayImage","extractContoursFromText","fontStyle","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","SCALE","uint8Buf","contourList","processDrawnLines","curves","mustSmooth","areContours","linesAndPoints","xScale","yScale","newCurves","reducedPoints","newPoints","compressSignature","bufferType","minDiff","maxDiff","outlinesLength","dx","Int8Array","Int16Array","headerLength","BYTES_PER_ELEMENT","CompressionStream","writer","getWriter","BufferCtor","diffs","Response","readable","decompressSignature","signatureData","DecompressionStream","numberOfDrawings","diffsOffset","POINTS_PROPERTIES_NUMBER","SignatureOptions","DrawnSignatureOptions","SignatureEditor","_defaultDrawnSignatureOptions","hasDescription","hasDescriptionStats","hasNoAltText","uuid","heightInPage","addSignature","setUuid","toolbar","getSignaturePreview","hasBeenSaved","getFromImage","getFromText","fontInfo","getDrawnSignature","isSignature","alt","StampEditor","bitmapUrl","bitmapFile","pasteEditor","getAsFile","hasAltTextStats","fromId","alt_text_modal","alt_text_type","mlGuessAltText","updateAltTextData","isEnabledFor","copyCanvas","guess","channels","accept","files","click","bitmapId","MAX_RATIO","maxDataDimension","maxPreviewDimension","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","toUrl","toDataURL","missingCanvas","structParent","_structTree","changes","isSame","isSameAltText","stamps","area","prevData","isSamePageIndex","AnnotationEditorLayer","annotationLayer","editorTypes","_initialized","isInvisible","disableTextSelection","toggleAnnotationLayerPointerEvents","enableTextSelection","annotationElementIds","editables","elementsFromPoint","changedAnnotations","resetAnnotations","attach","removePointerInTextLayer","currentMode","startDrawingSession","pause","oldRotation","DrawLayer","_svgFactory","pathId","clipPathUse","isPathUpdatable","hasClip","use","mustRemoveSelfIntersections","maskId","use1","use2","cloneNode","elementOrId","pathElement","_pdfjsTestingUtils","pdfjsLib","FeatureTest","ImageKind"],"sourceRoot":""}